Changeset 4610

Show
Ignore:
Timestamp:
02/13/07 22:08:48 (2 years ago)
Author:
morris
Message:

Add wi_data(), wi_data_init(), wi_data_by_appending_data(), wi_data_by_appending_bytes()

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/data/wi-data.c

    r4590 r4610  
    3939#include <wired/wi-data.h> 
    4040#include <wired/wi-file.h> 
     41#include <wired/wi-macros.h> 
    4142#include <wired/wi-private.h> 
    4243#include <wired/wi-runtime.h> 
    4344#include <wired/wi-string.h> 
    4445#include <wired/wi-system.h> 
     46 
     47#define _WI_DATA_MIN_SIZE                               128 
     48 
    4549 
    4650struct _wi_data { 
     
    9397#pragma mark - 
    9498 
     99wi_data_t * wi_data(void) { 
     100        return wi_autorelease(wi_data_init(wi_data_alloc())); 
     101} 
     102 
     103 
     104 
    95105wi_data_t * wi_data_with_random_bytes(wi_uinteger_t length) { 
    96106        return wi_autorelease(wi_data_init_with_random_bytes(wi_data_alloc(), length)); 
     
    113123 
    114124 
     125wi_data_t * wi_data_init(wi_data_t *data) { 
     126        return wi_data_init_with_capacity(data, 0); 
     127} 
     128 
     129 
     130 
    115131wi_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)
    117133        data->bytes             = wi_malloc(data->capacity); 
    118134         
     
    134150 
    135151#ifdef WI_CRYPTO 
     152 
    136153wi_data_t * wi_data_init_with_random_bytes(wi_data_t *data, wi_uinteger_t length) { 
    137154        data = wi_data_init_with_capacity(data, length); 
     
    143160        return data; 
    144161} 
     162 
    145163#endif 
    146164 
     
    326344 
    327345 
     346wi_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 
    328357void wi_data_append_bytes(wi_data_t *data, const void *bytes, wi_uinteger_t length) { 
    329358        if(data->length + length > data->capacity) { 
     
    335364 
    336365        data->length += length; 
     366} 
     367 
     368 
     369 
     370wi_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); 
    337377} 
    338378 
  • libwired/trunk/libwired/data/wi-data.h

    r4557 r4610  
    3838WI_EXPORT wi_runtime_id_t                               wi_data_runtime_id(void); 
    3939 
     40WI_EXPORT wi_data_t *                                   wi_data(void); 
    4041WI_EXPORT wi_data_t *                                   wi_data_with_base64(wi_string_t *); 
    4142WI_EXPORT wi_data_t *                                   wi_data_with_random_bytes(wi_uinteger_t); 
    4243 
    4344WI_EXPORT wi_data_t *                                   wi_data_alloc(void); 
     45WI_EXPORT wi_data_t *                                   wi_data_init(wi_data_t *); 
    4446WI_EXPORT wi_data_t *                                   wi_data_init_with_capacity(wi_data_t *, wi_uinteger_t); 
    4547WI_EXPORT wi_data_t *                                   wi_data_init_with_bytes(wi_data_t *, const void *, wi_uinteger_t); 
     
    5254 
    5355WI_EXPORT void                                                  wi_data_append_data(wi_data_t *, wi_data_t *); 
     56WI_EXPORT wi_data_t *                                   wi_data_by_appending_data(wi_data_t *, wi_data_t *); 
    5457WI_EXPORT void                                                  wi_data_append_bytes(wi_data_t *, const void *, wi_uinteger_t); 
     58WI_EXPORT wi_data_t *                                   wi_data_by_appending_bytes(wi_data_t *, const void *, wi_uinteger_t); 
    5559 
    5660WI_EXPORT wi_string_t *                                 wi_data_md5(wi_data_t *);