diff options
author | LAN-TW <lantw44@gmail.com> | 2013-11-29 14:06:55 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2013-11-29 14:06:55 +0800 |
commit | 218d5b0040f5438b383b3541ba208d9b51d4b9dd (patch) | |
tree | b9514e92fe1abf2646b0e674590f20baa9e82211 /l4darr | |
parent | 768d6832af5e333c888532e696a6a93145979687 (diff) | |
download | l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.tar l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.tar.gz l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.tar.bz2 l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.tar.lz l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.tar.xz l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.tar.zst l4basic-218d5b0040f5438b383b3541ba208d9b51d4b9dd.zip |
Refactor build system and combine some files
Diffstat (limited to 'l4darr')
-rw-r--r-- | l4darr/Makefile | 24 | ||||
-rw-r--r-- | l4darr/d1array.c | 132 | ||||
-rw-r--r-- | l4darr/d1arrstr.c | 47 | ||||
-rw-r--r-- | l4darr/d2array.c | 26 | ||||
-rw-r--r-- | l4darr/l4darr.h | 64 |
5 files changed, 0 insertions, 293 deletions
diff --git a/l4darr/Makefile b/l4darr/Makefile deleted file mode 100644 index 4593ccf..0000000 --- a/l4darr/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -CC=cc -AR=ar -RM=rm -f -INSTALL=install -m 644 -LOCAL_CFLAGS=-g -CFLAGS=-Wall -I. $(LOCAL_CFLAGS) -OBJ=d1array.o d1arrstr.o d2array.o -LIBFILE=libl4darr.a -DESTDIR=/ -PREFIX=/usr/local -LIBDIR=$(DESTDIR)/$(PREFIX)/lib - -.PHONY: all clean - -all: $(LIBFILE) -$(LIBFILE): $(OBJ) - $(AR) rcs $(LIBFILE) $(OBJ) -clean: - $(RM) $(LIBFILE) $(OBJ) -install: - mkdir -p $(LIBDIR) - $(INSTALL) -c $(LIBFILE) $(LIBDIR) -uninstall: - $(RM) $(LIBDIR)/$(LIBFILE) diff --git a/l4darr/d1array.c b/l4darr/d1array.c deleted file mode 100644 index b14bbea..0000000 --- a/l4darr/d1array.c +++ /dev/null @@ -1,132 +0,0 @@ -#include <stdlib.h> -#include <string.h> -#include <l4darr.h> - -L4DA* l4da_create_setmax(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; - if(maxlen != 0){ - arr->arr_data = malloc(itemsize * maxlen); - if(arr->arr_data == NULL){ - free(arr); - return NULL; - } - }else{ - arr->arr_data = NULL; - } - return arr; -} - -L4DA* l4da_create(int itemsize, int len){ - return l4da_create_setmax(itemsize, len, len); -} - -void l4da_free(L4DA* arr){ - if(arr->arr_data != NULL){ - free(arr->arr_data); - } - free(arr); -} - -int l4da_pushback(L4DA* arr, const void* data){ - if((arr->arr_maxlen) < (arr->arr_curlen + 1)){ - if(arr->arr_maxlen != 0){ - if(l4da_setmax(arr, arr->arr_maxlen*2) < 0){ - return -1; - } - }else{ - if(l4da_setmax(arr, 1) < 0){ - return -1; - } - } - } - memcpy(l4da_vp(arr, arr->arr_curlen), data, arr->arr_itemsize); - arr->arr_curlen++; - return 0; -} - -int l4da_setlen(L4DA* arr, int len){ - if(len > (arr->arr_maxlen)){ - if(l4da_setmax(arr, len) < 0){ - return -1; - }else{ - arr->arr_curlen = len; - } - }else{ - arr->arr_curlen = len; - return 0; - } - return 0; -} - -int l4da_setmax(L4DA* arr, int max){ - void* newptr; - if(arr->arr_data == NULL){ - newptr = malloc((arr->arr_itemsize)*max); - if(newptr == NULL){ - return -1; - }else{ - arr->arr_maxlen = max; - arr->arr_data = newptr; - return 0; - } - } - newptr = realloc(arr->arr_data, (arr->arr_itemsize)*max); - if(newptr == NULL){ - return -1; - }else{ - arr->arr_maxlen = max; - arr->arr_data = newptr; - } - return 0; -} - -int l4da_strip(L4DA* arr){ - if(arr->arr_data == NULL){ - return 0; - } - L4DA* newptr; - /* 其實縮小空間營該一定會成功才對...... - * 不過還是保險一點,加個判斷式,別說 memory leak 是我害的 - * 當然也是避免編譯器一直跳 warning - */ - if((arr->arr_maxlen) > (arr->arr_curlen)){ - arr->arr_maxlen = arr->arr_curlen; - newptr = realloc(arr->arr_data, (arr->arr_curlen)*(arr->arr_itemsize)); - if(newptr == NULL){ - return -1; - } - arr->arr_data = newptr; - } - 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; - arr->arr_data = data; - return arr; -} diff --git a/l4darr/d1arrstr.c b/l4darr/d1arrstr.c deleted file mode 100644 index 2c6e631..0000000 --- a/l4darr/d1arrstr.c +++ /dev/null @@ -1,47 +0,0 @@ -#include <string.h> -#include <l4darr.h> - -L4DA* l4da_dup(const L4DA* arr){ - L4DA* newarr = l4da_create_setmax( - l4da_itemsize(arr), l4da_getlen(arr), l4da_getmax(arr)); - if(newarr == NULL){ - return NULL; - } - memcpy(newarr->arr_data, arr->arr_data, - l4da_getlen(arr) * l4da_itemsize(arr)); - return newarr; -} - -int l4da_combine(L4DA* arr, const L4DA* att){ - if(l4da_itemsize(arr) != l4da_itemsize(att)){ - return -2; - } - if(l4da_setlen(arr, l4da_getlen(arr) + l4da_getlen(att)) < 0){ - return -1; - } - memcpy(l4da_vp(arr, l4da_getlen(arr)), att->arr_data, - l4da_getlen(att) * l4da_itemsize(att)); - return 0; -} - -L4DA* l4da_filereadline_delim(FILE* infile, int chr){ - L4DA* newarr = l4da_create(1, 0); - if(newarr == NULL){ - return NULL; - } - int c; - char towrite; - while((c = getc(infile)) != chr && !feof(infile)){ - towrite = c; - if(l4da_pushback(newarr, (void*)&towrite) < 0){ - l4da_free(newarr); - return NULL; - } - } - towrite = '\0'; - if(l4da_pushback(newarr, (void*)&towrite) < 0){ - l4da_free(newarr); - return NULL; - } - return newarr; -} diff --git a/l4darr/d2array.c b/l4darr/d2array.c deleted file mode 100644 index c2d6e69..0000000 --- a/l4darr/d2array.c +++ /dev/null @@ -1,26 +0,0 @@ -#include <stdlib.h> -#include <l4darr.h> - -L4DA2* l4da2_create(int itemsize, int lenx, int leny){ - if(lenx <= 0 || leny <= 0 || itemsize <= 0){ - return NULL; - } - L4DA2* arr = (L4DA2*)malloc(sizeof(L4DA2)); - if(arr == NULL){ - return NULL; - } - arr->arr_itemsize = itemsize; - arr->arr_lenx = lenx; - arr->arr_leny = leny; - arr->arr_data = malloc(itemsize*lenx*leny); - if(arr->arr_data == NULL){ - free(arr); - return NULL; - } - return arr; -} - -void l4da2_free(L4DA2* arr){ - free(arr->arr_data); - free(arr); -} diff --git a/l4darr/l4darr.h b/l4darr/l4darr.h deleted file mode 100644 index 860f9b9..0000000 --- a/l4darr/l4darr.h +++ /dev/null @@ -1,64 +0,0 @@ -#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); - -/*********** 二維陣列 (其實是用一維陣列來模擬,功能有限) ***********/ - -typedef struct l4lib_dyn_2darr{ - int arr_itemsize; /* 每個項目的大小 */ - int arr_lenx; /* 陣列 x 方向長度 */ - int arr_leny; /* 陣列 y 方向長度 */ - void* arr_data; /* 資料區 */ -} L4DA2 ; - -L4DA2* l4da2_create(int, int, int); -void l4da2_free(L4DA2*); -#define l4da2_getlenx(arr) ((arr)->arr_lenx) -#define l4da2_getleny(arr) ((arr)->arr_leny) -#define l4da2_itemsize(arr) ((arr)->arr_itemsize) -#define l4da2_data(arr) ((arr)->arr_data) -#define l4da2_v(arr, type, numx, numy) \ - (*(((type*)((arr)->arr_data))+((numx)*(l4da2_getleny(arr)))+(numy))) -#define l4da2_vp(arr, numx, numy) \ - ((void*)(((char*)((arr)->arr_data))+ \ - ((arr)->arr_itemsize)*((numx)*(l4da2_getleny(arr))+(numy)))) - -#endif |