transactd 1.2.0 → 2.0.0

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/BUILD_UNIX-JA +46 -67
  3. data/BUILD_WIN-JA +106 -63
  4. data/CMakeLists.txt +40 -15
  5. data/README +219 -75
  6. data/README-JA +207 -76
  7. data/README_ORMSRCGEN +118 -0
  8. data/README_ORMSRCGEN-JA +115 -0
  9. data/bin/common/tdclc_32_2_0.dll +0 -0
  10. data/bin/common/tdclc_64_2_0.dll +0 -0
  11. data/build/common/check_for_link_iconv.cmake +18 -14
  12. data/build/common/create_symlink.cmake.in +25 -0
  13. data/build/common/get_boost_libs.cmake +23 -23
  14. data/build/common/options.cmake +0 -66
  15. data/build/common/smart_install.cmake +3 -3
  16. data/build/common/transactd.rc.in +15 -5
  17. data/build/common/transactd_cl_common.cmake +37 -18
  18. data/build/common/transactd_cl_output.cmake +55 -13
  19. data/build/common/transactd_common.cmake +108 -31
  20. data/build/swig/php/generate.cmake.in +15 -17
  21. data/build/swig/php/generate.cmd.in +15 -9
  22. data/build/swig/php/php.swg +124 -82
  23. data/build/swig/php/transactd.no_yield.php +4494 -0
  24. data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
  25. data/build/swig/php/transactd.no_yield.php.patch +685 -0
  26. data/build/swig/php/transactd.yield.php +4461 -0
  27. data/build/swig/php/transactd.yield.php.git.patch +652 -0
  28. data/build/swig/php/transactd.yield.php.patch +652 -0
  29. data/build/swig/referencecounter.h +79 -0
  30. data/build/swig/ruby/ruby.swg +226 -76
  31. data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
  32. data/build/swig/ruby/without_gvl.swg +87 -0
  33. data/build/swig/tdcl.i +659 -170
  34. data/build/swig/validatablepointer.h +91 -0
  35. data/build/tdclc/CMakeLists.txt +49 -34
  36. data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
  37. data/build/tdclc/tdclc.rc +0 -0
  38. data/build/tdclcpp/CMakeLists.txt +84 -20
  39. data/build/tdclcpp/tdclcpp.rc +0 -0
  40. data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
  41. data/build/tdclrb/CMakeLists.txt +84 -66
  42. data/build/tdclrb/bldgem/extconf.rb +28 -3
  43. data/build/tdclrb/gem/helper.rb +11 -1
  44. data/build/tdclrb/gem_output.cmake +20 -16
  45. data/index_ja.html +15 -0
  46. data/source/bzs/db/IBlobBuffer.h +15 -17
  47. data/source/bzs/db/blobBuffer.h +186 -140
  48. data/source/bzs/db/blobStructs.h +37 -37
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
  50. data/source/bzs/db/engine/mysql/bookmark.h +150 -147
  51. data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
  52. data/source/bzs/db/engine/mysql/database.h +608 -370
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
  54. data/source/bzs/db/engine/mysql/dbManager.h +115 -104
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
  56. data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
  63. data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
  64. data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
  68. data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
  69. data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
  70. data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
  71. data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
  72. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
  73. data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
  74. data/source/bzs/db/protocol/tdap/client/client.h +361 -320
  75. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
  76. data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
  77. data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
  78. data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
  79. data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
  80. data/source/bzs/db/protocol/tdap/client/database.h +141 -118
  81. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
  82. data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
  83. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
  84. data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
  85. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
  86. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
  87. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
  88. data/source/bzs/db/protocol/tdap/client/export.h +35 -0
  89. data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
  90. data/source/bzs/db/protocol/tdap/client/field.h +393 -0
  91. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
  92. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
  93. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
  94. data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
  95. data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
  96. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
  97. data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
  98. data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
  99. data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
  100. data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
  101. data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
  102. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
  103. data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
  104. data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
  105. data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
  106. data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
  107. data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
  108. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
  109. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
  110. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
  111. data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
  112. data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
  113. data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
  114. data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
  115. data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
  116. data/source/bzs/db/protocol/tdap/client/request.h +227 -170
  117. data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
  118. data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
  119. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
  120. data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
  121. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
  122. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
  123. data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
  124. data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
  125. data/source/bzs/db/protocol/tdap/client/table.h +413 -87
  126. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
  127. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
  128. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
  129. data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
  130. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
  131. data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
  132. data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
  133. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
  134. data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
  135. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
  136. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
  137. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
  138. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
  139. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
  140. data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
  141. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
  142. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
  143. data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
  144. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
  145. data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
  146. data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
  147. data/source/bzs/db/transactd/appBuilderImple.h +21 -20
  148. data/source/bzs/db/transactd/appModule.cpp +350 -98
  149. data/source/bzs/db/transactd/appModule.h +31 -37
  150. data/source/bzs/db/transactd/connManager.cpp +138 -135
  151. data/source/bzs/db/transactd/connManager.h +28 -21
  152. data/source/bzs/db/transactd/connectionRecord.h +39 -39
  153. data/source/bzs/db/transactd/transactd.cpp +217 -203
  154. data/source/bzs/env/boost_bcb_link.h +131 -0
  155. data/source/bzs/env/compiler.h +136 -79
  156. data/source/bzs/env/crosscompile.cpp +57 -57
  157. data/source/bzs/env/crosscompile.h +130 -115
  158. data/source/bzs/env/fileopen.h +7 -8
  159. data/source/bzs/env/mbcswchrLinux.cpp +4 -9
  160. data/source/bzs/env/mbcswchrLinux.h +37 -34
  161. data/source/bzs/env/tcharMinGW.h +59 -0
  162. data/source/bzs/env/tstring.h +90 -95
  163. data/source/bzs/example/changeSchema.cpp +22 -23
  164. data/source/bzs/example/changeSchema_c.cpp +22 -24
  165. data/source/bzs/example/connection_pool_c.cpp +49 -104
  166. data/source/bzs/example/createDatabase.cpp +40 -47
  167. data/source/bzs/example/createDatabase_c.cpp +38 -43
  168. data/source/bzs/example/deleteRecords.cpp +10 -15
  169. data/source/bzs/example/deleteRecords_c.cpp +10 -14
  170. data/source/bzs/example/dropDatabase.cpp +3 -9
  171. data/source/bzs/example/dropDatabase_c.cpp +5 -6
  172. data/source/bzs/example/insertRecords.cpp +37 -29
  173. data/source/bzs/example/insertRecords_c.cpp +19 -25
  174. data/source/bzs/example/ormap_c.cpp +621 -0
  175. data/source/bzs/example/queryData.cpp +371 -0
  176. data/source/bzs/example/queryData.h +16 -0
  177. data/source/bzs/example/query_c.cpp +109 -0
  178. data/source/bzs/example/readRecords.cpp +27 -27
  179. data/source/bzs/example/readRecords_c.cpp +25 -23
  180. data/source/bzs/example/updateRecords.cpp +16 -21
  181. data/source/bzs/example/updateRecords_c.cpp +8 -12
  182. data/source/bzs/example/update_with_transaction.cpp +21 -24
  183. data/source/bzs/example/update_with_transaction_c.cpp +12 -15
  184. data/source/bzs/example/useORMRecord.cpp +177 -0
  185. data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
  186. data/source/bzs/netsvc/client/tcpClient.h +541 -489
  187. data/source/bzs/netsvc/server/IAppModule.h +119 -32
  188. data/source/bzs/netsvc/server/iserver.h +21 -23
  189. data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
  190. data/source/bzs/netsvc/server/serverCpt.h +41 -43
  191. data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
  192. data/source/bzs/netsvc/server/serverPipe.h +44 -45
  193. data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
  194. data/source/bzs/netsvc/server/serverTpool.h +38 -43
  195. data/source/bzs/rtl/benchmark.cpp +91 -31
  196. data/source/bzs/rtl/benchmark.h +76 -22
  197. data/source/bzs/rtl/datetime.cpp +231 -233
  198. data/source/bzs/rtl/datetime.h +16 -16
  199. data/source/bzs/rtl/debuglog.cpp +48 -51
  200. data/source/bzs/rtl/debuglog.h +55 -44
  201. data/source/bzs/rtl/exception.h +55 -48
  202. data/source/bzs/rtl/stl_uty.cpp +27 -28
  203. data/source/bzs/rtl/stl_uty.h +28 -29
  204. data/source/bzs/rtl/stringBuffers.cpp +8 -6
  205. data/source/bzs/rtl/stringBuffers.h +16 -9
  206. data/source/bzs/rtl/strtrim.cpp +90 -91
  207. data/source/bzs/rtl/strtrim.h +14 -16
  208. data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
  209. data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
  210. data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
  211. data/source/bzs/test/tdclphp/bench.php +357 -0
  212. data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
  213. data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
  214. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
  215. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
  216. data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
  217. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
  218. data/source/bzs/test/tdclrb/prepare.rb +15 -12
  219. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
  220. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
  221. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
  222. data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
  223. data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
  224. data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
  225. data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
  226. data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
  227. data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
  228. data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
  229. data/source/bzs/test/transactdBench/workerBase.h +88 -0
  230. data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
  231. data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
  232. data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
  233. data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
  234. data/source/global/ormsrcgen/confParam.h +80 -0
  235. data/source/global/ormsrcgen/fieldName.cpp +77 -0
  236. data/source/global/ormsrcgen/fieldName.h +43 -0
  237. data/source/global/ormsrcgen/main.cpp +196 -0
  238. data/source/global/ormsrcgen/srcgen.cpp +763 -0
  239. data/source/global/ormsrcgen/srcgen.h +72 -0
  240. data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
  241. data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
  242. data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
  243. data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
  244. data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
  245. data/source/global/ormsrcgen/template/template.cnf +38 -0
  246. data/source/global/querystmts/querystmts.cpp +237 -0
  247. data/source/global/tdclatl/ConnectParams.cpp +77 -0
  248. data/source/global/tdclatl/ConnectParams.h +70 -0
  249. data/source/global/tdclatl/Database.cpp +132 -128
  250. data/source/global/tdclatl/Database.h +60 -49
  251. data/source/global/tdclatl/DbDef.cpp +68 -64
  252. data/source/global/tdclatl/DbDef.h +36 -36
  253. data/source/global/tdclatl/Field.cpp +12 -17
  254. data/source/global/tdclatl/Field.h +15 -12
  255. data/source/global/tdclatl/FieldDef.cpp +75 -36
  256. data/source/global/tdclatl/FieldDef.h +38 -19
  257. data/source/global/tdclatl/FieldDefs.cpp +74 -0
  258. data/source/global/tdclatl/FieldDefs.h +56 -0
  259. data/source/global/tdclatl/FieldNames.cpp +99 -0
  260. data/source/global/tdclatl/FieldNames.h +66 -0
  261. data/source/global/tdclatl/Flags.cpp +75 -37
  262. data/source/global/tdclatl/Flags.h +13 -12
  263. data/source/global/tdclatl/GroupQuery.cpp +119 -0
  264. data/source/global/tdclatl/GroupQuery.h +65 -0
  265. data/source/global/tdclatl/KeyDef.cpp +15 -14
  266. data/source/global/tdclatl/KeyDef.h +20 -17
  267. data/source/global/tdclatl/KeySegment.cpp +13 -12
  268. data/source/global/tdclatl/PooledDbManager.cpp +223 -0
  269. data/source/global/tdclatl/PooledDbManager.h +76 -0
  270. data/source/global/tdclatl/QueryBase.cpp +206 -127
  271. data/source/global/tdclatl/QueryBase.h +55 -59
  272. data/source/global/tdclatl/Record.cpp +214 -0
  273. data/source/global/tdclatl/Record.h +96 -0
  274. data/source/global/tdclatl/Recordset.cpp +278 -0
  275. data/source/global/tdclatl/Recordset.h +83 -0
  276. data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
  277. data/source/global/tdclatl/RecordsetQuery.h +126 -0
  278. data/source/global/tdclatl/Table.cpp +57 -60
  279. data/source/global/tdclatl/Table.h +32 -29
  280. data/source/global/tdclatl/TableDef.cpp +63 -62
  281. data/source/global/tdclatl/TableDef.h +20 -22
  282. data/source/global/tdclatl/TdVersion.cpp +3 -3
  283. data/source/global/tdclatl/TdVersion.h +15 -11
  284. data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
  285. data/source/global/tdclatl/activeTable.cpp +355 -0
  286. data/source/global/tdclatl/activeTable.h +79 -0
  287. data/source/global/tdclatl/dllmain.cpp +4 -3
  288. data/source/global/tdclatl/dllmain.h +7 -6
  289. data/source/global/tdclatl/keySegment.h +22 -18
  290. data/source/global/tdclatl/resource.h +0 -0
  291. data/source/global/tdclatl/stdafx.h +6 -4
  292. data/source/global/tdclatl/targetver.h +0 -1
  293. data/source/global/tdclatl/tdclatl.cpp +10 -5
  294. data/source/global/tdclatl/tdclatl.idl +530 -14
  295. data/source/linux/charsetConvert.h +78 -79
  296. data/source/linux/linuxTypes.h +9 -12
  297. data/source/linux/tchar.h +168 -166
  298. data/transactd.gemspec +24 -16
  299. metadata +98 -12
  300. data/bin/common/tdclc_32_1_2.dll +0 -0
  301. data/bin/common/tdclc_64_1_2.dll +0 -0
  302. data/build/tdclc/tdclc_32.cbproj +0 -173
  303. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
  304. data/build/tdclrb/GEM_VERSION +0 -3
  305. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
  306. data/source/bzs/example/useORM.cpp +0 -585
