summaryrefslogtreecommitdiff
path: root/src/data
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-11-04 21:20:56 +0000
committerPaul Buetow <paul@buetow.org>2008-11-04 21:20:56 +0000
commitff0828f06a1f317681c45402feda48bde592a076 (patch)
tree7c94275d5ab8b140cd41659d567c09bdc7ca9f16 /src/data
parent48cf82bfc6cd65cc95f7658582fc532602a85ac0 (diff)
array_new_size
array_new_copy implemented
Diffstat (limited to 'src/data')
-rw-r--r--src/data/array.c23
-rw-r--r--src/data/array.h2
2 files changed, 25 insertions, 0 deletions
diff --git a/src/data/array.c b/src/data/array.c
index 09022ff..6a2b1fa 100644
--- a/src/data/array.c
+++ b/src/data/array.c
@@ -44,6 +44,29 @@ array_new() {
return (p_array);
}
+Array*
+array_new_size(int i_size) {
+ Array *p_array = malloc(sizeof(Array));
+
+ p_array->i_size = 0;
+ p_array->pp_ae = NULL;
+ array_resize(p_array, i_size);
+
+ return (p_array);
+}
+
+void
+_array_new_copy_cb(void *p_array, void *p_void) {
+ array_unshift(p_array, p_void);
+}
+
+Array*
+array_new_copy(Array *p_array) {
+ Array *p_array_cpy = array_new_size(array_get_size(p_array));
+ array_iterate2(p_array, _array_new_copy_cb, p_array_cpy);
+
+ return (p_array_cpy);
+}
void
array_delete(Array *p_array) {
diff --git a/src/data/array.h b/src/data/array.h
index f89c0ff..75f6365 100644
--- a/src/data/array.h
+++ b/src/data/array.h
@@ -61,6 +61,8 @@ typedef struct {
} ArrayIterator;
Array *array_new();
+Array *array_new_size(int i_size);
+Array *array_new_copy(Array *p_array);
void array_delete(Array *p_array);
void array_set(Array *p_array, int i_index, void *p_val);
void array_insert(Array *p_array, int i_index, void *p_val);