aboutsummaryrefslogtreecommitdiffstats
path: root/l4darr
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2013-11-29 14:06:55 +0800
committerLAN-TW <lantw44@gmail.com>2013-11-29 14:06:55 +0800
commit218d5b0040f5438b383b3541ba208d9b51d4b9dd (patch)
treeb9514e92fe1abf2646b0e674590f20baa9e82211 /l4darr
parent768d6832af5e333c888532e696a6a93145979687 (diff)
downloadl4basic-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/Makefile24
-rw-r--r--l4darr/d1array.c132
-rw-r--r--l4darr/d1arrstr.c47
-rw-r--r--l4darr/d2array.c26
-rw-r--r--l4darr/l4darr.h64
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