@@ -20,13 +20,14 @@
20
20
  ================================================================= */
21
21
  #include "nsTable.h"
22
22
  #include <vector>
23
+ #include <stdio.h>
23
24
  namespace bzs
24
25
  {
25
26
 
26
27
  namespace db
27
28
  {
28
- struct blobHeader;
29
- struct blob;
29
+ struct blobHeader;
30
+ struct blob;
30
31
  namespace protocol
31
32
  {
32
33
  namespace tdap
@@ -34,116 +35,152 @@ namespace tdap
34
35
  namespace client
35
36
  {
36
37
 
37
- class fields;
38
+ /** @cond INTERNAL */
38
39
  class database;
39
40
  class queryBase;
41
+ class fields;
40
42
  #define null_str _T("")
41
43
 
42
- #pragma warning(disable:4251)
44
+ #pragma warning(disable : 4251)
45
+
46
+ static const int mra_nojoin = 0;
47
+ static const int mra_first = 0;
48
+ static const int mra_nextrows = 1;
49
+ static const int mra_innerjoin = 2;
50
+ static const int mra_outerjoin = 4;
51
+ static const int mra_current_block = -1;
52
+
53
+ class multiRecordAlocator
54
+ {
55
+
56
+ public:
57
+ virtual ~multiRecordAlocator() {}
58
+ virtual void init(size_t recordCount, size_t recordLen, int addType,
59
+ const class table* tb) = 0;
60
+ virtual unsigned char* ptr(size_t row, int stat) = 0;
61
+ virtual void setJoinType(int v) = 0;
62
+ virtual void setInvalidRecord(size_t row, bool v) = 0;
63
+ virtual void setJoinRowMap(
64
+ const std::vector<std::vector<int> >* v /*, size_t size*/) = 0;
65
+ virtual const std::vector<std::vector<int> >* joinRowMap() const = 0;
66
+ virtual void duplicateRow(int row, int count) = 0;
67
+ virtual void removeLastMemBlock(int row) = 0;
68
+ };
43
69
 
70
+ /** @endcond */
44
71
 
45
- class AGRPACK table : public nstable
72
+ class DLLLIB table : public nstable
46
73
  {
47
74
  friend class recordCache;
48
75
  friend class database;
49
76
  friend class filter;
77
+ friend class fields;
50
78
 
51
79
  struct tbimpl* m_impl;
80
+ class fielddefs* m_fddefs;
52
81
  tabledef* m_tableDef;
53
82
 
54
- uchar_td charset() const ;
83
+ uchar_td charset() const;
55
84
  bool checkFindDirection(ushort_td op);
56
- bool checkIndex(short index);
85
+ bool checkIndex(short index) const;
57
86
  void getKeySpec(keySpec* ks, bool SpecifyKeyNum = false);
58
87
  const bzs::db::blobHeader* getBlobHeader();
59
- void setBlobFieldPointer(char*ptr, const ::bzs::db::blobHeader* p);
88
+ void setBlobFieldPointer(char* ptr, const ::bzs::db::blobHeader* p);
60
89
  void addSendBlob(const bzs::db::blob* blob);
61
90
  void addBlobEndRow();
62
91
  void resetSendBlob();
63
92
  void btrvGetExtend(ushort_td op);
64
93
  void getRecords(ushort_td op);
65
- uint_td doGetWriteImageLen(); // orverride
94
+ uint_td doGetWriteImageLen(); // orverride
66
95
  void doUpdate(bool ncc = false); // orverride
67
96
  ushort_td doCommitBulkInsert(bool autoCommit = false); // orverride
68
97
  void doAbortBulkInsert(); // orverride
69
98
  void doCreateIndex(bool SpecifyKeyNum = false); // orverride
70
- uint_td doRecordCount(bool estimate, bool fromCurrent, eFindType direction); // orverride
99
+ uint_td doRecordCount(bool estimate, bool fromCurrent); // orverride
71
100
  short_td doBtrvErr(HWND hWnd, _TCHAR* retbuf = NULL); // orverride
72
-
73
- double getFVnumeric(short index);
74
- double getFVDecimal(short index);
75
- void setFVDecimal(short index, double data);
76
- void setFVNumeric(short index, double data);
77
- void doFind( ushort_td op, bool notIncCurrent);
101
+ void doFind(ushort_td op, bool notIncCurrent);
78
102
  bool setSeekValueField(int row);
103
+ void btrvSeekMulti();
104
+ bool doSeekMultiAfter(int row);
79
105
 
80
106
  protected:
81
- explicit table(nsdatabase *pbe); // Inheritance is impossible
107
+ explicit table(nsdatabase* pbe); // Inheritance is impossible
82
108
  virtual ~table();
83
- void* dataBak() const ;
109
+ void* dataBak() const;
84
110
  void setDataBak(void* v);
85
111
  void setBookMarks(int StartId, void* Data, ushort_td Count);
86
- uint_td unPack(char*ptr, size_t size);
87
- uint_td pack(char*ptr, size_t size);
112
+ uint_td unPack(char* ptr, size_t size);
113
+ uint_td pack(char* ptr, size_t size);
88
114
  keylen_td writeKeyData(); // orverride
89
-
90
- void writeRecordData(){};
115
+ keylen_td writeKeyDataTo(uchar_td* to, int keySize);
116
+
117
+ void writeRecordData(){};
91
118
 
92
- void onReadAfter(); // orverride
93
- bool onUpdateCheck(eUpdateType type); // orverride
119
+ void onReadAfter(); // orverride
120
+ bool onUpdateCheck(eUpdateType type); // orverride
94
121
 
95
- int onUpdateBefore(){return 0;}; // orverride
122
+ int onUpdateBefore() { return 0; }; // orverride
96
123
 
97
- void onUpdateAfter(int beforeResult); // orverride
124
+ void onUpdateAfter(int beforeResult); // orverride
98
125
  bool onDeleteCheck(bool inkey); // orverride
99
126
 
100
- int onInsertBefore() {return 0;}; // orverride
127
+ int onInsertBefore() { return 0; }; // orverride
101
128
 
102
- void onInsertAfter(int beforeResult); // orverride
103
- bool isUniqeKey(char_td keynum);//orverride
104
- void init(tabledef* def, short filenum, bool regularDir);
129
+ void onInsertAfter(int beforeResult); // orverride
130
+ bool isUniqeKey(char_td keynum); // orverride
131
+ void init(tabledef* def, short filenum, bool regularDir);
105
132
  void* attachBuffer(void* newPtr, bool unpack = false, size_t size = 0);
106
133
  void dettachBuffer();
107
134
 
108
- virtual void doInit(tabledef* def, short filenum, bool regularDir);
135
+ virtual void doInit(tabledef* def, short filenum, bool regularDir);
109
136
 
110
137
  virtual void onRecordCounting(size_t count, bool& complate){};
111
138
 
112
- virtual void setNoUpdateTimeStamp(bool v) {};
113
-
139
+ virtual void setNoUpdateTimeStamp(bool v){};
114
140
 
115
141
  public:
116
142
  using nstable::eFindType;
117
143
 
118
- inline const tabledef* tableDef() const {return m_tableDef;};
144
+ inline const tabledef* tableDef() const { return m_tableDef; };
145
+ inline const tabledef** tableDefPtr() const
146
+ {
147
+ return const_cast<const tabledef**>(&m_tableDef);
148
+ };
119
149
 
120
- inline bool valiableFormatType() const {return m_tableDef->optionFlags.bitA;}
150
+ inline bool valiableFormatType() const
151
+ {
152
+ return m_tableDef->optionFlags.bitA;
153
+ }
121
154
 
122
- inline bool blobFieldUsed() const {return m_tableDef->optionFlags.bitB;}
155
+ inline bool blobFieldUsed() const { return m_tableDef->optionFlags.bitB; }
123
156
 
124
- bool logicalToString() const ;
157
+ bool logicalToString() const;
125
158
  void setLogicalToString(bool v);
126
- bool trimPadChar() const ;
159
+ bool trimPadChar() const;
127
160
  void setTrimPadChar(bool v);
128
- bool usePadChar() const ;
161
+ bool usePadChar() const;
129
162
  void setUsePadChar(bool v);
130
- void* optionalData() const;
131
- void setOptionalData(void* v);
132
- bool myDateTimeValueByBtrv() const ;
133
- int bookMarksCount() const ;
163
+ void* optionalData() const;
164
+ void setOptionalData(void* v);
165
+ bool myDateTimeValueByBtrv() const;
166
+ int bookMarksCount() const;
134
167
  void moveBookmarksId(long Id);
135
168
  void clearBuffer();
136
169
  unsigned int getRecordHash();
137
170
  void smartUpdate();
138
- void find(eFindType type=findForword);
171
+
172
+ void setMra(multiRecordAlocator* p);
173
+ multiRecordAlocator* mra() const;
174
+
175
+ void find(eFindType type = findForword);
139
176
  void findFirst();
140
177
  void findLast();
141
178
  void findNext(bool notIncCurrent = true);
142
179
  void findPrev(bool notIncCurrent = true);
143
180
  bookmark_td bookmarkFindCurrent() const;
144
181
  void setQuery(const queryBase* query);
145
- void setFilter(const _TCHAR* str, ushort_td rejectCount, ushort_td cacheCount);
146
- const _TCHAR* filterStr();
182
+ void setFilter(const _TCHAR* str, ushort_td rejectCount,
183
+ ushort_td cacheCount, bool autoEscape = true);
147
184
  short fieldNumByName(const _TCHAR* name);
148
185
  unsigned char getFVbyt(short index);
149
186
  short getFVsht(short index);
@@ -166,7 +203,6 @@ public:
166
203
  void setFV(short index, double data);
167
204
  void setFV(short index, float data);
168
205
  void setFV(short index, unsigned char data);
169
- void setFV(short index, bool data);
170
206
  void setFV(short index, short data);
171
207
  void setFVA(short index, const char* data);
172
208
  void setFV(short index, int data);
@@ -179,29 +215,36 @@ public:
179
215
  const wchar_t* getFVWstr(short index);
180
216
  void setFVW(short index, const wchar_t* data);
181
217
  void setFVW(const _TCHAR* fieldName, const wchar_t* data);
182
-
183
218
  #endif
184
219
 
185
220
  #ifdef _UNICODE
186
-
187
- inline const wchar_t* getFVstr(short index) {return getFVWstr(index);};
188
-
189
- inline const wchar_t* getFVstr(const wchar_t* fieldName) {return getFVWstr(fieldName);};
190
-
191
- inline void setFV(short index, const wchar_t* data) {setFVW(index, data);};
192
-
193
- inline void setFV(const wchar_t* fieldName, const wchar_t* data) {setFVW(fieldName, data);};
194
-
221
+ inline const wchar_t* getFVstr(short index) { return getFVWstr(index); };
222
+ inline const wchar_t* getFVstr(const wchar_t* fieldName)
223
+ {
224
+ return getFVWstr(fieldName);
225
+ };
195
226
  #else
227
+ inline const char* getFVstr(short index) { return getFVAstr(index); };
228
+ inline const char* getFVstr(const char* fieldName)
229
+ {
230
+ return getFVAstr(fieldName);
231
+ };
232
+ #endif
196
233
 
197
- inline const char* getFVstr(short index) {return getFVAstr(index);};
198
-
199
- inline const char* getFVstr(const char* fieldName) {return getFVAstr(fieldName);};
200
-
201
- inline void setFV(short index, const char* data) {setFVA(index, data);};
202
-
203
- inline void setFV(const char* fieldName, const char* data) {setFVA(fieldName, data);};
204
-
234
+ inline void setFV(short index, const char* data) { setFVA(index, data); };
235
+ inline void setFV(const _TCHAR* fieldName, const char* data)
236
+ {
237
+ setFVA(fieldName, data);
238
+ };
239
+ #ifdef _WIN32
240
+ inline void setFV(short index, const wchar_t* data)
241
+ {
242
+ setFVW(index, data);
243
+ };
244
+ inline void setFV(const _TCHAR* fieldName, const wchar_t* data)
245
+ {
246
+ setFVW(fieldName, data);
247
+ };
205
248
  #endif
206
249
 
207
250
  void setFV(const _TCHAR* fieldName, double data);
@@ -211,53 +254,336 @@ public:
211
254
  void setFV(const _TCHAR* fieldName, const void* data, uint_td size);
212
255
  void setFV(short index, __int64 data);
213
256
  void setFV(const _TCHAR* fieldName, __int64 data);
214
- void* fieldPtr(short index);
257
+ void* fieldPtr(short index) const;
215
258
  void keyValueDescription(_TCHAR* buf, int bufsize);
216
-
259
+ short getCurProcFieldCount() const;
260
+ short getCurProcFieldIndex(short index) const;
261
+ client::fields& fields();
217
262
  };
218
263
 
264
+ #define KEYVALUE_PTR 0
265
+ #define KEYVALUE_STR 1
266
+ #define KEYVALUE_NEED_COPY 2
267
+ #define KEYVALUE_STR_NEED_COPY 3
268
+
269
+ /** @cond INTERNAL */
270
+
271
+ struct DLLLIB keyValuePtr
272
+ {
273
+
274
+ const void* ptr;
275
+ ushort_td len;
276
+ short type;
277
+ keyValuePtr(const void* p, ushort_td l, short typeStr);
278
+ ~keyValuePtr();
279
+ };
280
+ /** @endcond */
219
281
 
220
- class AGRPACK queryBase
282
+ class DLLLIB queryBase
221
283
  {
222
- friend class filter;
284
+ friend class filter;
223
285
  struct impl* m_impl;
224
286
 
287
+ protected:
225
288
  const std::vector<std::_tstring>& getSelects() const;
226
289
  const std::vector<std::_tstring>& getWheres() const;
227
290
  const std::vector<std::_tstring>& getSeekKeyValues() const;
291
+ const std::vector<keyValuePtr>& getSeekValuesPtr() const;
292
+
228
293
  public:
294
+ enum eOptimize
295
+ {
296
+ none = 0,
297
+ joinHasOneOrHasMany = 1,
298
+ combineCondition = 2
299
+ };
300
+
229
301
  queryBase();
302
+ queryBase(const queryBase& r);
303
+ queryBase& operator=(const queryBase& r);
304
+
230
305
  virtual ~queryBase();
231
306
  void reset();
232
307
  void clearSeekKeyValues();
233
308
  void clearSelectFields();
234
309
  void addField(const _TCHAR* name);
235
- void addLogic(const _TCHAR* name, const _TCHAR* logic, const _TCHAR* value);
236
- void addLogic(const _TCHAR* combine, const _TCHAR* name, const _TCHAR* logic, const _TCHAR* value);
237
- void addSeekKeyValue(const _TCHAR* value, bool reset=false);
238
- queryBase& queryString(const _TCHAR* str);
310
+ void addLogic(const _TCHAR* name, const _TCHAR* logic, const _TCHAR* value);
311
+ void addLogic(const _TCHAR* combine, const _TCHAR* name,
312
+ const _TCHAR* logic, const _TCHAR* value);
313
+ void addSeekKeyValue(const _TCHAR* value, bool reset = false);
314
+ void addSeekKeyValuePtr(const void* value, ushort_td len, short typeStr,
315
+ bool reset = false);
316
+ void reserveSeekKeyValueSize(size_t v);
317
+ void reserveSeekKeyValuePtrSize(size_t v);
318
+ queryBase& queryString(const _TCHAR* str, bool autoEscape = false);
239
319
  queryBase& reject(int v);
240
- queryBase& limit(int v);
320
+ queryBase& limit(int v);
241
321
  queryBase& direction(table::eFindType v);
242
322
  queryBase& all();
243
- queryBase& optimize(bool v);
323
+ queryBase& optimize(eOptimize v);
324
+ queryBase& bookmarkAlso(bool v);
325
+ queryBase& joinKeySize(int v);
326
+
244
327
  const _TCHAR* toString() const;
245
328
  table::eFindType getDirection() const;
246
- int getReject()const;
247
- int getLimit()const;
248
- bool isAll()const;
249
- bool isOptimize()const;
250
- void release();
329
+ int getReject() const;
330
+ int getLimit() const;
331
+ bool isAll() const;
332
+ int getJoinKeySize() const;
333
+ eOptimize getOptimize() const;
334
+ bool isBookmarkAlso() const;
335
+ short selectCount() const;
336
+ const _TCHAR* getSelect(short index) const;
337
+ short whereTokens() const;
338
+ const _TCHAR* getWhereToken(short index) const;
339
+ void setWhereToken(short index, const _TCHAR* v);
340
+ void reverseAliasName(const _TCHAR* alias, const _TCHAR* src);
341
+
342
+ void release(); // don't virtual
251
343
  static queryBase* create();
252
344
  };
253
345
 
346
+ /** @cond INTERNAL */
347
+
348
+ inline std::_tstring lexical_cast(__int64 v)
349
+ {
350
+ _TCHAR tmp[256];
351
+ _i64tot_s(v, tmp, 256, 10);
352
+ return std::_tstring(tmp);
353
+ }
354
+
355
+ inline std::_tstring lexical_cast(int v)
356
+ {
357
+ _TCHAR tmp[256];
358
+ _ltot_s(v, tmp, 256, 10);
359
+ return std::_tstring(tmp);
360
+ }
361
+
362
+ inline std::_tstring lexical_cast(short v)
363
+ {
364
+ _TCHAR tmp[256];
365
+ _ltot_s((int)v, tmp, 256, 10);
366
+ return std::_tstring(tmp);
367
+ }
368
+
369
+ inline std::_tstring lexical_cast(char v)
370
+ {
371
+ _TCHAR tmp[256];
372
+ _ltot_s((int)v, tmp, 256, 10);
373
+ return std::_tstring(tmp);
374
+ }
375
+
376
+ inline std::_tstring lexical_cast(double v)
377
+ {
378
+ _TCHAR tmp[256];
379
+ _stprintf_s(tmp, 256, _T("%.*f"), 15, v);
380
+ return std::_tstring(tmp);
381
+ }
382
+
383
+ inline std::_tstring lexical_cast(float v)
384
+ {
385
+ _TCHAR tmp[256];
386
+ _stprintf_s(tmp, 256, _T("%.*f"), 15, v);
387
+ return std::_tstring(tmp);
388
+ }
389
+
390
+ inline std::_tstring lexical_cast(const _TCHAR* v)
391
+ {
392
+ return std::_tstring(v);
393
+ }
394
+
395
+ class qlogic
396
+ {
397
+ std::_tstring m_name;
398
+ std::_tstring m_value;
399
+ std::_tstring m_type;
400
+ combineType m_next;
401
+
402
+ public:
403
+ template <class T>
404
+ qlogic(const _TCHAR* name, const _TCHAR* type, T value, combineType next)
405
+ : m_name(name), m_type(type), m_next(next)
406
+ {
407
+ m_value = lexical_cast(value);
408
+ }
409
+ };
410
+ /** @endcond */
411
+
412
+ class DLLLIB query : public queryBase
413
+ {
414
+ public:
415
+ query() : queryBase() {}
416
+ query(const query& r) : queryBase(r) {}
417
+
418
+ virtual ~query() {}
419
+
420
+ query& reset()
421
+ {
422
+ queryBase::reset();
423
+ return *this;
424
+ }
425
+
426
+ query& select(const _TCHAR* name, const _TCHAR* name1 = NULL,
427
+ const _TCHAR* name2 = NULL, const _TCHAR* name3 = NULL,
428
+ const _TCHAR* name4 = NULL, const _TCHAR* name5 = NULL,
429
+ const _TCHAR* name6 = NULL, const _TCHAR* name7 = NULL,
430
+ const _TCHAR* name8 = NULL, const _TCHAR* name9 = NULL,
431
+ const _TCHAR* name10 = NULL)
432
+ {
433
+ if (_tcscmp(name, _T("*")) == 0)
434
+ {
435
+ clearSelectFields();
436
+ return *this;
437
+ }
438
+ addField(name);
439
+ if (name1)
440
+ addField(name1);
441
+ if (name2)
442
+ addField(name2);
443
+ if (name3)
444
+ addField(name3);
445
+ if (name4)
446
+ addField(name4);
447
+ if (name5)
448
+ addField(name5);
449
+ if (name6)
450
+ addField(name6);
451
+ if (name7)
452
+ addField(name7);
453
+ if (name8)
454
+ addField(name8);
455
+ if (name9)
456
+ addField(name9);
457
+ if (name10)
458
+ addField(name10);
459
+ return *this;
460
+ }
461
+
462
+ template <class T>
463
+ query& where(const _TCHAR* name, const _TCHAR* qlogic, T value)
464
+ {
465
+ addLogic(name, qlogic, lexical_cast(value).c_str());
466
+ return *this;
467
+ }
468
+
469
+ template <class T>
470
+ query& and_(const _TCHAR* name, const _TCHAR* qlogic, T value)
471
+ {
472
+ if (whereTokens() == 0)
473
+ THROW_BZS_ERROR_WITH_CODEMSG(STATUS_FILTERSTRING_ERROR,
474
+ _T("Invalid function call."));
475
+
476
+ addLogic(_T("and"), name, qlogic, lexical_cast(value).c_str());
477
+ return *this;
478
+ }
479
+
480
+ template <class T>
481
+ query& or_(const _TCHAR* name, const _TCHAR* qlogic, T value)
482
+ {
483
+ if (whereTokens() == 0)
484
+ THROW_BZS_ERROR_WITH_CODEMSG(STATUS_FILTERSTRING_ERROR,
485
+ _T("Invalid function call."));
486
+
487
+ addLogic(_T("or"), name, qlogic, lexical_cast(value).c_str());
488
+ return *this;
489
+ }
490
+
491
+ template <class T0, class T1, class T2, class T3, class T4, class T5,
492
+ class T6, class T7>
493
+ query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
494
+ const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
495
+ {
496
+ addSeekKeyValue(lexical_cast(kv0).c_str());
497
+ addSeekKeyValue(lexical_cast(kv1).c_str());
498
+ addSeekKeyValue(lexical_cast(kv2).c_str());
499
+ addSeekKeyValue(lexical_cast(kv3).c_str());
500
+ addSeekKeyValue(lexical_cast(kv4).c_str());
501
+ addSeekKeyValue(lexical_cast(kv5).c_str());
502
+ addSeekKeyValue(lexical_cast(kv6).c_str());
503
+ addSeekKeyValue(lexical_cast(kv7).c_str());
504
+ return *this;
505
+ }
506
+ template <class T0, class T1, class T2, class T3, class T4, class T5,
507
+ class T6>
508
+ query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
509
+ const T4 kv4, const T5 kv5, const T6 kv6)
510
+ {
511
+ addSeekKeyValue(lexical_cast(kv0).c_str());
512
+ addSeekKeyValue(lexical_cast(kv1).c_str());
513
+ addSeekKeyValue(lexical_cast(kv2).c_str());
514
+ addSeekKeyValue(lexical_cast(kv3).c_str());
515
+ addSeekKeyValue(lexical_cast(kv4).c_str());
516
+ addSeekKeyValue(lexical_cast(kv5).c_str());
517
+ addSeekKeyValue(lexical_cast(kv6).c_str());
518
+ return *this;
519
+ }
520
+
521
+ template <class T0, class T1, class T2, class T3, class T4, class T5>
522
+ query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
523
+ const T4 kv4, const T5 kv5)
524
+ {
525
+ addSeekKeyValue(lexical_cast(kv0).c_str());
526
+ addSeekKeyValue(lexical_cast(kv1).c_str());
527
+ addSeekKeyValue(lexical_cast(kv2).c_str());
528
+ addSeekKeyValue(lexical_cast(kv3).c_str());
529
+ addSeekKeyValue(lexical_cast(kv4).c_str());
530
+ addSeekKeyValue(lexical_cast(kv5).c_str());
531
+ return *this;
532
+ }
533
+
534
+ template <class T0, class T1, class T2, class T3, class T4>
535
+ query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,
536
+ const T4 kv4)
537
+ {
538
+ addSeekKeyValue(lexical_cast(kv0).c_str());
539
+ addSeekKeyValue(lexical_cast(kv1).c_str());
540
+ addSeekKeyValue(lexical_cast(kv2).c_str());
541
+ addSeekKeyValue(lexical_cast(kv3).c_str());
542
+ addSeekKeyValue(lexical_cast(kv4).c_str());
543
+ return *this;
544
+ }
545
+
546
+ template <class T0, class T1, class T2, class T3>
547
+ query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
548
+ {
549
+ addSeekKeyValue(lexical_cast(kv0).c_str());
550
+ addSeekKeyValue(lexical_cast(kv1).c_str());
551
+ addSeekKeyValue(lexical_cast(kv2).c_str());
552
+ addSeekKeyValue(lexical_cast(kv3).c_str());
553
+ return *this;
554
+ }
555
+
556
+ template <class T0, class T1, class T2>
557
+ query& in(const T0 kv0, const T1 kv1, const T2 kv2)
558
+ {
559
+ addSeekKeyValue(lexical_cast(kv0).c_str());
560
+ addSeekKeyValue(lexical_cast(kv1).c_str());
561
+ addSeekKeyValue(lexical_cast(kv2).c_str());
562
+ return *this;
563
+ }
564
+
565
+ template <class T0, class T1> query& in(const T0 kv0, const T1 kv1)
566
+ {
567
+ addSeekKeyValue(lexical_cast(kv0).c_str());
568
+ addSeekKeyValue(lexical_cast(kv1).c_str());
569
+ return *this;
570
+ }
571
+
572
+ template <class T0> query& in(const T0 kv0)
573
+ {
574
+ addSeekKeyValue(lexical_cast(kv0).c_str());
575
+ return *this;
576
+ }
577
+
578
+ static query* create(); // implemet int activeTable.cpp
579
+ };
254
580
 
255
- #pragma warning(default:4251)
581
+ #pragma warning(default : 4251)
256
582
 
583
+ } // namespace client
584
+ } // namespace tdap
585
+ } // namespace protocol
586
+ } // namespace db
587
+ } // namespace bzs
257
588
 
258
- }// namespace client
259
- }// namespace tdap
260
- }// namespace protocol
261
- }// namespace db
262
- }// namespace bzs
263
- #endif//BZS_DB_PROTOCOL_TDAP_CLIENT_TABLE_H
589
+ #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_TABLE_H