X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcbuffer.h;h=a6ca1897e2fc3444e7650aa4566874a2da303b04;hp=34e30c1c1f863f7fa299f79d34aaa26e3d81f36f;hb=e5d8d3db6caa344b3d419b884556c21b15e7d123;hpb=2ccba0fda23268cb45841b5984fc31b4287a3d4b diff --git a/lib/silcutil/silcbuffer.h b/lib/silcutil/silcbuffer.h index 34e30c1c..a6ca1897 100644 --- a/lib/silcutil/silcbuffer.h +++ b/lib/silcutil/silcbuffer.h @@ -111,16 +111,14 @@ */ -typedef struct SilcBufferStruct { +typedef struct { uint32 truelen; uint32 len; unsigned char *head; unsigned char *data; unsigned char *tail; unsigned char *end; -} SilcBufferObject; - -typedef SilcBufferObject *SilcBuffer; +} *SilcBuffer, SilcBufferStruct; /* Macros */ @@ -162,6 +160,19 @@ void silc_buffer_free(SilcBuffer sb) } } +/* Sets the `data' and `data_len' to the buffer pointer sent as argument. + The data area is automatically set to the `data_len'. This function + can be used to set the data to static buffer without needing any + memory allocations. The `data' will not be copied to the buffer. */ + +extern inline +void silc_buffer_set(SilcBuffer sb, unsigned char *data, uint32 data_len) +{ + sb->data = sb->head = data; + sb->tail = sb->end = data + data_len; + sb->len = sb->truelen = data_len; +} + /* Pulls current data area towards end. The length of the currently valid data area is also decremented. Returns pointer to the data area before pulling.