projects
/
apps
/
pfixtools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
keep ipv6 out from the loop
[apps/pfixtools.git]
/
common
/
array.h
diff --git
a/common/array.h
b/common/array.h
index
6f5217d
..
4a5b88d
100644
(file)
--- a/
common/array.h
+++ b/
common/array.h
@@
-138,12
+138,19
@@
array_ensure_can_edit(array); \
p_allocgrow(&(array).data, (goal), &(array).size); \
}
array_ensure_can_edit(array); \
p_allocgrow(&(array).data, (goal), &(array).size); \
}
-#define array_
adjust(array)
\
+#define array_
shrink(array, cap)
\
do { \
array_ensure_can_edit(array); \
do { \
array_ensure_can_edit(array); \
- p_shrink(&(array).data, (array).len, &(array).size); \
+ if ((cap) < (array).size && (array).size != (array).len) { \
+ p_shrink(&(array).data, MAX((array).len, (cap)), &(array).size); \
+ } \
} while (0)
} while (0)
+#define array_adjust(array) array_shrink(array, 0)
+
#define array_elt(array, n) ((array).data[(n)])
#define array_elt(array, n) ((array).data[(n)])
+#define array_last(array) array_elt(array, (array).len - 1)
+#define array_pop_last(array) array_elt(array, --((array).len))
+
#define array_ptr(array, n) ((array).data + (n))
#define foreach(var, array) \
#define array_ptr(array, n) ((array).data + (n))
#define foreach(var, array) \