diff options
author | LAN-TW <lantw44@gmail.com> | 2013-12-06 23:07:09 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2013-12-06 23:07:25 +0800 |
commit | 39fc014f2c85dc5908fb7fb0b97c6409b7bc0521 (patch) | |
tree | bd5433c10c33b4fffd08e8e448309d9141d22b0f /l4array.h | |
parent | 20263eea2c26012ab8b3c9f14df75b5863621874 (diff) | |
download | l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.tar l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.tar.gz l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.tar.bz2 l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.tar.lz l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.tar.xz l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.tar.zst l4basic-39fc014f2c85dc5908fb7fb0b97c6409b7bc0521.zip |
Move all files to the top-level directory
Diffstat (limited to 'l4array.h')
-rw-r--r-- | l4array.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/l4array.h b/l4array.h new file mode 100644 index 0000000..192f49d --- /dev/null +++ b/l4array.h @@ -0,0 +1,43 @@ +#ifndef L4LIB_DYNAMIC_ARRAY +#define L4LIB_DYNAMIC_ARRAY + +#include <stdio.h> /* 取得 FILE */ + +/*********** 一維陣列 ***********/ + +typedef struct l4lib_dyn_arr{ + int arr_itemsize; /* 每個項目的大小 */ + int arr_curlen; /* 陣列總長度 */ + int arr_maxlen; /* 陣列最大長度 */ + void* arr_data; /* 資料區 */ +} L4DA ; + +L4DA* l4da_create_setmax(int, int, int); +L4DA* l4da_create(int, int); +void l4da_free(L4DA*); +int l4da_pushback(L4DA*, const void*); +#define l4da_popback(arr) (((arr)->arr_curlen)--) +#define l4da_getlen(arr) ((arr)->arr_curlen) +int l4da_setlen(L4DA*, int); +#define l4da_getmax(arr) ((arr)->arr_maxlen) +int l4da_setmax(L4DA*, int); +int l4da_strip(L4DA*); +#define l4da_itemsize(arr) ((arr)->arr_itemsize) +#define l4da_data(arr) ((arr)->arr_data) +#define l4da_v(arr, type, num) \ + (*(((type*)((arr)->arr_data))+(num))) +#define l4da_vp(arr, num) \ + ((void*)(((char*)((arr)->arr_data))+(((arr)->arr_itemsize)*(num)))) + +#define l4da_readline() (l4da_filereadline_delim(stdin, '\n')) +#define l4da_readline_delim(delim) (l4da_filereadline_delim(stdin, (delim))) +#define l4da_filereadline(infile) (l4da_filereadline_delim((infile), '\n')) +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); + +#endif |