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> |