Changeset 4610
- Timestamp:
- 02/13/07 22:08:48 (2 years ago)
- Files:
-
- libwired/trunk/libwired/data/wi-data.c (modified) (7 diffs)
- libwired/trunk/libwired/data/wi-data.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libwired/trunk/libwired/data/wi-data.c
r4590 r4610 39 39 #include <wired/wi-data.h> 40 40 #include <wired/wi-file.h> 41 #include <wired/wi-macros.h> 41 42 #include <wired/wi-private.h> 42 43 #include <wired/wi-runtime.h> 43 44 #include <wired/wi-string.h> 44 45 #include <wired/wi-system.h> 46 47 #define _WI_DATA_MIN_SIZE 128 48 45 49 46 50 struct _wi_data { … … 93 97 #pragma mark - 94 98 99 wi_data_t * wi_data(void) { 100 return wi_autorelease(wi_data_init(wi_data_alloc())); 101 } 102 103 104 95 105 wi_data_t * wi_data_with_random_bytes(wi_uinteger_t length) { 96 106 return wi_autorelease(wi_data_init_with_random_bytes(wi_data_alloc(), length)); … … 113 123 114 124 125 wi_data_t * wi_data_init(wi_data_t *data) { 126 return wi_data_init_with_capacity(data, 0); 127 } 128 129 130 115 131 wi_data_t * wi_data_init_with_capacity(wi_data_t *data, wi_uinteger_t capacity) { 116 data->capacity = capacity;132 data->capacity = WI_MAX(wi_exp2m1(wi_log2(capacity) + 1), _WI_DATA_MIN_SIZE); 117 133 data->bytes = wi_malloc(data->capacity); 118 134 … … 134 150 135 151 #ifdef WI_CRYPTO 152 136 153 wi_data_t * wi_data_init_with_random_bytes(wi_data_t *data, wi_uinteger_t length) { 137 154 data = wi_data_init_with_capacity(data, length); … … 143 160 return data; 144 161 } 162 145 163 #endif 146 164 … … 326 344 327 345 346 wi_data_t * wi_data_by_appending_data(wi_data_t *data, wi_data_t *append_data) { 347 wi_data_t *newdata; 348 349 newdata = wi_copy(data); 350 wi_data_append_bytes(newdata, append_data->bytes, append_data->length); 351 352 return wi_autorelease(newdata); 353 } 354 355 356 328 357 void wi_data_append_bytes(wi_data_t *data, const void *bytes, wi_uinteger_t length) { 329 358 if(data->length + length > data->capacity) { … … 335 364 336 365 data->length += length; 366 } 367 368 369 370 wi_data_t * wi_data_by_appending_bytes(wi_data_t *data, const void *bytes, wi_uinteger_t length) { 371 wi_data_t *newdata; 372 373 newdata = wi_copy(data); 374 wi_data_append_bytes(newdata, bytes, length); 375 376 return wi_autorelease(newdata); 337 377 } 338 378 libwired/trunk/libwired/data/wi-data.h
r4557 r4610 38 38 WI_EXPORT wi_runtime_id_t wi_data_runtime_id(void); 39 39 40 WI_EXPORT wi_data_t * wi_data(void); 40 41 WI_EXPORT wi_data_t * wi_data_with_base64(wi_string_t *); 41 42 WI_EXPORT wi_data_t * wi_data_with_random_bytes(wi_uinteger_t); 42 43 43 44 WI_EXPORT wi_data_t * wi_data_alloc(void); 45 WI_EXPORT wi_data_t * wi_data_init(wi_data_t *); 44 46 WI_EXPORT wi_data_t * wi_data_init_with_capacity(wi_data_t *, wi_uinteger_t); 45 47 WI_EXPORT wi_data_t * wi_data_init_with_bytes(wi_data_t *, const void *, wi_uinteger_t); … … 52 54 53 55 WI_EXPORT void wi_data_append_data(wi_data_t *, wi_data_t *); 56 WI_EXPORT wi_data_t * wi_data_by_appending_data(wi_data_t *, wi_data_t *); 54 57 WI_EXPORT void wi_data_append_bytes(wi_data_t *, const void *, wi_uinteger_t); 58 WI_EXPORT wi_data_t * wi_data_by_appending_bytes(wi_data_t *, const void *, wi_uinteger_t); 55 59 56 60 WI_EXPORT wi_string_t * wi_data_md5(wi_data_t *);
