dbcc942566e3e5420290cf773f80978709f101d3
6 void *csr_malloc( size_t size
)
8 void *ret
= malloc( size
);
14 void *csr_sb_raw( void *arr
)
16 return ((u32
*)arr
)-3;
19 u32
csr_sb_count( void *arr
)
21 return arr
? ((u32
*)csr_sb_raw( arr
))[1]: 0;
24 u32
csr_sb_cap( void *arr
)
26 return arr
? ((u32
*)csr_sb_raw( arr
))[0]: 0;
29 void *csr_sb_use( void *arr
)
31 u32
*raw
= (u32
*)csr_sb_raw( arr
);
32 void *data
= ((u8
*)arr
) + raw
[1]*raw
[2];
39 void csr_sb_inc( void *arr
, u32 amt
)
41 u32
*raw
= (u32
*)csr_sb_raw( arr
);
45 void *csr_sb_reserve( void *arr
, u32 amt
, u32 esize
)
47 u32 cap
= arr
? csr_sb_cap( arr
): 0;
48 u32 count
= arr
? csr_sb_count( arr
): 0;
50 if( count
+ amt
> cap
)
52 cap
= csr_max( count
+ amt
, cap
* 2 );
53 u32
*new_ptr
= (u32
*)realloc( arr
? csr_sb_raw( arr
): NULL
, cap
* esize
+ 3*sizeof(u32
) );
62 return (void *)(new_ptr
+3);
70 void csr_sb_free( void *arr
)
74 free( csr_sb_raw( arr
) );
78 // djb2 - Dan Bernstein
79 unsigned long djb2( unsigned char const *str
)
81 unsigned long hash
= 5381;
85 hash
= ((hash
<< 5) + hash
) + c
; /* hash * 33 + c */