00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00044 #ifndef CSTRING_INCL_CSTRING_H_CSTRING
00045 #define CSTRING_INCL_CSTRING_H_CSTRING
00046
00047
00048
00049
00050
00051 #ifndef CSTRING_DOCUMENTATION_SKIP_SECTION
00052 # define CSTRING_VER_CSTRING_H_CSTRING_MAJOR 3
00053 # define CSTRING_VER_CSTRING_H_CSTRING_MINOR 4
00054 # define CSTRING_VER_CSTRING_H_CSTRING_REVISION 2
00055 # define CSTRING_VER_CSTRING_H_CSTRING_EDIT 51
00056 #endif
00057
00074 #define CSTRING_VER_MAJOR 3
00075 #define CSTRING_VER_MINOR 4
00076 #define CSTRING_VER_REVISION 2
00077
00078 #ifndef CSTRING_DOCUMENTATION_SKIP_SECTION
00079 # define CSTRING_VER_1_0_1 0x01000100
00080 # define CSTRING_VER_1_0_2 0x01000200
00081 # define CSTRING_VER_2_0_1 0x02000100
00082 # define CSTRING_VER_2_1_1 0x02010100
00083 # define CSTRING_VER_2_2_1 0x02020100
00084 # define CSTRING_VER_3_0_1 0x03000100
00085 # define CSTRING_VER_3_1_1 0x03010100
00086 # define CSTRING_VER_3_1_2 0x03010200
00087 # define CSTRING_VER_3_1_3 0x03010300
00088 # define CSTRING_VER_3_2_1 0x03020100
00089 # define CSTRING_VER_3_3_1 0x03030100
00090 # define CSTRING_VER_3_3_2 0x03030200
00091 # define CSTRING_VER_3_4_1 0x03040100
00092 # define CSTRING_VER_3_4_2 0x03040200
00093
00094 # define CSTRING_VER CSTRING_VER_3_4_2
00095 #else
00096 # define CSTRING_VER 0x03040100
00097 #endif
00098
00099
00100
00101
00102
00103 #include <stddef.h>
00104
00105
00106
00107
00108
00116
00117
00118
00119
00120 #ifdef __cplusplus
00121 # define CSTRING_EXTERN_C extern "C"
00122 #else
00123 # define CSTRING_EXTERN_C extern
00124 #endif
00125
00126
00127
00128
00129
00133 enum CSTRING_RC
00134 {
00135 CSTRING_RC_SUCCESS = 0
00136 , CSTRING_RC_OUTOFMEMORY
00137 , CSTRING_RC_FIXED
00138 , CSTRING_RC_BORROWED
00139 , CSTRING_RC_READONLY
00140 , CSTRING_RC_INVALIDARENA
00141 , CSTRING_RC_CUSTOMARENANOTSUPPORTED
00142 , CSTRING_RC_EXCEEDFIXEDCAPACITY
00143 , CSTRING_RC_EXCEEDBORROWEDCAPACITY
00144 , CSTRING_RC_CANNOTYIELDFROMSO
00145 };
00146 #ifndef OPENRJ_DOCUMENTATION_SKIP_SECTION
00147 typedef enum CSTRING_RC CSTRING_RC;
00148 #endif
00149
00150
00151
00152
00153
00157 typedef size_t cstring_flags_t;
00158
00166 struct cstring_t
00167 {
00168 size_t len;
00169 char *ptr;
00170 size_t capacity;
00171 cstring_flags_t flags;
00172 };
00173 #ifndef OPENRJ_DOCUMENTATION_SKIP_SECTION
00174 typedef struct cstring_t cstring_t;
00175 #endif
00176
00181 #define cstring_t_DEFAULT { 0, NULL, 0, 0 }
00182
00183
00184
00185
00186
00195 #define CSTRING_F_TYPE_MASK (0x003f)
00196 #define CSTRING_F_MEMORY_IS_INTERNAL_HEAP (0x0000)
00197 #define CSTRING_F_MEMORY_IS_BORROWED (0x0001)
00198 #define CSTRING_F_MEMORY_IS_FIXED (0x0002)
00199 #define CSTRING_F_MEMORY_IS_READONLY (0x0004)
00200 #define CSTRING_F_MEMORY_IS_CONST CSTRING_F_MEMORY_IS_READONLY
00202 #define CSTRING_F_MEMORY_IS_OFFSET (0x0040)
00204 #define CSTRING_F_ARENA_MASK (0xff00)
00205 #define CSTRING_F_USE_REALLOC (0x0000)
00206 #if defined(WIN32)
00207 # define CSTRING_F_USE_WIN32_GLOBAL_MEMORY (0x0100)
00208 # define CSTRING_F_USE_WIN32_PROCESSHEAP_MEMORY (0x0200)
00209 # define CSTRING_F_USE_WIN32_COM_TASK_MEMORY (0x0400)
00210 #endif
00211 #if defined(CSTRING_USE_SYNESIS_APIS)
00212 # define CSTRING_F_USE_SYNESIS_HATOR (0x1000)
00213 #endif
00214 #define CSTRING_F_USE_CUSTOMARENAFUNCTIONS (0x2000)
00216 #define CSTRING_F_CUSTOMARENA_CC_CDECL (0x0000)
00217 #define CSTRING_F_CUSTOMARENA_CC_STDCALL (0x0040)
00221
00222
00223
00224
00233 CSTRING_EXTERN_C char const *cstring_error( CSTRING_RC rc);
00234
00235
00243 CSTRING_EXTERN_C CSTRING_RC cstring_init( struct cstring_t *pcs);
00244
00256 CSTRING_EXTERN_C CSTRING_RC cstring_create( struct cstring_t *pcs
00257 , char const *s);
00258
00272 CSTRING_EXTERN_C CSTRING_RC cstring_createLen( struct cstring_t *pcs
00273 , char const *s
00274 , size_t cch);
00275
00276
00297 CSTRING_EXTERN_C CSTRING_RC cstring_createEx( struct cstring_t *pcs
00298 , char const *s
00299 , cstring_flags_t flags
00300 , void *arena
00301 , size_t capacity);
00302
00325 CSTRING_EXTERN_C CSTRING_RC cstring_createLenEx(struct cstring_t *pcs
00326 , char const *s
00327 , size_t cch
00328 , cstring_flags_t flags
00329 , void *arena
00330 , size_t capacity);
00331
00342 CSTRING_EXTERN_C CSTRING_RC cstring_destroy( struct cstring_t *pcs);
00343
00344
00363 CSTRING_EXTERN_C CSTRING_RC cstring_yield2( struct cstring_t *pcs
00364 , char **pPayload
00365 , void **pRaw);
00366
00367 #ifdef CSTRING_OBSOLETE
00368 CSTRING_EXTERN_C CSTRING_RC cstring_yield( struct cstring_t *pcs
00369 , char **ppBuff);
00370 #endif
00371
00388 CSTRING_EXTERN_C CSTRING_RC cstring_setCapacity(struct cstring_t *pcs
00389 , size_t capacity);
00390
00391
00408 CSTRING_EXTERN_C CSTRING_RC cstring_assign( struct cstring_t *pcs
00409 , char const *s);
00410
00429 CSTRING_EXTERN_C CSTRING_RC cstring_assignLen( struct cstring_t *pcs
00430 , char const *s
00431 , size_t cch);
00432
00445 CSTRING_EXTERN_C CSTRING_RC cstring_copy( struct cstring_t *pcs
00446 , struct cstring_t const *pcsSrc);
00447
00460 CSTRING_EXTERN_C CSTRING_RC cstring_append( struct cstring_t *pcs
00461 , char const *s);
00462
00481 CSTRING_EXTERN_C CSTRING_RC cstring_appendLen( struct cstring_t *pcs
00482 , char const *s
00483 , size_t cch);
00484
00496 CSTRING_EXTERN_C CSTRING_RC cstring_truncate( struct cstring_t *pcs
00497 , size_t len);
00498
00511 CSTRING_EXTERN_C CSTRING_RC cstring_swap( struct cstring_t *pcs1
00512 , struct cstring_t *pcs2);
00513
00514
00515
00516 #ifndef CSTRING_DOCUMENTATION_SKIP_SECTION
00517 typedef int (*cstring_allocFailHandler)(void *pv, size_t cb, cstring_flags_t flags, void *param);
00518
00519
00521 CSTRING_EXTERN_C CSTRING_RC cstring_createLenFn(struct cstring_t *pcs
00522 , char const *s
00523 , size_t cch
00524 , cstring_flags_t flags
00525 , void *arena
00526 , size_t capacity
00527 , cstring_allocFailHandler pfnAllocFailHandler
00528 , void *param);
00529
00531 CSTRING_EXTERN_C CSTRING_RC cstring_setCapacityFn(struct cstring_t *pcs
00532 , size_t capacity
00533 , cstring_allocFailHandler pfnAllocFailHandler
00534 , void *param);
00535
00537 CSTRING_EXTERN_C CSTRING_RC cstring_assignFn( struct cstring_t *pcs
00538 , char const *s
00539 , cstring_allocFailHandler pfnAllocFailHandler
00540 , void *param);
00542 CSTRING_EXTERN_C CSTRING_RC cstring_assignLenFn(struct cstring_t *pcs
00543 , char const *s
00544 , size_t cch
00545 , cstring_allocFailHandler pfnAllocFailHandler
00546 , void *param);
00547
00549 CSTRING_EXTERN_C CSTRING_RC cstring_appendFn( struct cstring_t *pcs
00550 , char const *s
00551 , cstring_allocFailHandler pfnAllocFailHandler
00552 , void *param);
00553
00555 CSTRING_EXTERN_C CSTRING_RC cstring_appendLenFn(struct cstring_t *pcs
00556 , char const *s
00557 , size_t cch
00558 , cstring_allocFailHandler pfnAllocFailHandler
00559 , void *param);
00560 #endif
00561
00562
00563
00564
00565 #endif
00566
00567