diff options
author | LAN-TW <lantw44@gmail.com> | 2012-09-13 00:17:36 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2012-09-13 00:17:36 +0800 |
commit | 3e3947087f43f172a01d9c1f2b8069d55b934115 (patch) | |
tree | 59381e57a21098bc4b9a7e9ee376b6bccdadf23c | |
parent | a912240ad26f836441430a1b712e21c6eb22a0b2 (diff) | |
download | l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.gz l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.tar.zst l4basic-3e3947087f43f172a01d9c1f2b8069d55b934115.zip |
l4darr: 加入 l4da_drop_struct 和 l4da_make_struct,用來捨棄或加入 L4DA 資料結構
-rw-r--r-- | l4darr/d1array.c | 21 | ||||
-rw-r--r-- | l4darr/l4darr.h | 3 |
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{ |