docs/Writerside/topics/buffer.h.md

changeset 1256
b9a940779877
parent 1190
a7b913d5d589
child 1259
7bc999fe285d
equal deleted inserted replaced
1255:a9d730c8b94a 1256:b9a940779877
13 13
14 Since UCX 3.0, the buffer also supports automatic flushing of contents to another stream (or buffer) as an alternative 14 Since UCX 3.0, the buffer also supports automatic flushing of contents to another stream (or buffer) as an alternative
15 to automatically resizing the buffer space. 15 to automatically resizing the buffer space.
16 Please refer to the API doc for the fields prefixed with `flush_` to learn more. 16 Please refer to the API doc for the fields prefixed with `flush_` to learn more.
17 17
18 <!-- 18 ## Example
19 ## Undocumented Symbols (TODO) 19
20 ### cxBufferAppend 20 <warning>
21 ### cxBufferClear 21 TODO: add example
22 ### cxBufferCreate 22 </warning>
23 ### cxBufferDestroy 23
24 ### cxBufferEnableFlushing 24 ## Create
25 ### cxBufferEof 25
26 ### cxBufferFlush 26 ```C
27 ### cxBufferFree 27 #include <cx/buffer.h>
28 ### cxBufferGet 28
29 ### cxBufferInit 29 int cxBufferInit(CxBuffer *buffer, void *space, size_t capacity,
30 ### cxBufferMinimumCapacity 30 const CxAllocator *allocator, int flags);
31 ### cxBufferPut 31
32 ### cxBufferPutString 32 CxBuffer *cxBufferCreate(void *space,size_t capacity,
33 ### cxBufferRead 33 const CxAllocator *allocator, int flags);
34 ### cxBufferReset 34
35 ### cxBufferSeek 35 // available flags:
36 ### cxBufferShift 36 #define CX_BUFFER_DEFAULT
37 ### cxBufferShiftLeft 37 #define CX_BUFFER_FREE_CONTENTS
38 ### cxBufferShiftRight 38 #define CX_BUFFER_AUTO_EXTEND
39 ### cxBufferTerminate 39 #define CX_BUFFER_COPY_ON_WRITE
40 ### cxBufferWrite 40 #define CX_BUFFER_COPY_ON_EXTEND
41 --> 41 ```
42
43 <warning>
44 TODO: document
45 </warning>
46
47 ## Destroy
48
49 ```C
50 #include <cx/buffer.h>
51
52 void cxBufferDestroy(CxBuffer *buffer);
53
54 void cxBufferFree(CxBuffer *buffer);
55 ```
56
57 <warning>
58 TODO: document
59 </warning>
60
61 ## Write
62
63 ```C
64 #include <cx/buffer.h>
65
66 size_t cxBufferWrite(const void *ptr, size_t size, size_t nitems,
67 CxBuffer *buffer);
68
69 size_t cxBufferAppend(const void *ptr, size_t size, size_t nitems,
70 CxBuffer *buffer);
71
72 int cxBufferPut(CxBuffer *buffer, int c);
73
74 size_t cxBufferPutString(CxBuffer *buffer, const char *str);
75
76 int cxBufferTerminate(CxBuffer *buffer);
77
78 int cxBufferMinimumCapacity(CxBuffer *buffer, size_t capacity);
79 ```
80
81 <warning>
82 TODO: document
83 </warning>
84
85 ## Read
86
87 ```C
88 #include <cx/buffer.h>
89
90 size_t cxBufferRead(void *ptr, size_t size, size_t nitems,
91 CxBuffer *buffer);
92
93 int cxBufferGet(CxBuffer *buffer);
94 ```
95
96 <warning>
97 TODO: document
98 </warning>
99
100 ## Reset and Clear
101
102 ```C
103 #include <cx/buffer.h>
104
105 void cxBufferReset(CxBuffer *buffer);
106
107 void cxBufferClear(CxBuffer *buffer);
108 ```
109
110 <warning>
111 TODO: document
112 </warning>
113
114 ## Random Access
115
116 ```C
117 #include <cx/buffer.h>
118
119 int cxBufferSeek(CxBuffer *buffer, off_t offset, int whence);
120
121 bool cxBufferEof(const CxBuffer *buffer);
122 ```
123
124 <warning>
125 TODO: document
126 </warning>
127
128 ## Shift Contents
129
130 ```C
131 #include <cx/buffer.h>
132
133 int cxBufferShift(CxBuffer *buffer, off_t shift);
134
135 int cxBufferShiftRight(CxBuffer *buffer, size_t shift);
136
137 int cxBufferShiftLeft(CxBuffer *buffer, size_t shift);
138 ```
139
140 <warning>
141 TODO: document
142 </warning>
143
144 ## Flushing
145
146 ```C
147 #include <cx/buffer.h>
148
149 typedef struct cx_buffer_flush_config_s {
150 size_t threshold;
151 size_t blksize;
152 size_t blkmax;
153 void *target;
154 cx_write_func wfunc;
155 } CxBufferFlushConfig;
156
157 int cxBufferEnableFlushing(CxBuffer *buffer,
158 CxBufferFlushConfig config);
159
160 size_t cxBufferFlush(CxBuffer *buffer);
161 ```
162
163 <warning>
164 TODO: document
165 </warning>
42 166
43 <seealso> 167 <seealso>
44 <category ref="apidoc"> 168 <category ref="apidoc">
45 <a href="https://ucx.sourceforge.io/api/buffer_8h.html">buffer.h</a> 169 <a href="https://ucx.sourceforge.io/api/buffer_8h.html">buffer.h</a>
46 </category> 170 </category>

mercurial