transactd 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. metadata +267 -0
@@ -0,0 +1,65 @@
1
+ #ifndef benchmarkH
2
+ #define benchmarkH
3
+ /*=================================================================
4
+ Copyright (C) 2013 BizStation Corp All rights reserved.
5
+
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ 02111-1307, USA.
20
+ =================================================================*/
21
+ #include <boost/function.hpp>
22
+ #include <boost/version.hpp>
23
+
24
+ //#define BOOST_HIGH_RESOL_TIMER_ENABLE
25
+
26
+ #if BOOST_VERSION > 104801
27
+
28
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
29
+ #include <boost/chrono/system_clocks.hpp>
30
+ #include <boost/chrono.hpp>
31
+ typedef boost::chrono::high_resolution_clock boost_timer;
32
+ #else
33
+ #define BOOST_CPUTIMER_ENABLE
34
+ #include <boost/timer/timer.hpp>
35
+ typedef boost::timer::cpu_timer boost_timer;
36
+ #endif
37
+
38
+ #else
39
+ #include <boost/timer.hpp>
40
+ typedef boost::timer boost_timer;
41
+
42
+ #endif
43
+
44
+ namespace bzs
45
+ {
46
+ namespace rtl
47
+ {
48
+ // single thread only
49
+ class benchmark
50
+ {
51
+ static boost_timer t;
52
+ #ifdef BOOST_HIGH_RESOL_TIMER_ENABLE
53
+ static boost_timer::time_point m_start;
54
+ #endif
55
+ public:
56
+ static bool report(boost::function<bool()> func, const char* name);
57
+ static void report2(boost::function<void()> func, const char* name);
58
+ static void start();
59
+ static void showTimeSec(bool result, const char* name);
60
+
61
+ };
62
+
63
+ }//namespace rtl
64
+ }//namespace bzs
65
+ #endif
@@ -0,0 +1,375 @@
1
+ /*=================================================================
2
+ Copyright (C) 2000 2013 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #include <bzs/env/tstring.h>
20
+ #pragma hdrstop
21
+
22
+ #include "datetime.h"
23
+ #include <string.h>
24
+ #include <stdio.h>
25
+ #include <stdlib.h>
26
+ #include <time.h>
27
+ #include <bzs/env/crosscompile.h>
28
+ #ifdef LINUX
29
+ #include <wchar.h>
30
+ #endif
31
+
32
+ #pragma package(smart_init) // BCB package
33
+ #pragma warning(disable:4996) // VC++ unsafe function
34
+
35
+ //Ansi & Unicode
36
+ #if (defined(_WIN32) && _MSC_VER)
37
+ extern DWORD g_tlsiID_SC3;
38
+ #else
39
+ __THREAD _TCHAR __THREAD_BCB g_date[30];
40
+ #endif
41
+
42
+ inline _TCHAR* databuf()
43
+ {
44
+ #if (defined(_WIN32) && _MSC_VER)
45
+ return (_TCHAR*)TlsGetValue(g_tlsiID_SC3);
46
+ #else
47
+ return g_date;
48
+ #endif
49
+ }
50
+
51
+
52
+ namespace bzs
53
+ {
54
+ namespace rtl
55
+ {
56
+
57
+
58
+
59
+ int GetDate(const _TCHAR* NowDate)
60
+ {
61
+ int ret;
62
+ ret = _ttol(NowDate+8);
63
+ return ret;
64
+ }
65
+
66
+ int GetYear(const _TCHAR* NowDate, bool PrevMonth)
67
+ {
68
+ int ret;
69
+ ret = _ttol(NowDate);
70
+ if ((PrevMonth) && (GetMonth(NowDate, false) == 1))
71
+ ret--;
72
+ return ret;
73
+ }
74
+
75
+ int GetMonth(const _TCHAR* NowDate, bool PrevMonth)
76
+ {
77
+ int ret;
78
+ ret = _ttol(NowDate+5);
79
+ if (PrevMonth)
80
+ ret--;
81
+ if (ret == 0)
82
+ ret = 12;
83
+
84
+ return ret;
85
+ }
86
+
87
+ bool IsUrudosi(int Year)
88
+ {
89
+ if ((Year % 4) == 0)
90
+ {
91
+ if ((Year % 400) == 0)
92
+ return true;
93
+ else if ((Year % 100) == 0)
94
+ return false;
95
+ else
96
+ return true;
97
+ }
98
+ return false;
99
+ }
100
+
101
+ bool GetDatefromYearSerialDays(int year, int Days, _TCHAR* date, bool nextYearRight)
102
+ {
103
+ //The date of the day counted from the beginning of the year is returned.
104
+ //if orver the year then return false.
105
+
106
+ int mm;
107
+ int dd = Days;
108
+ for (mm=1; mm < 14;mm++)
109
+ {
110
+ switch (mm)
111
+ {
112
+ case 2:
113
+ if(IsUrudosi(year))
114
+ Days-=29;
115
+ else
116
+ Days-=28;
117
+ break;
118
+ case 4:
119
+ case 6:
120
+ case 9:
121
+ case 11:
122
+ Days-=30;break;
123
+ default:
124
+ Days-=31;
125
+ }
126
+ if (Days <= 0)
127
+ break;
128
+ dd=Days;
129
+ }
130
+ bool ret= true;
131
+ if ((dd>31)|| (mm==13))
132
+ {
133
+ if (nextYearRight)
134
+ {
135
+ year += 1;
136
+ mm = 1;
137
+ }else
138
+ {//for old program
139
+ dd = 31;
140
+ mm--;
141
+ }
142
+ ret= false;
143
+ }
144
+ _stprintf(date,_T("%04d/%02d/%02d"), year,mm,dd);
145
+ return ret;
146
+ }
147
+
148
+ //---------------------------------------------------------------------------
149
+ int JDate2NumOLD(const _TCHAR* date)
150
+ {//1900/01/01 = 2415021
151
+ int yy = GetYear(date,false);
152
+ int mm = GetMonth(date,false);
153
+ int dd = GetDate(date);
154
+ int i;
155
+
156
+ //The number of leap years
157
+ int n = 2415020;
158
+ for (i=1900; i < yy; i+= 4)
159
+ {
160
+ if(IsUrudosi(i))
161
+ n+=1;
162
+ }
163
+ n+= (yy - 1900 ) * 365;
164
+ for (i=1; i < mm ;i++)
165
+ {
166
+ switch(i)
167
+ {
168
+ case 2:
169
+ if(IsUrudosi(yy))
170
+ n+=29;
171
+ else
172
+ n+=28;
173
+ break;
174
+ case 4:
175
+ case 6:
176
+ case 9:
177
+ case 11:
178
+ n+=30;
179
+ break;
180
+ default:
181
+ n+=31;
182
+ }
183
+ }
184
+ n+=dd;
185
+ return n;
186
+ }
187
+ #ifdef _WIN32
188
+ //---------------------------------------------------------------------------
189
+ int JDate2Num(const _NTCHAR* date)
190
+ {
191
+ #ifdef _UNICODE
192
+ wchar_t buf[20];
193
+ MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, date, -1, buf, 20);
194
+ #else
195
+ char buf[20];
196
+ wtoa(buf, date, 20);
197
+ #endif
198
+ return JDate2Num(buf);
199
+ }
200
+ #endif
201
+ //---------------------------------------------------------------------------
202
+ int JDate2Num(const _TCHAR* date)
203
+ {//1980/01/01 = 2444240
204
+ int yy = GetYear(date,false);
205
+ if (yy < 1980)
206
+ return JDate2NumOLD(date);
207
+
208
+ int mm = GetMonth(date,false);
209
+ int dd = GetDate(date);
210
+ int i;
211
+
212
+
213
+ //The number of leap years
214
+ int n = 2444239;
215
+ for (i=1980; i < yy; i+= 4)
216
+ {
217
+ if(IsUrudosi(i))
218
+ n+=1;
219
+ }
220
+ n+= (yy - 1980 ) * 365;
221
+ for (i=1; i < mm ;i++)
222
+ {
223
+ switch(i)
224
+ {
225
+ case 2:
226
+ if(IsUrudosi(yy))
227
+ n+=29;
228
+ else
229
+ n+=28;
230
+ break;
231
+ case 4:
232
+ case 6:
233
+ case 9:
234
+ case 11:
235
+ n+=30;
236
+ break;
237
+ default:
238
+ n+=31;
239
+ }
240
+ }
241
+ n+=dd;
242
+ return n;
243
+ }
244
+ //---------------------------------------------------------------------------
245
+ _TCHAR* JNum2DateOLD(int n)
246
+ {//1900/01/01 = 2415021
247
+ bool uru = false;
248
+ if (n < 2415021)
249
+ return NULL;
250
+
251
+ int yy = 1900;
252
+ n -= 2415020;
253
+ while (1)
254
+ {
255
+ if(uru)
256
+ {
257
+ if (n <= 366)
258
+ break;
259
+ }
260
+ else
261
+ {
262
+ if (n <= 365)
263
+ break;
264
+ }
265
+ if(uru)
266
+ n -= 366;
267
+ else
268
+ n -= 365;
269
+ yy++;
270
+ uru = IsUrudosi(yy);
271
+ }
272
+ GetDatefromYearSerialDays(yy, n, databuf());
273
+ return databuf();
274
+ }
275
+
276
+ //---------------------------------------------------------------------------
277
+ const _TCHAR* JNum2Date(int n)
278
+ {//1980/01/01 = 2444240
279
+ bool uru = true;
280
+ if (n < 2444240)
281
+ return JNum2DateOLD(n);
282
+
283
+ int yy = 1980;
284
+ n -= 2444239;
285
+ while (1)
286
+ {
287
+ if(uru)
288
+ {
289
+ if (n <= 366)
290
+ break;
291
+ }
292
+ else
293
+ {
294
+ if (n <= 365)
295
+ break;
296
+ }
297
+ if(uru)
298
+ n -= 366;
299
+ else
300
+ n -= 365;
301
+ yy++;
302
+ uru = IsUrudosi(yy);
303
+ }
304
+ GetDatefromYearSerialDays(yy, n, databuf());
305
+ return databuf();
306
+ }
307
+
308
+ //---------------------------------------------------------------------------
309
+ long StrToLongDate(_TCHAR* strdat)
310
+ { //Conver string date to long. ex : 20011231
311
+ _TCHAR buf[9];
312
+ _tcsncpy(buf, strdat, 4);
313
+ _tcsncpy(buf + 4,strdat + 5, 2);
314
+ _tcsncpy(buf + 6,strdat + 8, 2);
315
+ buf[8] = 0x00;
316
+ return _ttol(buf);
317
+ }
318
+ //---------------------------------------------------------------------------
319
+ _TCHAR* LongToStrDate(long ldat , _TCHAR* strdat)
320
+ { //Conver long date to string date�B
321
+ //No check long date is valid.
322
+ _TCHAR buf[11];
323
+ if (ldat == 0)
324
+ _tcscpy(strdat,_T("0000/00/00"));
325
+ else
326
+ {
327
+ _stprintf_s(buf, 11, _T("%08ld"),ldat);
328
+
329
+ _tcsncpy(strdat, buf, 4);
330
+ strdat[4] = '/';
331
+ _tcsncpy(strdat + 5, buf + 4, 2);
332
+ strdat[7] = '/';
333
+ _tcsncpy(strdat + 8, buf + 6, 2);
334
+ strdat[10] = 0x00;
335
+ }
336
+ return strdat;
337
+ }
338
+ //---------------------------------------------------------------------------
339
+ _TCHAR* LongToStrTime(long ltime , _TCHAR* strdat)
340
+ { //Conver long time to string time�B
341
+ //No check long time is valid.
342
+ _TCHAR buf[9];
343
+ _stprintf_s(buf, 9, _T("%ld"),ltime);
344
+ _tcsncpy(strdat,buf,2);
345
+ strdat[2] = ':';
346
+ _tcsncpy(strdat + 3, buf + 2, 2);
347
+ strdat[5] = ':';
348
+ _tcsncpy(strdat + 6, buf + 4, 2);
349
+ strdat[8] = 0x00;
350
+ return strdat;
351
+ }
352
+ //---------------------------------------------------------------------------
353
+ const char* dateTimeStr(char* buf, unsigned int bufsize)
354
+ {
355
+ struct tm* date;
356
+ time_t now;
357
+ time(&now);
358
+ #ifdef __MINGW32__
359
+ date = localtime(&now);
360
+ #else
361
+ struct tm tmp;
362
+ date = &tmp;
363
+ localtime_x(date, &now);
364
+ #endif
365
+ sprintf_s(buf, bufsize, "%04d/%02d/%02d %02d:%02d:%02d"
366
+ ,date->tm_year + 1900, date->tm_mon + 1,date->tm_mday
367
+ ,date->tm_hour, date->tm_min, date->tm_sec);
368
+ return buf;
369
+ }
370
+
371
+
372
+ }//namespace rtl
373
+ }//namespace bzs
374
+
375
+ #pragma warning(default:4996)
@@ -0,0 +1,53 @@
1
+ #ifndef BZS_RT_DATETIME_H
2
+ #define BZS_RT_DATETIME_H
3
+ /*=================================================================
4
+ Copyright (C) 2000 2013 BizStation Corp All rights reserved.
5
+
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ 02111-1307, USA.
20
+ =================================================================*/
21
+
22
+ #include <bzs/env/compiler.h>
23
+ #include <bzs/env/tstring.h>
24
+
25
+ namespace bzs
26
+ {
27
+ namespace rtl
28
+ {
29
+ //---------------------------------------------------------------------------
30
+ PACKAGE int GetYear(const _TCHAR* NowDate, bool PrevMonth);
31
+ PACKAGE int GetMonth(const _TCHAR* NowDate, bool PrevMonth);
32
+ PACKAGE int GetDate(const _TCHAR* NowDate);
33
+ PACKAGE bool IsUrudosi(int Year);
34
+ PACKAGE bool GetDatefromYearSerialDays(int year, int Days, _TCHAR* date
35
+ , bool nextYearRight=false);
36
+
37
+ PACKAGE int JDate2Num(const _TCHAR* date);
38
+
39
+ #ifdef _WIN32
40
+ PACKAGE int JDate2Num(const _NTCHAR* date);
41
+ #endif
42
+
43
+ PACKAGE const _TCHAR* JNum2Date(int ldate);
44
+
45
+ PACKAGE long StrToLongDate(_TCHAR* pStrDate);
46
+ PACKAGE _TCHAR* LongToStrDate(long , _TCHAR* );
47
+ PACKAGE _TCHAR* LongToStrTime(long , _TCHAR* );
48
+ PACKAGE const char* dateTimeStr(char* buf, unsigned int bufsize);
49
+
50
+ }//namespace rtl
51
+ }//namespace bzs
52
+
53
+ #endif//BZS_RT_DATETIME_H
@@ -0,0 +1,106 @@
1
+ /*=================================================================
2
+ Copyright (C) 2012 2013 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+
20
+ #include "debuglog.h"
21
+ #include <bzs/env/fileopen.h>
22
+ #include <algorithm>
23
+ #include <time.h>
24
+
25
+ namespace bzs
26
+ {
27
+ namespace rtl
28
+ {
29
+
30
+ #ifdef DEBUG_PROFILE
31
+ boost::timer::cpu_timer g_t;
32
+ #endif
33
+
34
+ static char datebuf[30];
35
+
36
+ debuglog* debuglog::m_ptr=NULL;
37
+ boost::mutex debuglog::m_mutex;
38
+ char debuglog::logfilename[MAX_PATH];
39
+
40
+ const char* dateTimeStr(char* buf, unsigned int bufsize)
41
+ {
42
+ struct tm* date;
43
+ time_t now;
44
+ time(&now);
45
+ struct tm tmp;
46
+ date = &tmp;
47
+ localtime_x(date, &now);
48
+ sprintf_s(buf, bufsize, "%04d/%02d/%02d %02d:%02d:%02d"
49
+ ,date->tm_year + 1900, date->tm_mon + 1,date->tm_mday
50
+ ,date->tm_hour, date->tm_min, date->tm_sec);
51
+ return buf;
52
+ }
53
+
54
+ const char* debuglog::dateTime()
55
+ {
56
+ return dateTimeStr(datebuf, 30);
57
+ }
58
+
59
+ void debuglog::write(const char* msg)
60
+ {
61
+ boost::mutex::scoped_lock lck(m_mutex);
62
+ FILE* fp = fileOpen(logfilename, "a+");
63
+ if (fp)
64
+ {
65
+ fputs(dateTime(), fp);
66
+ fputs(" ", fp);
67
+ fputs(msg, fp);
68
+ fclose(fp);
69
+ }
70
+
71
+ }
72
+
73
+ void debuglog::dump(FILE* fp, const char* p, int size, int limit)
74
+ {
75
+ size = std::min<int>(size, limit);
76
+ for (int i=0;i<size;i+=16)
77
+ {
78
+
79
+ for (int j=0;j<16;j++)
80
+ fprintf(fp, "%02X ", *((unsigned char*)(p+i+j)));
81
+ fprintf(fp, " ");
82
+ for (int j=0;j<16;j++)
83
+ fprintf(fp, "%c", *((unsigned char*)(p+i+j)));
84
+ fprintf(fp, "\n");
85
+
86
+ }
87
+ fprintf(fp, "\n");
88
+ }
89
+
90
+ void debuglog::writeDump(const char* msg, const char* ptr, int size)
91
+ {
92
+ boost::mutex::scoped_lock lck(m_mutex);
93
+ FILE* fp = fileOpen(logfilename, "a+");
94
+ if (fp)
95
+ {
96
+ fputs(msg, fp);
97
+ fputs("\n", fp);
98
+ dump(fp, ptr, size, INT_MAX);
99
+
100
+ fclose(fp);
101
+ }
102
+ }
103
+
104
+ }//namespace rtl
105
+ }//namespace bzs
106
+
@@ -0,0 +1,97 @@
1
+ #ifndef BZS_RL_DEBUGLOG_H
2
+ #define BZS_RL_DEBUGLOG_H
3
+ /*=================================================================
4
+ Copyright (C) 2012 2013 BizStation Corp All rights reserved.
5
+
6
+ This program is free software; you can redistribute it and/or
7
+ modify it under the terms of the GNU General Public License
8
+ as published by the Free Software Foundation; either version 2
9
+ of the License, or (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
+ 02111-1307, USA.
20
+ =================================================================*/
21
+ #include <boost/noncopyable.hpp>
22
+ #include <boost/thread/mutex.hpp>
23
+ #include <stdio.h>
24
+ #include <bzs/env/crosscompile.h>
25
+ #include <time.h>
26
+ #include <boost/timer/timer.hpp>
27
+ #ifdef _WIN32
28
+ #include <windows.h>
29
+
30
+ #endif
31
+
32
+ namespace bzs
33
+ {
34
+ namespace rtl
35
+ {
36
+
37
+ class debuglog : private boost::noncopyable
38
+ {
39
+ static debuglog* m_ptr;
40
+ protected:
41
+ static boost::mutex m_mutex;
42
+ static char logfilename[MAX_PATH];
43
+
44
+ public:
45
+ virtual ~debuglog(){};
46
+ virtual void stop()=0;
47
+ void write(const char* msg);
48
+ void writeDump(const char* msg, const char* ptr, int size);
49
+ static void regist(debuglog* ptr){m_ptr = ptr;};
50
+ static debuglog* get(){return m_ptr;}
51
+ static void dump(FILE* fp, const char* p, int size, int limit);
52
+ static void init();
53
+ static const char* dateTime();
54
+
55
+ };
56
+
57
+ #ifdef DEBUG_LOG
58
+ #define DEBUG_WRITELOG(MSG) debuglog::get()->write(MSG);
59
+
60
+ #else //DEBUG_LOG
61
+ #define DEBUG_WRITELOG(MSG)
62
+ #endif //DEBUG_LOG
63
+
64
+ #if defined(DEBUG_PROFILE) || defined(DEBUG_LOG)
65
+ #define DEBUG_PROFILE_INIT() bzs::rtl::debuglog::get()->init();
66
+ #define DEBUG_PROFILE_DEINIT() bzs::rtl::debuglog::get()->stop();
67
+ #else
68
+ #define DEBUG_PROFILE_INIT()
69
+ #define DEBUG_PROFILE_DEINIT()
70
+ #endif
71
+
72
+ #ifdef DEBUG_PROFILE
73
+ extern boost::timer::cpu_timer g_t;
74
+
75
+ #define DEBUG_PROFILE_START(V) if (V) bzs::rtl::g_t.start();
76
+
77
+ #define DEBUG_PROFILE_END(V, NAME) if (V) {bzs::rtl::g_t.stop(); \
78
+ char buf[256]; \
79
+ sprintf(buf, "%-20s %s\r\n",NAME, bzs::rtl::g_t.format().c_str()); \
80
+ bzs::rtl::debuglog::get()->write(buf);};
81
+
82
+ #define DEBUG_PROFILE_END_OP(V, IV) if (V){bzs::rtl::g_t.stop(); \
83
+ char buf[256]; \
84
+ sprintf(buf, "op = %-15ld %s\r\n", IV, bzs::rtl::g_t.format().c_str()); \
85
+ bzs::rtl::debuglog::get()->write(buf);};
86
+
87
+ #else //DEBUG_PROFILE
88
+
89
+ #define DEBUG_PROFILE_START(V)
90
+ #define DEBUG_PROFILE_END(V, NAME)
91
+ #define DEBUG_PROFILE_END_OP(V, IV)
92
+
93
+ #endif //DEBUG_PROFILE
94
+
95
+ }//namespace rtl
96
+ }//namespace bzs
97
+ #endif //BZS_RL_DEBUGLOG_H