diff --git a/.gitignore b/.gitignore
index 62f7cf4b0..157e82c9a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,120 @@
# Compiled Static libraries
*.lai
*.la
+*.lib
+*.a
+acl_cpp_vc2015.VC.VC.opendb
+acl_cpp_vc2015.VC.db
+app/gson/debug/
+app/gson/gson
+app/gson/gson.vcxproj.user
+app/master_dispatch/manager/Debug/
+app/redis_tools/redis_builder/Debug/
+app/wizard/Debug/
+app/wizard_demo/httpd_download/Debug/
+app/wizard_demo/httpd_upload/Debug/
+ipch/
+lib_acl/Debug/
+lib_acl/StdAfx.h.gch
+lib_acl/debug/
+lib_acl/master/acl_master
+lib_acl/samples/dgate/Debug/
+lib_acl/samples/mmap_string/Debug/
+lib_acl/samples/winaio/Debug/
+lib_acl/samples/zdb/Debug/
+lib_acl_cpp/Debug/
+lib_acl_cpp/lib_acl_cpp_vc2015.vcxproj.user
+lib_acl_cpp/samples/aio/aio_client/Debug/
+lib_acl_cpp/samples/aio/aio_client_ssl/Debug/
+lib_acl_cpp/samples/aio/aio_connect/Debug/
+lib_acl_cpp/samples/aio/aio_dns/Debug/
+lib_acl_cpp/samples/aio/aio_ipc/Debug/
+lib_acl_cpp/samples/aio/aio_server/Debug/
+lib_acl_cpp/samples/aio/aio_server_ssl/Debug/
+lib_acl_cpp/samples/aio/pkg_client/Debug/
+lib_acl_cpp/samples/aio/pkg_server/Debug/
+lib_acl_cpp/samples/cgi/Debug/
+lib_acl_cpp/samples/cgi_upload/Debug/
+lib_acl_cpp/samples/connect_manager/Debug/
+lib_acl_cpp/samples/db/mysql_manager/Debug/
+lib_acl_cpp/samples/db/mysql_pool/Debug/
+lib_acl_cpp/samples/db/mysql_query/Debug/
+lib_acl_cpp/samples/db/query/Debug/
+lib_acl_cpp/samples/dbuf/dbuf1/Debug/
+lib_acl_cpp/samples/dbuf/dbuf2/Debug/
+lib_acl_cpp/samples/dbuf/dbuf3/Debug/
+lib_acl_cpp/samples/dbuf/dbuf4/Debug/
+lib_acl_cpp/samples/dircmp/Debug/
+lib_acl_cpp/samples/dircopy/Debug/
+lib_acl_cpp/samples/disque/disque_client/Debug/
+lib_acl_cpp/samples/disque/disque_cluster/Debug/
+lib_acl_cpp/samples/disque/disque_manager/Debug/
+lib_acl_cpp/samples/disque/disque_pool/Debug/
+lib_acl_cpp/samples/final_class/Debug/
+lib_acl_cpp/samples/flock/Debug/
+lib_acl_cpp/samples/fstream/Debug/
+lib_acl_cpp/samples/http_client/Debug/
+lib_acl_cpp/samples/http_request_manager/Debug/
+lib_acl_cpp/samples/http_request_pool/Debug/
+lib_acl_cpp/samples/http_servlet2/Debug/
+lib_acl_cpp/samples/json/json0/Debug/
+lib_acl_cpp/samples/json/json1/Debug/
+lib_acl_cpp/samples/json/json10/Debug/
+lib_acl_cpp/samples/json/json11/Debug/
+lib_acl_cpp/samples/json/json12/Debug/
+lib_acl_cpp/samples/json/json2/Debug/
+lib_acl_cpp/samples/json/json3/Debug/
+lib_acl_cpp/samples/json/json4/Debug/
+lib_acl_cpp/samples/json/json5/Debug/
+lib_acl_cpp/samples/json/json6/Debug/
+lib_acl_cpp/samples/json/json7/Debug/
+lib_acl_cpp/samples/json/json8/Debug/
+lib_acl_cpp/samples/json/json9/Debug/
+lib_acl_cpp/samples/master/master_aio/Debug/
+lib_acl_cpp/samples/master/master_threads/Debug/
+lib_acl_cpp/samples/master/master_udp/Debug/
+lib_acl_cpp/samples/master_aio_proxy/Debug/
+lib_acl_cpp/samples/md5/Debug/
+lib_acl_cpp/samples/memcache_pool/Debug/
+lib_acl_cpp/samples/mime/mail_build/Debug/
+lib_acl_cpp/samples/mime/mime/Debug/
+lib_acl_cpp/samples/mime/mime_base64/Debug/
+lib_acl_cpp/samples/mime/mime_qp/Debug/
+lib_acl_cpp/samples/redis/redis/Debug/
+lib_acl_cpp/samples/redis/redis_client_cluster/Debug/
+lib_acl_cpp/samples/redis/redis_client_cluster2/Debug/
+lib_acl_cpp/samples/redis/redis_cluster/Debug/
+lib_acl_cpp/samples/redis/redis_connection/Debug/
+lib_acl_cpp/samples/redis/redis_geo/Debug/
+lib_acl_cpp/samples/redis/redis_hash/Debug/
+lib_acl_cpp/samples/redis/redis_hyperloglog/Debug/
+lib_acl_cpp/samples/redis/redis_key/Debug/
+lib_acl_cpp/samples/redis/redis_list/Debug/
+lib_acl_cpp/samples/redis/redis_manager/Debug/
+lib_acl_cpp/samples/redis/redis_pool/Debug/
+lib_acl_cpp/samples/redis/redis_pubsub/Debug/
+lib_acl_cpp/samples/redis/redis_set/Debug/
+lib_acl_cpp/samples/redis/redis_string/Debug/
+lib_acl_cpp/samples/redis/redis_trans/Debug/
+lib_acl_cpp/samples/redis/redis_zset/Debug/
+lib_acl_cpp/samples/redis/redis_zset_pool/Debug/
+lib_acl_cpp/samples/rfc2047/Debug/
+lib_acl_cpp/samples/scan_dir/Debug/
+lib_acl_cpp/samples/singleton/Debug/
+lib_acl_cpp/samples/smtp_client/Debug/
+lib_acl_cpp/samples/socket_stream/Debug/
+lib_acl_cpp/samples/ssl/https_proxy/Debug/
+lib_acl_cpp/samples/ssl/ssl_client/Debug/
+lib_acl_cpp/samples/ssl/ssl_server/Debug/
+lib_acl_cpp/samples/string/blank_line/Debug/
+lib_acl_cpp/samples/string/string1/Debug/
+lib_acl_cpp/samples/string/string2/Debug/
+lib_acl_cpp/samples/string/string3/Debug/
+lib_acl_cpp/samples/thread/Debug/
+lib_acl_cpp/samples/thread_pool/Debug/
+lib_acl_cpp/samples/xml/xml1/Debug/
+lib_acl_cpp/samples/xml/xml2/Debug/
+lib_acl_cpp/src/acl_stdafx.hpp.gch
+lib_protocol/Debug/
+lib_protocol/debug/
+lib_rpc/Debug/
diff --git a/acl_cpp_vc2015.sln b/acl_cpp_vc2015.sln
index 1edeb6b6a..c971bc649 100644
--- a/acl_cpp_vc2015.sln
+++ b/acl_cpp_vc2015.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.23107.0
+VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_acl", "lib_acl\lib_acl_vc2015.vcxproj", "{B40213C2-507C-4C7F-A6E1-B850C9BDC27B}"
EndProject
@@ -741,6 +741,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbuf4", "lib_acl_cpp\sample
{FE724EF7-3763-4E78-BDF5-BCBC075719FD} = {FE724EF7-3763-4E78-BDF5-BCBC075719FD}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gson", "app\gson\gson.vcxproj", "{D15D860E-5012-471A-83D4-81A1251BF88D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demo", "app\gson\demo\demo.vcxproj", "{C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Mixed Platforms = Debug|Mixed Platforms
@@ -3570,6 +3574,66 @@ Global
{84BEC37E-F033-4B67-B05A-3166D1D6C72E}.Template|Win32.Build.0 = DebugDll|Win32
{84BEC37E-F033-4B67-B05A-3166D1D6C72E}.Template|x64.ActiveCfg = DebugDll|x64
{84BEC37E-F033-4B67-B05A-3166D1D6C72E}.Template|x64.Build.0 = DebugDll|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|Win32.Build.0 = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|x64.ActiveCfg = Debug|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Debug|x64.Build.0 = Debug|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Win32.ActiveCfg = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|Win32.Build.0 = Debug|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|x64.ActiveCfg = Debug|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.DebugDll|x64.Build.0 = Debug|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Win32.ActiveCfg = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Release|Win32.Build.0 = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Release|x64.ActiveCfg = Release|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Release|x64.Build.0 = Release|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Win32.ActiveCfg = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|Win32.Build.0 = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|x64.ActiveCfg = Release|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Releasedll|x64.Build.0 = Release|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Mixed Platforms.ActiveCfg = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Mixed Platforms.Build.0 = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Win32.ActiveCfg = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Template|Win32.Build.0 = Release|Win32
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Template|x64.ActiveCfg = Release|x64
+ {D15D860E-5012-471A-83D4-81A1251BF88D}.Template|x64.Build.0 = Release|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Debug|Win32.Build.0 = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Debug|x64.ActiveCfg = Debug|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Debug|x64.Build.0 = Debug|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.DebugDll|Mixed Platforms.ActiveCfg = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.DebugDll|Mixed Platforms.Build.0 = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.DebugDll|Win32.ActiveCfg = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.DebugDll|Win32.Build.0 = Debug|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.DebugDll|x64.ActiveCfg = Debug|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.DebugDll|x64.Build.0 = Debug|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Release|Win32.ActiveCfg = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Release|Win32.Build.0 = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Release|x64.ActiveCfg = Release|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Release|x64.Build.0 = Release|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Releasedll|Mixed Platforms.ActiveCfg = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Releasedll|Mixed Platforms.Build.0 = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Releasedll|Win32.ActiveCfg = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Releasedll|Win32.Build.0 = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Releasedll|x64.ActiveCfg = Release|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Releasedll|x64.Build.0 = Release|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Template|Mixed Platforms.ActiveCfg = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Template|Mixed Platforms.Build.0 = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Template|Win32.ActiveCfg = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Template|Win32.Build.0 = Release|Win32
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Template|x64.ActiveCfg = Release|x64
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}.Template|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -3696,5 +3760,7 @@ Global
{4176134C-2A0A-43BD-BC25-9A40F73E03B2} = {8BA25233-2314-40FA-865B-FDE152CA1D63}
{D2EA4AA9-CC7C-4B08-9941-920C2CCDF00A} = {8BA25233-2314-40FA-865B-FDE152CA1D63}
{84BEC37E-F033-4B67-B05A-3166D1D6C72E} = {8BA25233-2314-40FA-865B-FDE152CA1D63}
+ {D15D860E-5012-471A-83D4-81A1251BF88D} = {3CC8D45A-8E3F-4F5C-A7DF-4D8027E4EA9C}
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8} = {3CC8D45A-8E3F-4F5C-A7DF-4D8027E4EA9C}
EndGlobalSection
EndGlobal
diff --git a/app/gson/demo/demo.vcxproj b/app/gson/demo/demo.vcxproj
new file mode 100644
index 000000000..4694962e9
--- /dev/null
+++ b/app/gson/demo/demo.vcxproj
@@ -0,0 +1,131 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ {C4D52720-ED5E-45E7-81EA-CC3ABC8053F8}
+ demo
+ 8.1
+
+
+
+ Application
+ true
+ v140
+ MultiByte
+
+
+ Application
+ false
+ v140
+ true
+ MultiByte
+
+
+ Application
+ true
+ v140
+ MultiByte
+
+
+ Application
+ false
+ v140
+ true
+ MultiByte
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level3
+ Disabled
+ true
+ $(SolutionDir)lib_acl_cpp\include;$(SolutionDir)lib_acl\include;./include;%(AdditionalIncludeDirectories)
+ MultiThreadedDebug
+
+
+ lib_acl_vc2015d.lib;lib_acl_cpp_vc2015d.lib;%(AdditionalDependencies)
+ $(SolutionDir)\lib_acl_cpp;$(SolutionDir)\lib_acl;%(AdditionalLibraryDirectories)
+
+
+
+
+ Level3
+ Disabled
+ true
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+
+
+ true
+ true
+
+
+
+
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/gson/demo/demo.vcxproj.filters b/app/gson/demo/demo.vcxproj.filters
new file mode 100644
index 000000000..647004233
--- /dev/null
+++ b/app/gson/demo/demo.vcxproj.filters
@@ -0,0 +1,39 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ 头文件
+
+
+ 头文件
+
+
+ 头文件
+
+
+
+
+ 源文件
+
+
+ 源文件
+
+
+ 源文件
+
+
+
\ No newline at end of file
diff --git a/app/gson/demo/demo.vcxproj.user b/app/gson/demo/demo.vcxproj.user
new file mode 100644
index 000000000..6fb136bf0
--- /dev/null
+++ b/app/gson/demo/demo.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/gson/demo/gson.cpp b/app/gson/demo/gson.cpp
new file mode 100644
index 000000000..93c6f4581
--- /dev/null
+++ b/app/gson/demo/gson.cpp
@@ -0,0 +1,321 @@
+#include "stdafx.h"
+#include "struct.h"
+#include "gson.h"
+#include "acl_cpp/stdlib/gson_helper.ipp"
+namespace acl
+{
+ acl::json_node& gson (acl::json & json, const base &obj)
+ {
+ acl::json_node &node = json.create_node();
+
+ if (check_nullptr(obj.string))
+ node.add_null("string");
+ else
+ node.add_text("string", acl::get_value(obj.string));
+
+ if (check_nullptr(obj.string_ptr))
+ node.add_null("string_ptr");
+ else
+ node.add_text("string_ptr", acl::get_value(obj.string_ptr));
+
+ if (check_nullptr(obj.a))
+ node.add_null("a");
+ else
+ node.add_number("a", acl::get_value(obj.a));
+
+ if (check_nullptr(obj.a_ptr))
+ node.add_null("a_ptr");
+ else
+ node.add_number("a_ptr", acl::get_value(obj.a_ptr));
+
+ if (check_nullptr(obj.b))
+ node.add_null("b");
+ else
+ node.add_number("b", acl::get_value(obj.b));
+
+ if (check_nullptr(obj.b_ptr))
+ node.add_null("b_ptr");
+ else
+ node.add_number("b_ptr", acl::get_value(obj.b_ptr));
+
+ if (check_nullptr(obj.c))
+ node.add_null("c");
+ else
+ node.add_number("c", acl::get_value(obj.c));
+
+ if (check_nullptr(obj.c_ptr))
+ node.add_null("c_ptr");
+ else
+ node.add_number("c_ptr", acl::get_value(obj.c_ptr));
+
+ if (check_nullptr(obj.d))
+ node.add_null("d");
+ else
+ node.add_number("d", acl::get_value(obj.d));
+
+ if (check_nullptr(obj.d_ptr))
+ node.add_null("d_ptr");
+ else
+ node.add_number("d_ptr", acl::get_value(obj.d_ptr));
+
+ if (check_nullptr(obj.e))
+ node.add_null("e");
+ else
+ node.add_number("e", acl::get_value(obj.e));
+
+ if (check_nullptr(obj.e_ptr))
+ node.add_null("e_ptr");
+ else
+ node.add_number("e_ptr", acl::get_value(obj.e_ptr));
+
+ if (check_nullptr(obj.f))
+ node.add_null("f");
+ else
+ node.add_number("f", acl::get_value(obj.f));
+
+ if (check_nullptr(obj.f_ptr))
+ node.add_null("f_ptr");
+ else
+ node.add_number("f_ptr", acl::get_value(obj.f_ptr));
+
+ if (check_nullptr(obj.g))
+ node.add_null("g");
+ else
+ node.add_number("g", acl::get_value(obj.g));
+
+ if (check_nullptr(obj.g_ptr))
+ node.add_null("g_ptr");
+ else
+ node.add_number("g_ptr", acl::get_value(obj.g_ptr));
+
+ if (check_nullptr(obj.acl_string))
+ node.add_null("acl_string");
+ else
+ node.add_text("acl_string", acl::get_value(obj.acl_string));
+
+ if (check_nullptr(obj.acl_string_ptr))
+ node.add_null("acl_string_ptr");
+ else
+ node.add_text("acl_string_ptr", acl::get_value(obj.acl_string_ptr));
+
+ if (check_nullptr(obj.h))
+ node.add_null("h");
+ else
+ node.add_double("h", acl::get_value(obj.h));
+
+ if (check_nullptr(obj.h_ptr))
+ node.add_null("h_ptr");
+ else
+ node.add_double("h_ptr", acl::get_value(obj.h_ptr));
+
+ if (check_nullptr(obj.i))
+ node.add_null("i");
+ else
+ node.add_double("i", acl::get_value(obj.i));
+
+ if (check_nullptr(obj.i_ptr))
+ node.add_null("i_ptr");
+ else
+ node.add_double("i_ptr", acl::get_value(obj.i_ptr));
+
+
+ return node;
+ }
+ acl::json_node& gson (acl::json & json, const base*obj)
+ {
+ return gson (json, *obj);
+ }
+
+
+ acl::string gson(const base &obj)
+ {
+ acl::json json;
+ acl::json_node &node = acl::gson (json, obj);
+ return node.to_string ();
+ }
+
+
+ std::pair gson(acl::json_node &node, base &obj)
+ {
+ acl::json_node *string = node["string"];
+ acl::json_node *string_ptr = node["string_ptr"];
+ acl::json_node *a = node["a"];
+ acl::json_node *a_ptr = node["a_ptr"];
+ acl::json_node *b = node["b"];
+ acl::json_node *b_ptr = node["b_ptr"];
+ acl::json_node *c = node["c"];
+ acl::json_node *c_ptr = node["c_ptr"];
+ acl::json_node *d = node["d"];
+ acl::json_node *d_ptr = node["d_ptr"];
+ acl::json_node *e = node["e"];
+ acl::json_node *e_ptr = node["e_ptr"];
+ acl::json_node *f = node["f"];
+ acl::json_node *f_ptr = node["f_ptr"];
+ acl::json_node *g = node["g"];
+ acl::json_node *g_ptr = node["g_ptr"];
+ acl::json_node *acl_string = node["acl_string"];
+ acl::json_node *acl_string_ptr = node["acl_string_ptr"];
+ acl::json_node *h = node["h"];
+ acl::json_node *h_ptr = node["h_ptr"];
+ acl::json_node *i = node["i"];
+ acl::json_node *i_ptr = node["i_ptr"];
+ std::pair result;
+
+ if(string)
+ gson(*string,&obj.string);
+
+
+ if(!string_ptr ||!(result = gson(*string_ptr,&obj.string_ptr), result.first))
+ return std::make_pair(false,"required [base.string_ptr] failed:{"+result.second+"}");
+
+ if(!a ||!(result = gson(*a,&obj.a), result.first))
+ return std::make_pair(false,"required [base.a] failed:{"+result.second+"}");
+
+ if(!a_ptr ||!(result = gson(*a_ptr,&obj.a_ptr), result.first))
+ return std::make_pair(false,"required [base.a_ptr] failed:{"+result.second+"}");
+
+ if(!b ||!(result = gson(*b,&obj.b), result.first))
+ return std::make_pair(false,"required [base.b] failed:{"+result.second+"}");
+
+ if(!b_ptr ||!(result = gson(*b_ptr,&obj.b_ptr), result.first))
+ return std::make_pair(false,"required [base.b_ptr] failed:{"+result.second+"}");
+
+ if(!c ||!(result = gson(*c,&obj.c), result.first))
+ return std::make_pair(false,"required [base.c] failed:{"+result.second+"}");
+
+ if(!c_ptr ||!(result = gson(*c_ptr,&obj.c_ptr), result.first))
+ return std::make_pair(false,"required [base.c_ptr] failed:{"+result.second+"}");
+
+ if(!d ||!(result = gson(*d,&obj.d), result.first))
+ return std::make_pair(false,"required [base.d] failed:{"+result.second+"}");
+
+ if(!d_ptr ||!(result = gson(*d_ptr,&obj.d_ptr), result.first))
+ return std::make_pair(false,"required [base.d_ptr] failed:{"+result.second+"}");
+
+ if(!e ||!(result = gson(*e,&obj.e), result.first))
+ return std::make_pair(false,"required [base.e] failed:{"+result.second+"}");
+
+ if(!e_ptr ||!(result = gson(*e_ptr,&obj.e_ptr), result.first))
+ return std::make_pair(false,"required [base.e_ptr] failed:{"+result.second+"}");
+
+ if(!f ||!(result = gson(*f,&obj.f), result.first))
+ return std::make_pair(false,"required [base.f] failed:{"+result.second+"}");
+
+ if(!f_ptr ||!(result = gson(*f_ptr,&obj.f_ptr), result.first))
+ return std::make_pair(false,"required [base.f_ptr] failed:{"+result.second+"}");
+
+ if(!g ||!(result = gson(*g,&obj.g), result.first))
+ return std::make_pair(false,"required [base.g] failed:{"+result.second+"}");
+
+ if(!g_ptr ||!(result = gson(*g_ptr,&obj.g_ptr), result.first))
+ return std::make_pair(false,"required [base.g_ptr] failed:{"+result.second+"}");
+
+ if(!acl_string ||!(result = gson(*acl_string,&obj.acl_string), result.first))
+ return std::make_pair(false,"required [base.acl_string] failed:{"+result.second+"}");
+
+ if(!acl_string_ptr ||!(result = gson(*acl_string_ptr,&obj.acl_string_ptr), result.first))
+ return std::make_pair(false,"required [base.acl_string_ptr] failed:{"+result.second+"}");
+
+ if(!h ||!(result = gson(*h,&obj.h), result.first))
+ return std::make_pair(false,"required [base.h] failed:{"+result.second+"}");
+
+ if(!h_ptr ||!(result = gson(*h_ptr,&obj.h_ptr), result.first))
+ return std::make_pair(false,"required [base.h_ptr] failed:{"+result.second+"}");
+
+ if(!i ||!(result = gson(*i,&obj.i), result.first))
+ return std::make_pair(false,"required [base.i] failed:{"+result.second+"}");
+
+ if(!i_ptr ||!(result = gson(*i_ptr,&obj.i_ptr), result.first))
+ return std::make_pair(false,"required [base.i_ptr] failed:{"+result.second+"}");
+
+ return std::make_pair(true,"");
+ }
+
+
+ std::pair gson(acl::json_node &node, base *obj)
+ {
+ return gson(node, *obj);
+ }
+
+
+ acl::json_node& gson (acl::json & json, const list1 &obj)
+ {
+ acl::json_node &node = json.create_node();
+
+ if (check_nullptr(obj.b))
+ node.add_null("b");
+ else
+ node.add_child("b", acl::gson(json,obj.b));
+
+ if (check_nullptr(obj.b_ptr))
+ node.add_null("b_ptr");
+ else
+ node.add_child("b_ptr", acl::gson(json,obj.b_ptr));
+
+ if (check_nullptr(obj.bases_list))
+ node.add_null("bases_list");
+ else
+ node.add_child("bases_list", acl::gson(json,obj.bases_list));
+
+ if (check_nullptr(obj.bases_list_ptr))
+ node.add_null("bases_list_ptr");
+ else
+ node.add_child("bases_list_ptr", acl::gson(json,obj.bases_list_ptr));
+
+ if (check_nullptr(obj.bases_ptr_list_ptr))
+ node.add_null("bases_ptr_list_ptr");
+ else
+ node.add_child("bases_ptr_list_ptr", acl::gson(json,obj.bases_ptr_list_ptr));
+
+
+ return node;
+ }
+ acl::json_node& gson (acl::json & json, const list1*obj)
+ {
+ return gson (json, *obj);
+ }
+
+
+ acl::string gson(const list1 &obj)
+ {
+ acl::json json;
+ acl::json_node &node = acl::gson (json, obj);
+ return node.to_string ();
+ }
+
+
+ std::pair gson(acl::json_node &node, list1 &obj)
+ {
+ acl::json_node *b = node["b"];
+ acl::json_node *b_ptr = node["b_ptr"];
+ acl::json_node *bases_list = node["bases_list"];
+ acl::json_node *bases_list_ptr = node["bases_list_ptr"];
+ acl::json_node *bases_ptr_list_ptr = node["bases_ptr_list_ptr"];
+ std::pair result;
+
+ if(!b ||!b->get_obj()||!(result = gson(*b->get_obj(), &obj.b), result.first))
+ return std::make_pair(false, "required [list1.b] failed:{"+result.second+"}");
+
+ if(!b_ptr ||!b_ptr->get_obj()||!(result = gson(*b_ptr->get_obj(), &obj.b_ptr), result.first))
+ return std::make_pair(false, "required [list1.b_ptr] failed:{"+result.second+"}");
+
+ if(!bases_list ||!bases_list->get_obj()||!(result = gson(*bases_list->get_obj(), &obj.bases_list), result.first))
+ return std::make_pair(false, "required [list1.bases_list] failed:{"+result.second+"}");
+
+ if(!bases_list_ptr ||!bases_list_ptr->get_obj()||!(result = gson(*bases_list_ptr->get_obj(), &obj.bases_list_ptr), result.first))
+ return std::make_pair(false, "required [list1.bases_list_ptr] failed:{"+result.second+"}");
+
+ if(!bases_ptr_list_ptr ||!bases_ptr_list_ptr->get_obj()||!(result = gson(*bases_ptr_list_ptr->get_obj(), &obj.bases_ptr_list_ptr), result.first))
+ return std::make_pair(false, "required [list1.bases_ptr_list_ptr] failed:{"+result.second+"}");
+
+ return std::make_pair(true,"");
+ }
+
+
+ std::pair gson(acl::json_node &node, list1 *obj)
+ {
+ return gson(node, *obj);
+ }
+
+
+}///end of acl.
\ No newline at end of file
diff --git a/app/gson/demo/gson.h b/app/gson/demo/gson.h
new file mode 100644
index 000000000..ba6bba857
--- /dev/null
+++ b/app/gson/demo/gson.h
@@ -0,0 +1,15 @@
+namespace acl
+{
+ //base
+ acl::string gson(const base &obj);
+ acl::json_node& gson (acl::json & json, const base &obj);
+ acl::json_node& gson (acl::json & json, const base *obj);
+ std::pair gson(acl::json_node &node, base &obj);
+ std::pair gson(acl::json_node &node, base *obj);
+ //list1
+ acl::string gson(const list1 &obj);
+ acl::json_node& gson (acl::json & json, const list1 &obj);
+ acl::json_node& gson (acl::json & json, const list1 *obj);
+ std::pair gson(acl::json_node &node, list1 &obj);
+ std::pair gson(acl::json_node &node, list1 *obj);
+}///end of acl.
\ No newline at end of file
diff --git a/app/gson/demo/main.cpp b/app/gson/demo/main.cpp
index ecbfcc399..f6d9fcc89 100644
--- a/app/gson/demo/main.cpp
+++ b/app/gson/demo/main.cpp
@@ -15,7 +15,7 @@ void test_base()
b.acl_string = "a";
b.acl_string_ptr = new acl::string("a");
b.string = "b";
- b.string_ptr = new std::string("b");
+ b.string_ptr = 0;
b.b = 2;
b.b_ptr = new unsigned int( 2);
b.c = 3;
@@ -40,8 +40,10 @@ void test_base()
obj.bases_list_ptr = new std::list;
obj.bases_list_ptr->push_back(b);
obj.bases_ptr_list_ptr = new std::list;
- obj.bases_ptr_list_ptr->push_back(new base(b));
-
+ obj.bases_ptr_list_ptr->push_back(nullptr);
+ obj.bases_ptr_list_ptr->push_back(nullptr);
+ obj.bases_ptr_list_ptr->push_back(nullptr);
+ obj.bases_ptr_list_ptr->push_back(nullptr);
acl::json json;
acl::json_node &node = acl::gson(json, obj);
printf("%s\n", node.to_string().c_str());
@@ -54,38 +56,26 @@ void test_base()
std::pair ret = acl::gson(json2.get_root(), obj2);
if(ret.first == false)
printf("%s\n",ret.second.c_str());
-
- acl::json json3;
- acl::json_node &node3 = acl::gson(json3, obj);
- printf("%s\n", node3.to_string().c_str());
+ else
+ {
+ acl::json json3;
+ acl::json_node &node3 = acl::gson(json3, obj2);
+ printf("%s\n", node3.to_string().c_str());
+ }
+
}
-void test02()
-{
- acl::gsoner gr;
- gr.read_file("struct2.h");
- gr.parse_code();
-}
-
-void test04()
+void genfile()
{
acl::gsoner gr;
- gr.read_multi_file({"struct.h" });
+ gr.read_file("struct.h");
gr.parse_code();
gr.gen_gson();
}
int main(void)
{
- //test_vector();
test_base();
- return 0;
- std::string str = "std::string";
- std::string sub = str.substr(str.find("::"));
- printf("%s",sub.c_str());
getchar();
- //test01();
- return 0;
- printf("enter any key to exit\r\n");
return 0;
}
diff --git a/app/gson/demo/stdafx.h b/app/gson/demo/stdafx.h
index eb2ba8f57..49b78efd3 100644
--- a/app/gson/demo/stdafx.h
+++ b/app/gson/demo/stdafx.h
@@ -11,5 +11,4 @@
// TODO: ڴ˴óҪĸͷļ
#include "lib_acl.h"
-#include "acl_cpp/lib_acl.hpp"
-#include "lib_protocol.h"
+#include "acl_cpp/lib_acl.hpp"
\ No newline at end of file
diff --git a/app/gson/gson.vcxproj b/app/gson/gson.vcxproj
index 967ca53c6..8d9e5cff4 100644
--- a/app/gson/gson.vcxproj
+++ b/app/gson/gson.vcxproj
@@ -80,6 +80,7 @@
lib_acl_vc2015d.lib;lib_acl_cpp_vc2015d.lib;%(AdditionalDependencies)
+ $(SolutionDir)lib_acl_cpp;$(SolutionDir)lib_acl;%(AdditionalLibraryDirectories)
@@ -122,7 +123,12 @@
+
+
+ {6ec1f44e-6a6a-48e9-b699-d7e89b63c8dc}
+
+
-
+
\ No newline at end of file
diff --git a/app/gson/src/stdafx.h b/app/gson/src/stdafx.h
deleted file mode 100644
index eb2ba8f57..000000000
--- a/app/gson/src/stdafx.h
+++ /dev/null
@@ -1,15 +0,0 @@
-// stdafx.h : ϵͳļİļ
-// dzõĵĿضİļ
-//
-
-#pragma once
-
-
-//#include
-//#include
-
-// TODO: ڴ˴óҪĸͷļ
-
-#include "lib_acl.h"
-#include "acl_cpp/lib_acl.hpp"
-#include "lib_protocol.h"
diff --git a/lib_acl_cpp/include/acl_cpp/stdlib/gson_helper.ipp b/lib_acl_cpp/include/acl_cpp/stdlib/gson_helper.ipp
index 51ac9ac23..293e11f8a 100644
--- a/lib_acl_cpp/include/acl_cpp/stdlib/gson_helper.ipp
+++ b/lib_acl_cpp/include/acl_cpp/stdlib/gson_helper.ipp
@@ -193,6 +193,22 @@ struct is_object :_Is_object<
>
{
};
+//
+template
+typename std::enable_if::value,bool>::type
+static inline check_nullptr(T&)
+{
+ return false;
+}
+
+template
+typename std::enable_if::value, bool>::type
+static inline check_nullptr(T *t)
+{
+ if (t == nullptr)
+ return true;
+ return false;
+}
//acl::string ,std::string
template
@@ -267,14 +283,20 @@ template
typename std::enable_if::value , void>::type
static inline add_item(acl::json &json, acl::json_node &node, const T &obj)
{
- node.add_child(gson(json, obj));
+ if (check_nullptr(obj))
+ node.add_array_null();
+ else
+ node.add_child(gson(json, obj));
}
template
typename std::enable_if::value , void>::type
static inline add_item(acl::json &json,acl::json_node &node, const T *obj)
{
- return add_item(json, node, *obj);
+ if (check_nullptr(obj))
+ node.add_array_null();
+ else
+ add_item(json, node, *obj);
}
// number
@@ -282,14 +304,20 @@ template
typename std::enable_if::value, void>::type
static inline add_item(acl::json &, acl::json_node &node, T value)
{
- node.add_array_number(get_value(value));
+ if (check_nullptr(value))
+ node.add_array_null();
+ else
+ node.add_array_number(get_value(value));
}
template
typename std::enable_if::value, void>::type
static inline add_item(acl::json &, acl::json_node &node, T *value)
{
- node.add_array_number(get_value(value));
+ if (check_nullptr(value))
+ node.add_array_null();
+ else
+ node.add_array_number(get_value(value));
}
template
@@ -297,7 +325,10 @@ typename std::enable_if::type>::value, void>::type
static inline add_item(acl::json &, acl::json_node &node, T value)
{
- node.add_array_double(get_value(value));
+ if (check_nullptr(value))
+ node.add_array_null();
+ else
+ node.add_array_double(get_value(value));
}
//bool
@@ -305,7 +336,10 @@ template
typename std::enable_if::value, void>::type
static inline add_item(acl::json &, acl::json_node &node, T value)
{
- node.add_array_bool(get_value(value));
+ if (check_nullptr(value))
+ node.add_array_null();
+ else
+ node.add_array_bool(get_value(value));
}
template
@@ -349,9 +383,6 @@ static inline acl::json_node &gson(acl::json &json, const std::vector &object
template
static inline acl::json_node &gson(acl::json &json, const std::vector *objects)
{
- if(!objects)
- // {'a':[]} for empty vector.
- return json.create_array();
return gson(json, *objects);
}
@@ -364,11 +395,16 @@ static inline gson(acl::json &json, const std::map &objects)
for(typename std::map::const_iterator itr = objects.begin();
itr != objects.end(); ++itr)
{
- node.add_child(
- json.create_node().add_number(
- get_value(itr->first),
- get_value(itr->second))
- );
+ const char *tag = get_value(itr->first);
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_number(tag, item));
+ }
}
return node;
}
@@ -382,11 +418,16 @@ static inline gson(acl::json &json, const std::map *objects)
for(typename std::map::const_iterator itr = objects->begin();
itr != objects->end(); ++itr)
{
- node.add_child(
- json.create_node().add_number(
- get_value(itr->first),
- get_value(itr->second))
- );
+ const char *tag = get_value(itr->first);
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_number(tag, item));
+ }
}
return node;
}
@@ -400,11 +441,16 @@ static inline gson(acl::json &json, const std::map &objects)
for(typename std::map::const_iterator itr = objects.begin();
itr != objects.end(); ++itr)
{
- node.add_child(
- json.create_node().add_double(
- get_value(itr->first),
- get_value(itr->second))
- );
+ const char *tag = get_value(itr->first);
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_double(tag, item));
+ }
}
return node;
}
@@ -417,11 +463,16 @@ static inline gson(acl::json &json, const std::map *objects)
for(typename std::map::const_iterator itr = objects->begin();
itr != objects->end(); ++itr)
{
- node.add_child(
- json.create_node().add_double(
- get_value(itr->first),
- get_value(itr->second))
- );
+ const char *tag = get_value(itr->first);
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_double(tag, item));
+ }
}
return node;
}
@@ -435,11 +486,16 @@ static inline gson(acl::json &json, const std::map &objects)
for(typename std::map::const_iterator itr = objects;
itr != objects.end(); ++itr)
{
- node.add_child(
- json.create_node().add_bool(
- get_value(itr->first),
- get_value(itr->second))
- );
+ const char *tag = get_value(itr->first);
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_bool(tag, item));
+ }
}
return node;
}
@@ -447,17 +503,22 @@ static inline gson(acl::json &json, const std::map &objects)
template
typename std::enable_if::value ||
is_char_ptr::value, acl::json_node &>::type
-static inline gson(acl::json &json, std::map objects)
+static inline gson(acl::json &json, const std::map & objects)
{
acl::json_node &node = json.create_array();
- for(typename std::map::iterator itr = objects.begin();
+ for(typename std::map::const_iterator itr = objects.begin();
itr != objects.end(); itr++)
{
- node.add_child(
- json.create_node().add_text(
- get_value(itr->first),
- get_value(itr->second))
- );
+ const char *tag = get_value(itr->first);
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_text(tag, item));
+ }
}
return node;
}
@@ -471,8 +532,16 @@ static inline gson(acl::json &json,const std::map &objects)
itr = objects.begin(); itr != objects.end(); itr++)
{
const char *tag = get_value(itr->first);
- acl::json_node &item = gson(json, itr->second);
- node.add_child(json.create_node().add_child(tag, item));
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_child(tag, item));
+ }
+
}
return node;
}
@@ -486,8 +555,16 @@ static inline gson(acl::json &json, const std::map *objects)
itr = objects->begin(); itr != objects->end(); itr++)
{
const char *tag = get_value(itr->first);
- acl::json_node &item = gson(json, itr->second);
- node.add_child(json.create_node().add_child(tag, item));
+ if (check_nullptr(itr->second))
+ {
+ node.add_child(json.create_node().add_null(tag));
+ }
+ else
+ {
+ acl::json_node &item = gson(json, itr->second);
+ node.add_child(json.create_node().add_child(tag, item));
+ }
+
}
return node;
}
diff --git a/lib_acl_cpp/include/acl_cpp/stdlib/gsoner.hpp b/lib_acl_cpp/include/acl_cpp/stdlib/gsoner.hpp
index 0539ad094..f9fc3f71e 100644
--- a/lib_acl_cpp/include/acl_cpp/stdlib/gsoner.hpp
+++ b/lib_acl_cpp/include/acl_cpp/stdlib/gsoner.hpp
@@ -113,6 +113,7 @@ private:
function_code_t gen_unpack_code(const object_t &obj);
std::string get_static_string();
std::string get_include_files();
+ std::string get_filename(const char *filepath);
bool skip_space_comment();
diff --git a/lib_acl_cpp/src/stdlib/gsoner.cpp b/lib_acl_cpp/src/stdlib/gsoner.cpp
index 4f14f72d3..02ef08d91 100644
--- a/lib_acl_cpp/src/stdlib/gsoner.cpp
+++ b/lib_acl_cpp/src/stdlib/gsoner.cpp
@@ -195,11 +195,25 @@ gsoner::function_code_t gsoner::gen_pack_code(const object_t &obj)
str += "\n{\n";
str += tab_;
- str += "acl::json_node &node = json.create_node();\n";
+ str += "acl::json_node &node = json.create_node();\n\n";
+ /*
+ if (check_nullptr(obj.string_ptr))
+ node.add_null("string_ptr");
+ else
+ node.add_text("string_ptr", acl::get_value(obj.string_ptr));
+ */
for(object_t::fields_t::const_iterator itr = obj.fields_.begin();
itr != obj.fields_.end(); ++itr)
{
+ str += tab_;
+ str += "if (check_nullptr(obj."+itr->name_+"))\n";
+ str += tab_;
+ str += tab_;
+ str += "node.add_null(\""+itr->name_+"\");\n";
+ str += tab_;
+ str += "else\n";
+ str += tab_;
str += tab_;
str += "node.";
str += get_node_func(*itr);
@@ -209,7 +223,7 @@ gsoner::function_code_t gsoner::gen_pack_code(const object_t &obj)
str += get_gson_func_laber(*itr);
str += "obj.";
str += itr->name_;
- str += "));\n";
+ str += "));\n\n";
}
str += "\n";
str += tab_;
@@ -1129,18 +1143,22 @@ bool gsoner::read_file(const char *filepath)
std::istreambuf_iterator());
codes_.append(str);
+ files_.push_back(get_filename(filepath));
+
+ return true;
+}
+std::string gsoner::get_filename(const char *filepath)
+{
std::string filename;
int i = strlen(filepath) - 1;
- while(i >= 0 && (filepath[i] != '\\' || filepath[i] != '/'))
+ while (i >= 0 && (filepath[i] != '\\' || filepath[i] != '/'))
{
filename.push_back(filepath[i]);
i--;
}
std::reverse(filename.begin(), filename.end());
-
- return true;
+ return filename;
}
-
bool gsoner::read_multi_file(const std::vector& files)
{
for(std::vector::const_iterator itr = files.begin();
@@ -1152,7 +1170,7 @@ bool gsoner::read_multi_file(const std::vector& files)
<< itr->c_str() << " error" << std::endl;
return false;
}
- files_.push_back(*itr);
+ files_.push_back(get_filename(itr->c_str()));
}
return true;
}
@@ -1254,9 +1272,10 @@ void gsoner::gen_gson()
const char *namespace_end = "\n}///end of acl.";
write_source("#include \"stdafx.h\"\n");
+ write_source(get_include_files());
write_source("#include \"" + gen_header_filename_ + "\"\n");
write_source("#include \"acl_cpp/stdlib/gson_helper.ipp\"\n");
- write_header(get_include_files());
+
write_header(namespace_start);
write_source(namespace_start);