aboutsummaryrefslogtreecommitdiffstats
path: root/l4darr
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2012-09-13 00:17:36 +0800
committerLAN-TW <lantw44@gmail.com>2012-09-13 00:17:36 +0800
commit3e3947087f43f172a01d9c1f2b8069d55b934115 (patch)
tree59381e57a21098bc4b9a7e9ee376b6bccdadf23c /l4darr
parenta912240ad26f836441430a1b712e21c6eb22a0b2 (diff)
downloadl4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar
l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.gz
l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.bz2
l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.lz
l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.xz
l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.zst
l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.zip
l4darr: 加入 l4da_drop_struct 和 l4da_make_struct,用來捨棄或加入 L4DA 資料結構
Diffstat (limited to 'l4darr')
-rw-r--r--l4darr/d1array.c21
-rw-r--r--l4darr/l4darr.h3
2 files changed, 24 insertions, 0 deletions
diff --git a/l4darr/d1array.c b/l4darr/d1array.c
index 99d646f..4e84f1c 100644
--- a/l4darr/d1array.c
+++ b/l4darr/d1array.c
@@ -108,3 +108,24 @@ int l4da_strip(L4DA* arr){
}
return 0;
}
+
+/* 基本上直接玩 struct 的函式還是少用吧 */
+void* l4da_drop_struct(L4DA* arr){
+ void* toreturn = arr->arr_data;
+ free(arr);
+ return toreturn;
+}
+
+L4DA* l4da_make_struct(void* data, int itemsize, int len, int maxlen){
+ if(itemsize <= 0 || len < 0 || maxlen < len){
+ return NULL;
+ }
+ L4DA* arr = (L4DA*)malloc(sizeof(L4DA));
+ if(arr == NULL){
+ return NULL;
+ }
+ arr->arr_itemsize = itemsize;
+ arr->arr_curlen = len;
+ arr->arr_maxlen = maxlen;
+ return arr;
+}
diff --git a/l4darr/l4darr.h b/l4darr/l4darr.h
index 30c9285..5f0c4ad 100644
--- a/l4darr/l4darr.h
+++ b/l4darr/l4darr.h
@@ -36,6 +36,9 @@ L4DA* l4da_filereadline_delim(FILE*, int);
L4DA* l4da_dup(const L4DA*);
int l4da_combine(L4DA*, const L4DA*);
+void* l4da_drop_struct(L4DA*);
+L4DA* l4da_make_struct(void*, int, int, int);
+
/*********** 二維陣列 (其實是用一維陣列來模擬,功能有限) ***********/
typedef struct l4lib_dyn_2darr{