summaryrefslogtreecommitdiffstats
path: root/libdimension/list.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-04-29 16:21:55 -0600
committerTavian Barnes <tavianator@gmail.com>2010-04-30 09:52:26 -0600
commitaeaa9a4e80244a5c66b1afe7e6ee1bcf48e70766 (patch)
treedf6be7525af3e537e22beb13649a473434628835 /libdimension/list.c
parent3133fafb0fbd44d687d5549a060260dd7fb93bcf (diff)
downloaddimension-aeaa9a4e80244a5c66b1afe7e6ee1bcf48e70766.tar.xz
Add a generic list type.
Diffstat (limited to 'libdimension/list.c')
-rw-r--r--libdimension/list.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/libdimension/list.c b/libdimension/list.c
new file mode 100644
index 0000000..0303513
--- /dev/null
+++ b/libdimension/list.c
@@ -0,0 +1,45 @@
+/*************************************************************************
+ * Copyright (C) 2010 Tavian Barnes <tavianator@gmail.com> *
+ * *
+ * This file is part of The Dimension Library. *
+ * *
+ * The Dimension Library is free software; you can redistribute it and/ *
+ * or modify it under the terms of the GNU Lesser General Public License *
+ * as published by the Free Software Foundation; either version 3 of the *
+ * License, or (at your option) any later version. *
+ * *
+ * The Dimension Library is distributed in the hope that it will be *
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty *
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this program. If not, see *
+ * <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+#include "dimension.h"
+
+dmnsn_list *
+dmnsn_list_from_array(const dmnsn_array *array)
+{
+ dmnsn_list *list = dmnsn_new_list(array->obj_size);
+
+ size_t i;
+ for (i = 0; i < dmnsn_array_size(array); ++i) {
+ dmnsn_list_push(list, dmnsn_array_at(array, i));
+ }
+
+ return list;
+}
+
+void
+dmnsn_delete_list(dmnsn_list *list)
+{
+ if (list) {
+ while (list->first) {
+ dmnsn_list_remove(list, list->first);
+ }
+ free(list);
+ }
+}