summaryrefslogtreecommitdiff
path: root/libs/libaxolotl/src/utarray.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/libaxolotl/src/utarray.h')
-rw-r--r--libs/libaxolotl/src/utarray.h78
1 files changed, 42 insertions, 36 deletions
diff --git a/libs/libaxolotl/src/utarray.h b/libs/libaxolotl/src/utarray.h
index 75e9dc5ed9..979e99e98e 100644
--- a/libs/libaxolotl/src/utarray.h
+++ b/libs/libaxolotl/src/utarray.h
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2008-2014, Troy D. Hanson http://troydhanson.github.com/uthash/
+Copyright (c) 2008-2016, Troy D. Hanson http://troydhanson.github.com/uthash/
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -26,7 +26,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef UTARRAY_H
#define UTARRAY_H
-#define UTARRAY_VERSION 1.9.9
+#define UTARRAY_VERSION 2.0.1
#ifdef __GNUC__
#define _UNUSED_ __attribute__ ((__unused__))
@@ -38,7 +38,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <string.h> /* memset, etc */
#include <stdlib.h> /* exit */
+#ifndef oom
#define oom() exit(-1)
+#endif
typedef void (ctor_f)(void *dst, const void *src);
typedef void (dtor_f)(void *elt);
@@ -58,13 +60,13 @@ typedef struct {
#define utarray_init(a,_icd) do { \
memset(a,0,sizeof(UT_array)); \
- (a)->icd=*_icd; \
+ (a)->icd = *(_icd); \
} while(0)
#define utarray_done(a) do { \
if ((a)->n) { \
if ((a)->icd.dtor) { \
- size_t _ut_i; \
+ unsigned _ut_i; \
for(_ut_i=0; _ut_i < (a)->i; _ut_i++) { \
(a)->icd.dtor(utarray_eltptr(a,_ut_i)); \
} \
@@ -75,7 +77,8 @@ typedef struct {
} while(0)
#define utarray_new(a,_icd) do { \
- a=(UT_array*)malloc(sizeof(UT_array)); \
+ (a) = (UT_array*)malloc(sizeof(UT_array)); \
+ if ((a) == NULL) oom(); \
utarray_init(a,_icd); \
} while(0)
@@ -85,9 +88,12 @@ typedef struct {
} while(0)
#define utarray_reserve(a,by) do { \
- if (((a)->i+by) > ((a)->n)) { \
- while(((a)->i+by) > ((a)->n)) { (a)->n = ((a)->n ? (2*(a)->n) : 8); } \
- if ( ((a)->d=(char*)realloc((a)->d, (a)->n*(a)->icd.sz)) == NULL) oom(); \
+ if (((a)->i+(by)) > (a)->n) { \
+ char *utarray_tmp; \
+ while (((a)->i+(by)) > (a)->n) { (a)->n = ((a)->n ? (2*(a)->n) : 8); } \
+ utarray_tmp=(char*)realloc((a)->d, (a)->n*(a)->icd.sz); \
+ if (utarray_tmp == NULL) oom(); \
+ (a)->d=utarray_tmp; \
} \
} while(0)
@@ -112,10 +118,10 @@ typedef struct {
#define utarray_len(a) ((a)->i)
#define utarray_eltptr(a,j) (((j) < (a)->i) ? _utarray_eltptr(a,j) : NULL)
-#define _utarray_eltptr(a,j) ((char*)((a)->d + ((a)->icd.sz*(j) )))
+#define _utarray_eltptr(a,j) ((a)->d + ((a)->icd.sz * (j)))
#define utarray_insert(a,p,j) do { \
- if (j > (a)->i) utarray_resize(a,j); \
+ if ((j) > (a)->i) utarray_resize(a,j); \
utarray_reserve(a,1); \
if ((j) < (a)->i) { \
memmove( _utarray_eltptr(a,(j)+1), _utarray_eltptr(a,j), \
@@ -128,7 +134,7 @@ typedef struct {
#define utarray_inserta(a,w,j) do { \
if (utarray_len(w) == 0) break; \
- if (j > (a)->i) utarray_resize(a,j); \
+ if ((j) > (a)->i) utarray_resize(a,j); \
utarray_reserve(a,utarray_len(w)); \
if ((j) < (a)->i) { \
memmove(_utarray_eltptr(a,(j)+utarray_len(w)), \
@@ -136,9 +142,9 @@ typedef struct {
((a)->i - (j))*((a)->icd.sz)); \
} \
if ((a)->icd.copy) { \
- size_t _ut_i; \
+ unsigned _ut_i; \
for(_ut_i=0;_ut_i<(w)->i;_ut_i++) { \
- (a)->icd.copy(_utarray_eltptr(a,j+_ut_i), _utarray_eltptr(w,_ut_i)); \
+ (a)->icd.copy(_utarray_eltptr(a, (j) + _ut_i), _utarray_eltptr(w, _ut_i)); \
} \
} else { \
memcpy(_utarray_eltptr(a,j), _utarray_eltptr(w,0), \
@@ -148,55 +154,55 @@ typedef struct {
} while(0)
#define utarray_resize(dst,num) do { \
- size_t _ut_i; \
- if (dst->i > (size_t)(num)) { \
+ unsigned _ut_i; \
+ if ((dst)->i > (unsigned)(num)) { \
if ((dst)->icd.dtor) { \
- for(_ut_i=num; _ut_i < dst->i; _ut_i++) { \
- (dst)->icd.dtor(utarray_eltptr(dst,_ut_i)); \
+ for (_ut_i = (num); _ut_i < (dst)->i; ++_ut_i) { \
+ (dst)->icd.dtor(_utarray_eltptr(dst, _ut_i)); \
} \
} \
- } else if (dst->i < (size_t)(num)) { \
- utarray_reserve(dst,num-dst->i); \
+ } else if ((dst)->i < (unsigned)(num)) { \
+ utarray_reserve(dst, (num) - (dst)->i); \
if ((dst)->icd.init) { \
- for(_ut_i=dst->i; _ut_i < num; _ut_i++) { \
- (dst)->icd.init(utarray_eltptr(dst,_ut_i)); \
+ for (_ut_i = (dst)->i; _ut_i < (unsigned)(num); ++_ut_i) { \
+ (dst)->icd.init(_utarray_eltptr(dst, _ut_i)); \
} \
} else { \
- memset(_utarray_eltptr(dst,dst->i),0,(dst)->icd.sz*(num-dst->i)); \
+ memset(_utarray_eltptr(dst, (dst)->i), 0, (dst)->icd.sz*((num) - (dst)->i)); \
} \
} \
- dst->i = num; \
+ (dst)->i = (num); \
} while(0)
#define utarray_concat(dst,src) do { \
- utarray_inserta((dst),(src),utarray_len(dst)); \
+ utarray_inserta(dst, src, utarray_len(dst)); \
} while(0)
#define utarray_erase(a,pos,len) do { \
if ((a)->icd.dtor) { \
- size_t _ut_i; \
- for(_ut_i=0; _ut_i < len; _ut_i++) { \
- (a)->icd.dtor(utarray_eltptr((a),pos+_ut_i)); \
+ unsigned _ut_i; \
+ for (_ut_i = 0; _ut_i < (len); _ut_i++) { \
+ (a)->icd.dtor(utarray_eltptr(a, (pos) + _ut_i)); \
} \
} \
- if ((a)->i > (pos+len)) { \
- memmove( _utarray_eltptr((a),pos), _utarray_eltptr((a),pos+len), \
- (((a)->i)-(pos+len))*((a)->icd.sz)); \
+ if ((a)->i > ((pos) + (len))) { \
+ memmove(_utarray_eltptr(a, pos), _utarray_eltptr(a, (pos) + (len)), \
+ ((a)->i - ((pos) + (len))) * (a)->icd.sz); \
} \
(a)->i -= (len); \
} while(0)
#define utarray_renew(a,u) do { \
- if (a) utarray_clear(a); \
- else utarray_new((a),(u)); \
+ if (a) utarray_clear(a); \
+ else utarray_new(a, u); \
} while(0)
#define utarray_clear(a) do { \
if ((a)->i > 0) { \
if ((a)->icd.dtor) { \
- size_t _ut_i; \
+ unsigned _ut_i; \
for(_ut_i=0; _ut_i < (a)->i; _ut_i++) { \
- (a)->icd.dtor(utarray_eltptr(a,_ut_i)); \
+ (a)->icd.dtor(_utarray_eltptr(a, _ut_i)); \
} \
} \
(a)->i = 0; \
@@ -213,7 +219,7 @@ typedef struct {
#define utarray_next(a,e) (((e)==NULL) ? utarray_front(a) : ((((a)->i) > (utarray_eltidx(a,e)+1)) ? _utarray_eltptr(a,utarray_eltidx(a,e)+1) : NULL))
#define utarray_prev(a,e) (((e)==NULL) ? utarray_back(a) : ((utarray_eltidx(a,e) > 0) ? _utarray_eltptr(a,utarray_eltidx(a,e)-1) : NULL))
#define utarray_back(a) (((a)->i) ? (_utarray_eltptr(a,(a)->i-1)) : NULL)
-#define utarray_eltidx(a,e) (((char*)(e) >= (char*)((a)->d)) ? (((char*)(e) - (char*)((a)->d))/(size_t)(a)->icd.sz) : -1)
+#define utarray_eltidx(a,e) (((char*)(e) >= (a)->d) ? (((char*)(e) - (a)->d)/(a)->icd.sz) : -1)
/* last we pre-define a few icd for common utarrays of ints and strings */
static void utarray_str_cpy(void *dst, const void *src) {
@@ -222,7 +228,7 @@ static void utarray_str_cpy(void *dst, const void *src) {
}
static void utarray_str_dtor(void *elt) {
char **eltc = (char**)elt;
- if (*eltc) free(*eltc);
+ if (*eltc != NULL) free(*eltc);
}
static const UT_icd ut_str_icd _UNUSED_ = {sizeof(char*),NULL,utarray_str_cpy,utarray_str_dtor};
static const UT_icd ut_int_icd _UNUSED_ = {sizeof(int),NULL,NULL,NULL};