diff --git a/app/gson/test/test3/main.cpp b/app/gson/test/test3/main.cpp index 2bed789e0..690fcb0a2 100644 --- a/app/gson/test/test3/main.cpp +++ b/app/gson/test/test3/main.cpp @@ -60,9 +60,81 @@ static void deserialize(void) } } +static void test1(void) +{ + union + { + struct user_male* m; + struct user_female* f; + struct people* p; + } obj; + + struct user_male* m = new struct user_male; + (*m).favorite = "pingpang"; + (*m).height = 170; + (*m).name = "zsxxsz"; + (*m).age = 11; + (*m).male = true; + + (*m).province_name = "山东省"; + (*m).position = "山东省"; + + (*m).shcool = "山东工业大学"; + (*m).class_name = "热处理专业"; + + obj.m = m; + acl::json json; + + // 将 user 对象转换为 json 对象 + acl::json_node& node = acl::gson(json, obj.m); + + printf("serialize:\r\n"); + printf("json: %s\r\n", node.to_string().c_str()); + printf("\r\n"); + + delete obj.p; +} + +static void test2(void) +{ + const char *s = "{\"shcool\": \"山东工业大学\", \"class_name\": \"热处理专业\", \"province_name\": \"山东省\", \"position\": \"山东省\", \"name\": \"zsxxsz\", \"age\": 11, \"male\": true, \"favorite\": \"pingpang\", \"height\": 170}"; + printf("deserialize:\r\n"); + + acl::json json; + json.update(s); + user_male u; + + // 将 json 对象转换为 user 对象 + std::pair ret = acl::gson(json.get_root(), u); + + // 如果转换失败,则打印转换失败原因 + if (ret.first == false) + printf("error: %s\r\n", ret.second.c_str()); + else + { + printf("name: %s, age: %d, male: %s, favorite: %s, height: %d\r\n", + u.name.c_str(), u.age, u.male ? "yes" : "no", + u.get_favorite(), u.get_height()); + printf("province_name: %s, position: %s\r\n", + u.province_name.c_str(), u.position.c_str()); + printf("shcool: %s, class_name: %s\r\n", + u.shcool.c_str(), u.class_name.c_str()); + } +} + int main(void) { + printf("------------------------serialize----------------------\r\n"); serialize(); + + printf("------------------------deserialize--------------------\r\n"); deserialize(); + + printf("------------------------test1--------------------------\r\n"); + test1(); + + printf("------------------------test2--------------------------\r\n"); + test2(); + return 0; } diff --git a/app/gson/test/test3/struct.stub b/app/gson/test/test3/struct.stub index 94edc1629..416d249d2 100644 --- a/app/gson/test/test3/struct.stub +++ b/app/gson/test/test3/struct.stub @@ -1,16 +1,28 @@ #pragma once #include -struct student +struct people +{ + people(void) {} + virtual ~people(void) {} +}; + +struct student : people { std::string shcool; std::string class_name; + + student(void) {} + virtual ~student(void) {} }; struct province { std::string province_name; std::string position; + + province(void) {} + virtual ~province(void) {} }; struct user : student, province @@ -18,4 +30,28 @@ struct user : student, province std::string name; int age; bool male; + + user(void) {} + virtual ~user(void) {} +}; + +struct user_male : user +{ + std::string favorite; + int height; + + const char* get_favorite(void) const + { + return favorite.c_str(); + } + int get_height(void) const + { + return height; + } +}; + +struct user_female : user +{ + std::string favorite; + int weigtht; }; diff --git a/app/gson/test/test5/struct.stub b/app/gson/test/test5/struct.stub index 3ed8e698c..4ac7f3b10 100644 --- a/app/gson/test/test5/struct.stub +++ b/app/gson/test/test5/struct.stub @@ -34,17 +34,21 @@ struct user male = v; return *this; } - const char* get_name(void) + + const char* get_name(void) const { return name.c_str(); } - /* - const char* get_name(void) const + bool is_male(void) const { - return name.c_str(); + return male; + } + + int get_age(void) const + { + return age; } - */ //Gson@skip acl::string nick; diff --git a/dist/master/libexec/linux64/acl_master b/dist/master/libexec/linux64/acl_master deleted file mode 100644 index 3518b60a2..000000000 Binary files a/dist/master/libexec/linux64/acl_master and /dev/null differ diff --git a/lib_acl/Makefile.db b/lib_acl/Makefile.db deleted file mode 100644 index 93f8116f5..000000000 --- a/lib_acl/Makefile.db +++ /dev/null @@ -1,487 +0,0 @@ -SHELL = /bin/sh -#CC = gcc -#CC = g++ -CC = ${ENV_CC} -AR = ar -ARFL = rv -#ARFL = cru -RANLIB = ranlib - -# default lib name -LIB_NAME = lib_acl.a - -#CFLAGS = -c -g -W -Wall -Wcast-qual -Wcast-align -#-fno-strict-aliasing -CFLAGS = -c -g -W \ --O3 \ --Wall \ --Werror \ --Wshadow \ --Wpointer-arith \ --Waggregate-return \ --Wmissing-prototypes \ --D_REENTRANT \ --D_USE_FAST_MACRO \ --Wno-long-long \ --Wuninitialized \ --D_POSIX_PTHREAD_SEMANTICS \ --pedantic \ --fPIC -#-Wcast-align -#-Winvalid-pch -DACL_PREPARE_COMPILE - -########################################################### -#Check system: -# Linux, SunOS, Solaris, BSD variants, AIX, HP-UX -SYSLIB = -lpthread -CHECKSYSRES = @echo "Unknow system type!";exit 1 -UNIXNAME = $(shell uname -sm) -UNIXTYPE = LINUX - -ifeq ($(CC),) - CC = gcc -endif - -ifeq ($(findstring gcc, $(CC)), gcc) - CFLAGS += -Wstrict-prototypes -endif - -# For FreeBSD -ifeq ($(findstring FreeBSD, $(UNIXNAME)), FreeBSD) - CFLAGS += -DFREEBSD - UNIXTYPE = FREEBSD -endif - -# For Darwin -ifeq ($(findstring Darwin, $(UNIXNAME)), Darwin) - CFLAGS += -DMACOSX -Wno-invalid-source-encoding -Wno-extended-offsetof - UNIXTYPE = MACOSX -endif - -# For Linux -ifeq ($(findstring Linux, $(UNIXNAME)), Linux) - CFLAGS += -DLINUX2 - UNIXTYPE = LINUX -endif - -# For SunOS -ifeq ($(findstring SunOS, $(UNIXNAME)), SunOS) - ifeq ($(findstring 86, $(UNIXNAME)), 86) - SYSLIB += -lsocket -lnsl -lrt - endif - ifeq ($(findstring sun4u, $(UNIXNAME)), sun4u) - SYSLIB += -lsocket -lnsl -lrt - endif - CFLAGS += -DSUNOS5 - UNIXTYPE = SUNOS5 -endif - -# For HP-UX -ifeq ($(findstring HP-UX, $(UNIXNAME)), HP-UX) - CFLAGS += -DHP_UX -DHPUX11 - UNIXTYPE = HPUX -endif - -#CCARGS = -#ifeq ($(findstring HAS_MYSQL, $(CCARGS)), HAS_MYSQL) -# CFLAGS += -DHAS_MYSQL -# LIB_NAME = lib_acl.a -#endif - -CFLAGS += -DHAS_MYSQL - -#Find system type. -ifneq ($(SYSPATH),) - CHECKSYSRES = @echo "System is $(shell uname -sm)" -endif -########################################################### - -OUT_PATH = . -OBJ_PATH_DST = $(OUT_PATH)/debug -LIB_PATH_DST = $(OUT_PATH)/lib -DEF_PATH_DST = $(OUT_PATH)/debug - -BASE_PATH = . -INC_PATH_SRC = $(BASE_PATH)/include -SRC_PATH_SRC = $(BASE_PATH)/src - -CFLAGS += -I. -I$(INC_PATH_SRC) -I../include/mysql - -########################################################### - -#Project's objs -INIT_SRC = $(wildcard $(SRC_PATH_SRC)/init/*.c) -PRIV_SRC = $(wildcard $(SRC_PATH_SRC)/private/*.c) -STDLIB_SRC = $(wildcard $(SRC_PATH_SRC)/stdlib/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/common/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/iostuff/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/configure/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/filedir/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/string/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/memory/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/debug/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/sys/*.c) \ - $(wildcard $(SRC_PATH_SRC)/stdlib/sys/unix/*.c) -NET_SRC = $(wildcard $(SRC_PATH_SRC)/net/*.c) \ - $(wildcard $(SRC_PATH_SRC)/net/listen/*.c) \ - $(wildcard $(SRC_PATH_SRC)/net/connect/*.c) \ - $(wildcard $(SRC_PATH_SRC)/net/dns/*.c) -ENGINE_SRC = $(wildcard $(SRC_PATH_SRC)/event/*.c) -IOCTL_SRC = $(wildcard $(SRC_PATH_SRC)/ioctl/*.c) -AIO_SRC = $(wildcard $(SRC_PATH_SRC)/aio/*.c) -MSG_SRC = $(wildcard $(SRC_PATH_SRC)/msg/*.c) -THREAD_SRC = $(wildcard $(SRC_PATH_SRC)/thread/*.c) -SVR_SRC = $(wildcard $(SRC_PATH_SRC)/svr/*.c) -DB_SRC = $(wildcard $(SRC_PATH_SRC)/db/*.c) \ - $(wildcard $(SRC_PATH_SRC)/db/mysql/*.c) \ - $(wildcard $(SRC_PATH_SRC)/db/null/*.c) \ - $(wildcard $(SRC_PATH_SRC)/db/memdb/*.c) \ - $(wildcard $(SRC_PATH_SRC)/db/zdb/*.c) -CODE_SRC = $(wildcard $(SRC_PATH_SRC)/code/*.c) -MASTER_SRC = $(wildcard $(SRC_PATH_SRC)/master/*.c) \ - $(wildcard $(SRC_PATH_SRC)/master/framework/*.c) \ - $(wildcard $(SRC_PATH_SRC)/master/framework/trigger/*.c) \ - $(wildcard $(SRC_PATH_SRC)/master/template/*.c) -PROCTL_SRC = $(wildcard $(SRC_PATH_SRC)/proctl/*.c) -XML_SRC = $(wildcard $(SRC_PATH_SRC)/xml/*.c) -JSON_SRC = $(wildcard $(SRC_PATH_SRC)/json/*.c) -UTEST_SRC = $(wildcard $(SRC_PATH_SRC)/unit_test/*.c) -#EXP_SRC = $(wildcard $(SRC_PATH_SRC)/experiment/avl/*.c) - -SOURCES_SRC = $(INIT_SRC) $(STDLIB_SRC) $(NET_SRC) \ - $(ENGINE_SRC) $(IOCTL_SRC) $(AIO_SRC) \ - $(MSG_SRC) $(THREAD_SRC) $(SVR_SRC) \ - $(DB_SRC) $(CODE_SRC) $(MASTER_SRC) \ - $(PROCTL_SRC) $(XML_SRC) $(UTEST_SRC) -#$(EXP_SRC) - -########################################################### -INIT_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(INIT_SRC))) -PRIV_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(PRIV_SRC))) -STDLIB_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(STDLIB_SRC))) -NET_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(NET_SRC))) -ENGINE_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(ENGINE_SRC))) -IOCTL_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(IOCTL_SRC))) -AIO_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(AIO_SRC))) -MSG_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(MSG_SRC))) -THREAD_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(THREAD_SRC))) -SVR_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(SVR_SRC))) -DB_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(DB_SRC))) -CODE_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(CODE_SRC))) -MASTER_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(MASTER_SRC))) -PROCTL_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(PROCTL_SRC))) -XML_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(XML_SRC))) -JSON_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(JSON_SRC))) -UTEST_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(UTEST_SRC))) -#EXP_OBJ = $(patsubst %.c, $(OBJ_PATH_DST)/%.o, $(notdir $(EXP_SRC))) - -OBJS_DST = $(INIT_OBJ) $(PRIV_OBJ) $(STDLIB_OBJ) \ - $(NET_OBJ) $(ENGINE_OBJ) $(IOCTL_OBJ) \ - $(AIO_OBJ) $(MSG_OBJ) $(THREAD_OBJ) \ - $(SVR_OBJ) $(DB_OBJ) $(CODE_OBJ) \ - $(MASTER_OBJ) $(PROCTL_OBJ) $(XML_OBJ) \ - $(JSON_OBJ) $(UTEST_OBJ) -#$(EXP_OBJ) - -########################################################### -INIT_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(INIT_SRC))) -PRIV_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(PRIV_SRC))) -STDLIB_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(STDLIB_SRC))) -NET_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(NET_SRC))) -ENGINE_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(ENGINE_SRC))) -IOCTL_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(IOCTL_SRC))) -AIO_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(AIO_SRC))) -MSG_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(MSG_SRC))) -THREAD_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(THREAD_SRC))) -SVR_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(SVR_SRC))) -DB_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(DB_SRC))) -CODE_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(CODE_SRC))) -MASTER_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(MASTER_SRC))) -PROCTL_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(PROCTL_SRC))) -XML_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(XML_SRC))) -JSON_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(JSON_SRC))) -UTEST_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(UTEST_SRC))) -#EXP_DEF = $(patsubst %.c, $(DEF_PATH_DST)/%.inc, $(notdir $(EXP_SRC))) - -OBJS_DEF = $(INIT_DEF) $(PRIV_DEF) $(STDLIB_DEF) \ - $(NET_DEF) $(ENGINE_DEF) $(IOCTL_DEF) \ - $(AIO_DEF) $(MSG_DEF) $(THREAD_DEF) \ - $(SVR_DEF) $(DB_DEF) $(CODE_DEF) \ - $(MASTER_DEF) $(PROCTL_DEF) $(XML_DEF) \ - $(JSON_DEF) $(UTEST_DEF) - -########################################################### -.PHONY = all static shared acl_master clean clean_lib clean_master rebuild - -STATIC_LIBNAME = lib_acl.a -SHARED_LIBNAME = lib_acl.so - -all: static shared acl_master - -$(shell mkdir -p $(DEF_PATH_DST)) -ifneq ($(MAKECMDGOALS),clean) --include $(OBJS_DEF) -endif - -clean: clean_lib clean_master -rebuild: clean all - -LIB_GCH = StdAfx.h.gch - -########################################################### - -COMPILE = $(CC) $(CFLAGS) -COMPILE_OBJ = @(echo 'building $<'; $(COMPILE) $< -o $@) -CREATE_DEF = @(echo 'creating $@'; rm -f $@; \ - $(COMPILE) -MM $< > $@.$$$$; \ - sed 's,.*.o\( \)*:,$(patsubst %.inc,%.o,$@) $@ :,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$) - -static: depends $(OBJS_DST) - @echo 'creating $(LIB_PATH_DST)/$(STATIC_LIBNAME)' - @$(AR) $(ARFL) $(LIB_PATH_DST)/$(STATIC_LIBNAME) $(OBJS_DST) - @$(RANLIB) $(LIB_PATH_DST)/$(STATIC_LIBNAME) - @echo 'build $(LIB_PATH_DST)/$(STATIC_LIBNAME) ok!' - -#shared_ldflags = -lmysqlclient -lrt -lpthread -ldl -shared_ldflags = -lrt -lpthread -ldl -shared: depends $(OBJS_DST) - @echo '' - @echo 'creating $(SHARED_LIBNAME)' - @if test -n "$(rpath)" && test "$(UNIXTYPE)" = "LINUX"; then \ - echo "building for linux"; \ - $(CC) -shared -o $(rpath)/$(SHARED_LIBNAME) $(OBJS_DST) \ - -L$(rpath) $(shared_ldflags) -Wl,-rpath,$(rpath); \ - echo 'build $(rpath)/$(SHARED_LIBNAME) ok!'; \ - elif test -n "$(rpath)" && test "$(UNIXTYPE)" = "SUNOS5"; then \ - echo "building for sunos5"; \ - $(CC) -shared -o $(rpath)/$(SHARED_LIBNAME) $(OBJS_DST) \ - -L$(rpath) $(shared_ldflags); \ - echo 'build $(rpath)/$(SHARED_LIBNAME) ok!'; \ - else \ - echo 'skip build $(SHARED_LIBNAME); usage: make rpath=xxx'; \ - fi - -depends: $(OBJS_DEF) - -lib_gch: include/StdAfx.h - $(CC) -o include/$(LIB_GCH) -x c-header $(CFLAGS) include/StdAfx.h - -########################################################### - -# init -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/init/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/init/%.c - $(CREATE_DEF) -# private -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/private/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/private/%.c - $(CREATE_DEF) -# stdlib -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/common/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/common/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/iostuff/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/iostuff/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/configure/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/configure/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/filedir/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/filedir/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/string/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/string/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/memory/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/memory/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/debug/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/debug/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/sys/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/sys/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/stdlib/sys/unix/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/stdlib/sys/unix/%.c - $(CREATE_DEF) -# net -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/net/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/net/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/net/listen/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/net/listen/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/net/connect/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/net/connect/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/net/dns/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/net/dns/%.c - $(CREATE_DEF) -# event -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/event/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/event/%.c - $(CREATE_DEF) - -# ioctl -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/ioctl/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/ioctl/%.c - $(CREATE_DEF) - -# aio -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/aio/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/aio/%.c - $(CREATE_DEF) - -# msg -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/msg/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/msg/%.c - $(CREATE_DEF) - -# thread -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/thread/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/thread/%.c - $(CREATE_DEF) - -# svr -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/svr/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/svr/%.c - $(CREATE_DEF) - -# db -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/db/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/db/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/db/mysql/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/db/mysql/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/db/null/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/db/null/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/db/memdb/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/db/memdb/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/db/zdb/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/db/zdb/%.c - $(CREATE_DEF) - -# code -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/code/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/code/%.c - $(CREATE_DEF) - -# master -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/master/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/master/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/master/framework/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/master/framework/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/master/framework/trigger/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/master/framework/trigger/%.c - $(CREATE_DEF) -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/master/template/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/master/template/%.c - $(CREATE_DEF) - -# proctl -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/proctl/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/proctl/%.c - $(CREATE_DEF) - -# xml -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/xml/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/xml/%.c - $(CREATE_DEF) - -# json -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/json/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/json/%.c - $(CREATE_DEF) - -# unit_test -$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/unit_test/%.c - $(COMPILE_OBJ) -$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/unit_test/%.c - $(CREATE_DEF) - -# experiment -#$(OBJ_PATH_DST)/%.o: $(SRC_PATH_SRC)/experiment/%.c -# $(COMPILE_OBJ) -#$(DEF_PATH_DST)/%.inc: $(SRC_PATH_SRC)/experiment/%.c -# $(CREATE_DEF) - -clean_lib: - rm -f $(LIB_PATH_DST)/$(LIB_NAME) - rm -f $(LIB_PATH_DST)/lib_acl.so - rm -f $(OBJS_DST) - rm -f $(OBJS_DEF) - rm -f include/$(LIB_GCH) - -########################################################### - -MASTER = acl_master -MASTER_OBJ_PATH = $(OUT_PATH)/master - -MASTERD_SRC = $(wildcard $(SRC_PATH_SRC)/master/daemon/*.c) -MASTERD_OBJ = $(patsubst %.c, $(MASTER_OBJ_PATH)/%.o, $(notdir $(MASTERD_SRC))) - -# master -acl_master: static $(MASTERD_OBJ) - @echo '' - @echo 'creating acl_master' - @if test -n "$(rpath)"; then \ - $(CC) -o $(MASTER_OBJ_PATH)/$(MASTER) $(MASTERD_OBJ) \ - $(LIB_PATH_DST)/$(LIB_NAME) $(SYSLIB) -Wl,-rpath,$(rpath); \ - else \ - $(CC) -o $(MASTER_OBJ_PATH)/$(MASTER) $(MASTERD_OBJ) \ - $(LIB_PATH_DST)/$(LIB_NAME) $(SYSLIB); \ - fi - @echo 'create acl_master ok!' - -$(MASTER_OBJ_PATH)/%.o: $(SRC_PATH_SRC)/master/daemon/%.c - $(COMPILE_OBJ) - -clean_master: - rm -f $(MASTERD_OBJ) - rm -f $(MASTER_OBJ_PATH)/acl_master - -########################################################### diff --git a/lib_acl_cpp/changes.txt b/lib_acl_cpp/changes.txt index e86c14d7d..3bb996a35 100644 --- a/lib_acl_cpp/changes.txt +++ b/lib_acl_cpp/changes.txt @@ -1,6 +1,9 @@ ޸ʷб ----------------------------------------------------------------------- +461) 2017.1.3 +461.1) feature: gson лģӳԱ޶֧ + 460) 2016.12.31 460.1) bugfix: gson лģ޸ std::map ڶΪ 460.2) feature: gson лģ֧ struct ijԱлԱ diff --git a/lib_acl_cpp/samples/acl_cpp_test/Makefile b/lib_acl_cpp/samples/acl_cpp_test/Makefile new file mode 100644 index 000000000..537f851da --- /dev/null +++ b/lib_acl_cpp/samples/acl_cpp_test/Makefile @@ -0,0 +1,2 @@ +include ../Makefile.in +PROG = test diff --git a/lib_acl_cpp/samples/acl_cpp_test/acl_cpp_test.cpp b/lib_acl_cpp/samples/acl_cpp_test/acl_cpp_test.cpp index 4e0d3b014..41bf7c918 100644 --- a/lib_acl_cpp/samples/acl_cpp_test/acl_cpp_test.cpp +++ b/lib_acl_cpp/samples/acl_cpp_test/acl_cpp_test.cpp @@ -34,7 +34,7 @@ class C : public B private: }; -int main(int argc, char* argv[]) +int main(void) { test_snprintf(); #ifdef WIN32 diff --git a/lib_acl_cpp/samples/acl_cpp_test/stdafx.h b/lib_acl_cpp/samples/acl_cpp_test/stdafx.h index cbfc91595..b55f43eb9 100644 --- a/lib_acl_cpp/samples/acl_cpp_test/stdafx.h +++ b/lib_acl_cpp/samples/acl_cpp_test/stdafx.h @@ -6,6 +6,6 @@ #include -#include +//#include // TODO: ڴ˴óҪĸͷļ diff --git a/lib_acl_cpp/samples/acl_cpp_test/valgrind.sh b/lib_acl_cpp/samples/acl_cpp_test/valgrind.sh new file mode 100644 index 000000000..0b1bb2988 --- /dev/null +++ b/lib_acl_cpp/samples/acl_cpp_test/valgrind.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +valgrind --tool=memcheck --leak-check=yes -v ./test diff --git a/lib_acl_cpp/src/serialize/gsoner.cpp b/lib_acl_cpp/src/serialize/gsoner.cpp index beb9ff3a1..a6cfff368 100644 --- a/lib_acl_cpp/src/serialize/gsoner.cpp +++ b/lib_acl_cpp/src/serialize/gsoner.cpp @@ -233,6 +233,12 @@ gsoner::function_code_t gsoner::gen_pack_code(const object_t &obj) } str += "\n"; + + if (obj.fields_.empty()) + { + str += tab_; + str += "(void) $obj;\n"; + } str += tab_; str += "return $node;\n}"; @@ -320,6 +326,11 @@ gsoner::function_code_t gsoner::gen_unpack_code(const object_t &obj) code.definition_ += *itr; code.definition_ += "\n \n"; } + if (unpack_codes.empty()) + { + code.definition_ += tab_ + "(void) $node;\n"; + code.definition_ += tab_ + "(void) $obj;\n"; + } code.definition_ += tab_ + "return std::make_pair(true,\"\");\n}\n\n"; code.definition_ptr_ += prefix + obj.name_ + " *$obj)"; @@ -610,11 +621,12 @@ bool gsoner::check_comment() if (commemt.find("Gson@rename:") != std::string::npos) { std::size_t pos = commemt.find("Gson@rename:") + strlen("Gson@rename:"); - newname_ = commemt.substr( pos ,commemt.size() - pos); - if (newname_.back() == '\n') - newname_.pop_back(); - if (newname_.back() == '\r') - newname_.pop_back(); + std::size_t n = 0; + if (commemt[commemt.size() - 1] == '\n') + n++; + if (commemt[commemt.size() - 2] == '\r') + n++; + newname_ = commemt.substr( pos ,commemt.size() - pos - n); if (newname_.empty()) { std::cout << "Gson@rename:{} error, new name empty" << std::endl; @@ -841,7 +853,7 @@ bool gsoner::check_function() if (status_ != e_struct_begin) return false; - auto function_begin = pos_; + int function_begin = pos_; while (function_begin > 1 && (codes_[function_begin-1] == '\r' || codes_[function_begin-1] == '\n'|| @@ -914,7 +926,7 @@ bool gsoner::check_function() lines.push_back(codes_[pos_]); pos_++; } - auto function_end = pos_; + int function_end = pos_; std::cout <