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
@@ -1,5 +1,5 @@
1
- #ifndef trdormapiH
2
- #define trdormapiH
1
+ #ifndef BZS_DB_PROTOCOL_TDAP_CLIENT_TRDORMAPI_H
2
+ #define BZS_DB_PROTOCOL_TDAP_CLIENT_TRDORMAPI_H
3
3
  /*=================================================================
4
4
  Copyright (C) 2013 BizStation Corp All rights reserved.
5
5
 
@@ -14,16 +14,16 @@
14
14
  GNU General Public License for more details.
15
15
 
16
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
17
+ along with this program; if not, write to the Free Software
18
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
19
  02111-1307, USA.
20
20
  =================================================================*/
21
- #include <bzs/db/protocol/tdap/client/trdboostapi.h>
22
- #include <iostream>
21
+ #include "trdboostapi.h"
22
+ #include "fieldNameAlias.h"
23
+ #include "memRecord.h"
24
+ #include "groupComp.h"
25
+ #include <boost/shared_array.hpp>
23
26
  #include <vector>
24
- #include <tstring.h>
25
- #include <boost/noncopyable.hpp>
26
- #include <boost/lexical_cast.hpp>
27
27
 
28
28
  namespace bzs
29
29
  {
@@ -36,242 +36,109 @@ namespace tdap
36
36
  namespace client
37
37
  {
38
38
 
39
- class logic
40
- {
41
- std::_tstring m_name;
42
- std::_tstring m_value;
43
- std::_tstring m_type;
44
- combineType m_next;
39
+ /** @cond INTERNAL */
40
+ template <class Container>
41
+ typename Container::key_type resolvKeyValue(Container& m,
42
+ const std::_tstring& name,
43
+ bool noexception = false);
45
44
 
46
- public:
45
+ template <class Container> typename Container::iterator begin(Container& m);
47
46
 
48
- logic(const _TCHAR* name, const _TCHAR* type, const _TCHAR* value, combineType next)
49
- :m_name(name),m_type(type),m_value(value),m_next(next){}
50
- logic(const _TCHAR* name, const _TCHAR* type, int value, combineType next)
51
- :m_name(name),m_type(type),m_next(next)
52
- {
53
- _TCHAR buf[50];
54
- m_value = _ltot(value, buf, 10);
55
- }
56
- logic(const _TCHAR* name, const _TCHAR* type, __int64 value, combineType next)
57
- :m_name(name),m_type(type),m_next(next)
58
- {
59
- _TCHAR buf[50];
60
- m_value = _i64tot(value, buf, 10);
61
- }
62
- logic(const _TCHAR* name, const _TCHAR* type, double value, combineType next)
63
- :m_name(name),m_type(type),m_next(next)
64
- {
65
- _TCHAR buf[50];
66
- _stprintf(buf, _T("%.*f"),15, value);
67
- m_value = buf;
68
- }
69
- };
47
+ template <class Container> typename Container::iterator end(Container& m);
70
48
 
71
- class databaseManager : boost::noncopyable
72
- {
73
- database* m_db;
74
- database_ptr m_dbPtr;
75
- std::vector<table_ptr> m_tables;
76
- int findTable(const _TCHAR* name)
77
- {
78
- for (int i=0;i<(int)m_tables.size();++i)
79
- if (_tcscmp(m_tables[i]->tableDef()->tableName(), name)==0)
80
- return i;
81
- return -1;
82
- }
83
- public:
84
- databaseManager(database_ptr db):m_dbPtr(db),m_db(db.get()){};
85
- databaseManager(database* db):m_db(db){};
86
- table_ptr table(const _TCHAR* name)
87
- {
88
- int index = findTable(name);
89
- if (index !=-1)
90
- return m_tables[index];
91
- table_ptr t = openTable(m_db, name);
92
- m_tables.push_back(t);
93
- return t;
94
- }
95
- database* db(){return m_db;}
49
+ template <class Container> void clear(Container& m);
96
50
 
97
- };
51
+ template <class Container>
52
+ void push_back(Container& m, typename Container::row_type c);
53
+
54
+ template <class ROW_TYPE, class KEY_TYPE, class T>
55
+ void setValue(ROW_TYPE& row, KEY_TYPE key, const T& value);
56
+ /** @endcond */
57
+
58
+ /** @cond INTERNAL */
98
59
 
99
- class query : public queryBase
60
+ template <class T>
61
+ inline typename std::vector<T>::iterator begin(std::vector<T>& m)
100
62
  {
101
- public:
102
- query():queryBase(){}
63
+ return m.begin();
64
+ }
103
65
 
104
- query& select(const TCHAR* name, const TCHAR* name1=NULL, const TCHAR* name2=NULL, const TCHAR* name3=NULL
105
- ,const TCHAR* name4=NULL, const TCHAR* name5=NULL, const TCHAR* name6=NULL, const TCHAR* name7=NULL
106
- ,const TCHAR* name8=NULL, const TCHAR* name9=NULL, const TCHAR* name10=NULL)
107
- {
108
- if (_tcscmp(name, _T("*"))==0)
109
- {
110
- clearSelectFields();
111
- return *this;
112
- }
113
- addField(name);
114
- if (name1) addField(name1);
115
- if (name2) addField(name2);
116
- if (name3) addField(name3);
117
- if (name4) addField(name4);
118
- if (name5) addField(name5);
119
- if (name6) addField(name6);
120
- if (name7) addField(name7);
121
- if (name8) addField(name8);
122
- if (name9) addField(name9);
123
- if (name10) addField(name10);
124
- return *this;
125
- }
66
+ template <class T>
67
+ inline typename std::vector<T>::iterator end(std::vector<T>& m)
68
+ {
69
+ return m.end();
70
+ }
126
71
 
127
- template <class T>
128
- query& where(const _TCHAR* name, const _TCHAR* logic, T value)
129
- {
130
- addLogic(name, logic, boost::lexical_cast<std::_tstring>(value).c_str());
131
- return *this;
132
- }
72
+ template <class T> inline void push_back(std::vector<T>& m, T c)
73
+ {
74
+ return m.push_back(c);
75
+ }
133
76
 
134
- template <class T>
135
- query& and(const _TCHAR* name, const _TCHAR* type, T value)
136
- {
137
- if (m_wheres.size() == 0)
138
- throw bzs::rtl::exception(STATUS_FILTERSTRING_ERROR, _T("Invalid function call."));
77
+ #if (_MSC_VER || (__BCPLUSPLUS__ && !defined(__clang__)))
139
78
 
140
- addLogic(_T("and"), name, logic, boost::lexical_cast<std::_tstring>(value).c_str());
141
- return *this;
142
- }
79
+ /* Container has readBefore(table_ptr, alias) function*/
80
+ template <class Container>
81
+ inline void readBefore(Container& mdls, table_ptr tb,
82
+ const aliasMap_type* alias,
83
+ typename Container::header_type* dummy = 0)
84
+ {
85
+ mdls.readBefore(tb, alias);
86
+ }
143
87
 
144
- template <class T>
145
- query& or(const _TCHAR* name, const _TCHAR* type, T value)
146
- {
147
- if (m_wheres.size() == 0)
148
- throw bzs::rtl::exception(STATUS_FILTERSTRING_ERROR, _T("Invalid function call."));
88
+ /* Container has'nt readBefore(table_ptr, alias) function*/
89
+ template <class Container> inline void readBefore(...){};
149
90
 
150
- addLogic(_T("or"), name, logic, boost::lexical_cast<std::_tstring>(value).c_str());
151
- return *this;
152
- }
91
+ #else
153
92
 
154
- template <class T>
155
- query& in(const _TCHAR* name, const _TCHAR* type, T value)
156
- {
157
- if (m_wheres.size() == 0)
158
- throw bzs::rtl::exception(STATUS_FILTERSTRING_ERROR, _T("Invalid function call."));
159
-
160
- addLogic(_T("or"), name, logic, boost::lexical_cast<std::_tstring>(value).c_str());
161
- return *this;
162
- }
163
-
164
- template <class T0, class T1 , class T2, class T3
165
- ,class T4, class T5 , class T6 , class T7>
166
- query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
167
- ,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
168
- {
169
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
170
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
171
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv2).c_str());
172
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv3).c_str());
173
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv4).c_str());
174
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv5).c_str());
175
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv6).c_str());
176
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv7).c_str());
177
- return *this;
178
- }
179
- template <class T0, class T1 , class T2, class T3
180
- ,class T4, class T5 , class T6>
181
- query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
182
- ,const T4 kv4, const T5 kv5, const T6 kv6)
183
- {
184
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
185
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
186
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv2).c_str());
187
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv3).c_str());
188
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv4).c_str());
189
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv5).c_str());
190
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv6).c_str());
191
- return *this;
192
- }
193
-
194
- template <class T0, class T1 , class T2, class T3
195
- ,class T4, class T5>
196
- query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
197
- ,const T4 kv4, const T5 kv5)
198
- {
199
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
200
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
201
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv2).c_str());
202
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv3).c_str());
203
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv4).c_str());
204
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv5).c_str());
205
- return *this;
206
- }
207
-
208
- template <class T0, class T1 , class T2, class T3, class T4>
209
- query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4)
210
- {
211
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
212
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
213
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv2).c_str());
214
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv3).c_str());
215
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv4).c_str());
216
- return *this;
217
- }
218
-
219
- template <class T0, class T1 , class T2, class T3>
220
- query& in(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
221
- {
222
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
223
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
224
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv2).c_str());
225
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv3).c_str());
226
- return *this;
227
- }
228
-
229
- template <class T0, class T1 , class T2>
230
- query& in(const T0 kv0, const T1 kv1, const T2 kv2)
231
- {
232
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
233
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
234
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv2).c_str());
235
- return *this;
236
- }
93
+ template <class Container>
94
+ void push_back(Container& m, typename Container::item_type c);
237
95
 
238
- template <class T0, class T1>
239
- query& in(const T0 kv0, const T1 kv1)
240
- {
241
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
242
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv1).c_str());
243
- return *this;
244
- }
96
+ template <class T> class has_header
97
+ {
98
+ typedef char yes;
99
+ typedef struct
100
+ {
101
+ char foo[2];
102
+ } no;
245
103
 
246
- template <class T0>
247
- query& in(const T0 kv0)
248
- {
249
- addSeekKeyValue(boost::lexical_cast<std::_tstring>(kv0).c_str());
250
- return *this;
251
- }
104
+ template <class C> static yes test(typename C::header_type*);
252
105
 
253
- };
106
+ template <class C> static no test(...);
254
107
 
108
+ public:
109
+ #ifdef SWIG
110
+ static const bool value;
111
+ #else
112
+ static const bool value = sizeof(test<T>(0)) == sizeof(char);
113
+ #endif
114
+ };
255
115
 
256
- template <class T>
257
- inline std::vector<T>::iterator begin(std::vector<T>& m){return m.begin();}
116
+ /* Container has readBefore(table_ptr, alias) function*/
117
+ template <class Container>
118
+ inline void
119
+ readBefore(Container& mdls, table_ptr tb, const aliasMap_type* alias,
120
+ typename boost::enable_if<has_header<Container> >::type* = 0)
258
121
 
259
- template <class T>
260
- inline std::vector<T>::iterator end(std::vector<T>& m){return m.end();}
122
+ {
123
+ mdls.readBefore(tb, alias);
124
+ }
261
125
 
262
- template <class T>
263
- inline void push_back(std::vector<T>& m, T c){return m.push_back(c);}
126
+ /* Container has'nt readBefore(table_ptr, alias) function*/
127
+ template <class Container>
128
+ inline void
129
+ readBefore(Container& mdls, table_ptr tb, const aliasMap_type* alias,
130
+ typename boost::disable_if<has_header<Container> >::type* = 0)
131
+ {
132
+ }
133
+ #endif
264
134
 
265
135
  /* Container operation handlter
266
136
 
267
137
  */
268
- template <class MAP
269
- , class Container
270
- , class T=MAP::mdl_typename
271
- , class FDI=MAP::fdi_typename>
138
+ template <class MAP, class Container, class T = typename MAP::mdl_typename,
139
+ class FDI = typename MAP::fdi_typename>
272
140
  class mdlsHandler
273
141
  {
274
- typedef std::vector<boost::shared_ptr<typename T> > collection_vec_type;
275
142
  mdlsHandler();
276
143
 
277
144
  protected:
@@ -281,29 +148,29 @@ protected:
281
148
  MAP* m_map;
282
149
 
283
150
  template <class mdls_type>
284
- void addContainer(T* u, typename mdls_type::item_type* p )
151
+ void addContainer(T* u, typename mdls_type::item_type* p)
285
152
  {
286
- mdls_type::item_type ptr(u);
153
+ typename mdls_type::item_type ptr(u);
287
154
  push_back(m_mdls, ptr);
288
155
  }
289
156
 
290
- template <class mdls_type>
291
- void addContainer(T* u, ...)
157
+ template <class mdls_type> void addContainer(T* u, ...)
292
158
  {
293
159
  push_back(m_mdls, boost::shared_ptr<T>(u));
294
160
  }
295
161
 
296
-
297
162
  public:
298
- mdlsHandler(Container& mdls):m_mdls(mdls){}
163
+ mdlsHandler(Container& mdls) : m_mdls(mdls) {}
299
164
 
300
165
  virtual ~mdlsHandler(){};
301
166
 
302
- void init(int option, FDI* fdi, MAP& map)
167
+ void init(int option, FDI* fdi, MAP& map, table_ptr tb,
168
+ const aliasMap_type* alias = NULL)
303
169
  {
304
170
  m_option = option;
305
171
  m_fdi = fdi;
306
172
  m_map = &map;
173
+ readBefore<Container>(m_mdls, tb, alias);
307
174
  }
308
175
 
309
176
  void operator()(const fields& fds)
@@ -312,18 +179,17 @@ public:
312
179
  m_map->readMap(*u, fds, m_option);
313
180
  addContainer<Container>(u, 0);
314
181
  }
315
-
316
182
  };
317
183
 
318
184
  /* For sort in readEach
319
185
  */
320
- template <class MAP, class T>
321
- class compFunc
186
+ template <class MAP, class T> class compFunc
322
187
  {
323
188
  MAP& m_map;
324
189
  int m_keynum;
190
+
325
191
  public:
326
- compFunc(MAP& map, int keynum):m_map(map),m_keynum(keynum){}
192
+ compFunc(MAP& map, int keynum) : m_map(map), m_keynum(keynum) {}
327
193
  bool operator()(T* l, T* r) const
328
194
  {
329
195
  return m_map.compKeyValue(*l, *r, m_keynum);
@@ -335,9 +201,8 @@ public:
335
201
  }
336
202
  };
337
203
 
338
-
339
204
  template <class T, class RET>
340
- bool sortFuncBase(T&l, T& r , RET (T::*func1)() const)
205
+ bool sortFuncBase(const T& l, const T& r, RET (T::*func1)() const)
341
206
  {
342
207
  RET retl = (l.*func1)();
343
208
  RET retr = (r.*func1)();
@@ -345,51 +210,57 @@ bool sortFuncBase(T&l, T& r , RET (T::*func1)() const)
345
210
  }
346
211
 
347
212
  template <class T, class FUNC1, class FUNC2, class FUNC3>
348
- bool sortFunc(T&l, T& r , FUNC1 func1, FUNC2 func2, FUNC3 func3)
213
+ bool sortFunc(const T& l, const T& r, FUNC1 func1, FUNC2 func2, FUNC3 func3)
349
214
  {
350
215
  bool v = sortFuncBase(l, r, func1);
351
216
  if (func2)
352
217
  {
353
- if (v) return v;
218
+ if (v)
219
+ return v;
354
220
  v = sortFuncBase(r, l, func1);
355
- if (v) return !v;
221
+ if (v)
222
+ return !v;
356
223
  v = sortFuncBase(l, r, func2);
357
224
  if (func3)
358
225
  {
359
- if (v) return v;
226
+ if (v)
227
+ return v;
360
228
  v = sortFuncBase(r, l, func2);
361
- if (v) return !v;
229
+ if (v)
230
+ return !v;
362
231
  v = sortFuncBase(l, r, func3);
363
232
  }
364
233
  }
365
234
  return v;
366
235
  }
367
236
 
368
- template <class FUNC1, class FUNC2, class FUNC3>
369
- class sortFunctor
237
+ template <class FUNC1, class FUNC2, class FUNC3> class sortFunctor
370
238
  {
371
239
  FUNC1 m_func1;
372
240
  FUNC2 m_func2;
373
241
  FUNC3 m_func3;
242
+
374
243
  public:
375
244
  sortFunctor(FUNC1 func1, FUNC2 func2, FUNC3 func3)
376
- :m_func1(func1),m_func2(func2), m_func3(func3){}
377
- template <class T>
378
- bool operator()(T* l, T* r) const
245
+ : m_func1(func1), m_func2(func2), m_func3(func3)
246
+ {
247
+ }
248
+ template <class T> bool operator()(const T* l, const T* r) const
379
249
  {
380
250
  return sortFunc(*l, *r, m_func1, m_func2, m_func2);
381
251
  }
382
252
 
383
253
  template <class T>
384
- bool operator()(boost::shared_ptr<T>& l, boost::shared_ptr<T>& r) const
254
+ bool operator()(const boost::shared_ptr<T>& l,
255
+ const boost::shared_ptr<T>& r) const
385
256
  {
386
- bool v = sortFunc(*l, *r, m_func1, m_func2, m_func2);
257
+ bool v = sortFunc(*l, *r, m_func1, m_func2, m_func2);
387
258
  return v;
388
259
  }
389
260
  };
390
261
 
391
262
  template <class Container, class FUNC1, class FUNC2, class FUNC3>
392
- void sort(Container& mdls, FUNC1 func1, FUNC2 func2, FUNC3 func3 )
263
+ void sort(Container& mdls, FUNC1 func1, FUNC2 func2, FUNC3 func3)
393
264
  {
394
265
  sortFunctor<FUNC1, FUNC2, FUNC3> functor(func1, func2, func3);
395
266
  std::sort(begin(mdls), end(mdls), functor);
@@ -402,266 +273,311 @@ void sort(Container& mdls, FUNC1 func1, FUNC2 func2)
402
273
  std::sort(begin(mdls), end(mdls), functor);
403
274
  }
404
275
 
405
- template <class Container, class FUNC1>
406
- void sort(Container& mdls, FUNC1 func1)
276
+ template <class Container, class FUNC1> void sort(Container& mdls, FUNC1 func1)
407
277
  {
408
278
  sortFunctor<FUNC1, FUNC1, FUNC1> functor(func1, NULL, NULL);
409
279
  std::sort(begin(mdls), end(mdls), functor);
410
280
  }
411
281
 
412
282
  template <class T2, class T, class Container>
413
- inline boost::shared_ptr<std::vector<T> > listup(Container& mdls, T (T2::*func)()const)
283
+ inline boost::shared_ptr<std::vector<T> > listup(Container& mdls,
284
+ T (T2::*func)() const)
414
285
  {
415
286
  typename Container::iterator it = begin(mdls), ite = end(mdls);
416
287
 
417
- boost::shared_ptr<std::vector<T> > mdlst( new std::vector<T>());
418
- while(it != ite)
288
+ boost::shared_ptr<std::vector<T> > mdlst(new std::vector<T>());
289
+ while (it != ite)
419
290
  {
420
291
  T2& mdl = *(*it);
421
292
  T ref = (mdl.*func)();
422
293
  mdlst->push_back(ref);
423
294
  ++it;
424
295
  }
425
- return mdlst;
296
+ return mdlst;
426
297
  }
427
298
 
428
- template <class MAP, class T=MAP::mdl_typename, class FDI=MAP::fdi_typename>
429
- class activeTable : boost::noncopyable
299
+ class mraResetter
430
300
  {
431
- typedef std::vector<boost::shared_ptr<T> > collection_vec_type;
301
+ table_ptr& m_tb;
302
+
303
+ public:
304
+ mraResetter(table_ptr& tb) : m_tb(tb) {}
305
+
306
+ ~mraResetter()
307
+ {
308
+ if (m_tb->mra())
309
+ m_tb->mra()->setJoinType(mra_nojoin);
310
+ m_tb->setMra(NULL);
311
+ }
312
+ };
313
+
314
+ /** @endcond */
315
+
316
+ template <class MAP, class T = typename MAP::mdl_typename,
317
+ class FDI = typename MAP::fdi_typename>
318
+ class activeObject : boost::noncopyable
319
+ {
320
+ void init(idatabaseManager* mgr, const _TCHAR* name)
321
+ {
322
+ m_tb = mgr->table(name);
323
+ }
324
+
325
+ void init(database_ptr& db, const _TCHAR* name)
326
+ {
327
+ m_tb = openTable(db, name);
328
+ }
329
+
330
+ void init(database* db, const _TCHAR* name) { m_tb = openTable(db, name); }
331
+
332
+ protected:
432
333
  table_ptr m_tb;
433
334
  FDI* m_fdi;
434
335
  MAP m_map;
435
336
  int m_option;
436
- bool m_useTransactd;
337
+ fdNmaeAlias m_alias;
437
338
 
438
- inline size_t size(collection_vec_type& mdls){return mdls.size();}
439
- inline T& getItem(collection_vec_type& mdls, unsigned int index){return *(mdls[index]);}
440
- void init(databaseManager& mgr, const _TCHAR* name)
441
- {
442
- m_tb = mgr.table(name);
443
- }
339
+ public:
340
+ typedef std::vector<boost::shared_ptr<T> > collection_vec_type;
444
341
 
445
- void init(database_ptr& db, const _TCHAR* name)
342
+ explicit activeObject(idatabaseManager* mgr)
343
+ : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
446
344
  {
447
- m_tb = openTable(db, name);
345
+ init(mgr, m_map.getTableName());
346
+ if (table() && m_fdi)
347
+ initFdi(m_fdi, m_tb.get());
448
348
  }
449
349
 
450
- void init(database* db, const _TCHAR* name)
350
+ explicit activeObject(database_ptr& db)
351
+ : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
451
352
  {
452
- m_tb = openTable(db, name);
353
+ init(db, m_map.getTableName());
354
+ if (table() && m_fdi)
355
+ initFdi(m_fdi, m_tb.get());
453
356
  }
454
357
 
455
- public:
358
+ explicit activeObject(idatabaseManager* mgr, const _TCHAR* tableName)
359
+ : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
360
+ {
361
+ init(mgr, tableName);
362
+ if (table() && m_fdi)
363
+ initFdi(m_fdi, m_tb.get());
364
+ }
456
365
 
457
- activeTable(databaseManager& mgr)
366
+ /*explicit activeObject(dbmanager_ptr& mgr, const _TCHAR* tableName)
458
367
  :m_option(0)
459
368
  ,m_fdi(createFdi(m_fdi))
460
369
  ,m_map(*m_fdi)
461
- ,m_useTransactd(mgr.db()->isUseTransactd())
462
370
  {
463
- init(mgr, m_map.getTableName());
464
- if (table() && m_fdi)
465
- initFdi(m_fdi, m_tb.get());
371
+ init(mgr, tableName);
372
+ if (table() && m_fdi)
373
+ initFdi(m_fdi, m_tb.get());
466
374
  }
375
+ */
467
376
 
468
- activeTable(database_ptr& db)
469
- :m_option(0)
470
- ,m_fdi(createFdi(m_fdi))
471
- ,m_map(*m_fdi)
472
- ,m_useTransactd(db->isUseTransactd())
473
- {
474
- init(db, m_map.getTableName());
475
- if (table() && m_fdi)
476
- initFdi(m_fdi, m_tb.get());
477
- }
377
+ explicit activeObject(database_ptr& db, const _TCHAR* tableName)
378
+ : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
379
+ {
380
+ init(db, tableName);
381
+ if (table() && m_fdi)
382
+ initFdi(m_fdi, m_tb.get());
383
+ }
478
384
 
479
- ~activeTable(){destroyFdi(m_fdi);}
385
+ explicit activeObject(database* db, const _TCHAR* tableName)
386
+ : m_fdi(createFdi((FDI*)0)), m_map(*m_fdi), m_option(0)
387
+ {
388
+ init(db, tableName);
389
+ if (table() && m_fdi)
390
+ initFdi(m_fdi, m_tb.get());
391
+ }
480
392
 
481
- inline void beginBulkInsert(int maxBuflen){m_tb->beginBulkInsert(maxBuflen);}
482
- inline void abortBulkInsert(){m_tb->abortBulkInsert();}
483
- inline ushort_td commitBulkInsert() {m_tb->commitBulkInsert();}
393
+ ~activeObject() { destroyFdi(m_fdi); }
484
394
 
485
- activeTable& index(int v)
395
+ activeObject& index(int v)
486
396
  {
487
397
  m_tb->clearBuffer();
488
398
  m_tb->setKeyNum(v);
489
399
  return *this;
490
400
  }
491
401
 
492
- template <class T0>
493
- activeTable& keyValue(const T0 kv0)
494
- {
402
+ /** @cond INTERNAL */
403
+
404
+ template <class T0> activeObject& keyValue(const T0 kv0)
405
+ {
495
406
  keyValueSetter<T0>::set(m_tb, m_tb->keyNum(), kv0);
496
407
  return *this;
497
- }
408
+ }
498
409
 
499
410
  template <class T0, class T1>
500
- activeTable& keyValue(const T0 kv0, const T1 kv1)
501
- {
411
+ activeObject& keyValue(const T0 kv0, const T1 kv1)
412
+ {
502
413
  keyValueSetter<T0, T1>::set(m_tb, m_tb->keyNum(), kv0, kv1);
503
414
  return *this;
504
- }
415
+ }
505
416
 
506
- template <class T0, class T1 , class T2>
507
- activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2)
508
- {
417
+ template <class T0, class T1, class T2>
418
+ activeObject& keyValue(const T0 kv0, const T1 kv1, const T2 kv2)
419
+ {
509
420
  keyValueSetter<T0, T1, T2>::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2);
510
421
  return *this;
511
- }
422
+ }
512
423
 
513
- template <class T0, class T1 , class T2, class T3>
514
- activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
515
- {
516
- keyValueSetter<T0, T1, T2, T3>::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3);
424
+ template <class T0, class T1, class T2, class T3>
425
+ activeObject& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
426
+ const T3 kv3)
427
+ {
428
+ keyValueSetter<T0, T1, T2, T3>::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2,
429
+ kv3);
517
430
  return *this;
518
- }
519
-
520
- template <class T0, class T1 , class T2, class T3, class T4>
521
- activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
522
- ,const T4 kv4)
523
- {
524
- keyValueSetter<T0, T1, T2, T3, T4>
525
- ::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3, kv4);
431
+ }
432
+
433
+ template <class T0, class T1, class T2, class T3, class T4>
434
+ activeObject& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
435
+ const T3 kv3, const T4 kv4)
436
+ {
437
+ keyValueSetter<T0, T1, T2, T3, T4>::set(m_tb, m_tb->keyNum(), kv0, kv1,
438
+ kv2, kv3, kv4);
526
439
  return *this;
527
- }
528
-
529
- template <class T0, class T1 , class T2, class T3, class T4, class T5 >
530
- activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
531
- ,const T4 kv4, const T5 kv5)
532
- {
533
- keyValueSetter<T0, T1, T2, T3, T4, T5>
534
- ::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5);
440
+ }
441
+
442
+ template <class T0, class T1, class T2, class T3, class T4, class T5>
443
+ activeObject& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
444
+ const T3 kv3, const T4 kv4, const T5 kv5)
445
+ {
446
+ keyValueSetter<T0, T1, T2, T3, T4, T5>::set(m_tb, m_tb->keyNum(), kv0,
447
+ kv1, kv2, kv3, kv4, kv5);
535
448
  return *this;
536
- }
537
-
538
- template <class T0, class T1 , class T2, class T3, class T4, class T5 , class T6>
539
- activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
540
- ,const T4 kv4, const T5 kv5, const T6 kv6)
541
- {
542
- keyValueSetter<T0, T1, T2, T3, T4, T5, T6>
543
- ::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5, kv6);
449
+ }
450
+
451
+ template <class T0, class T1, class T2, class T3, class T4, class T5,
452
+ class T6>
453
+ activeObject& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
454
+ const T3 kv3, const T4 kv4, const T5 kv5,
455
+ const T6 kv6)
456
+ {
457
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(
458
+ m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5, kv6);
544
459
  return *this;
545
- }
546
-
547
- template <class T0, class T1 , class T2, class T3
548
- ,class T4, class T5 , class T6 , class T7>
549
- activeTable& keyValue(const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
550
- ,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
551
- {
552
- keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>
553
- ::set(m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
460
+ }
461
+
462
+ /** @endcond */
463
+
464
+ template <class T0, class T1, class T2, class T3, class T4, class T5,
465
+ class T6, class T7>
466
+ activeObject& keyValue(const T0 kv0, const T1 kv1, const T2 kv2,
467
+ const T3 kv3, const T4 kv4, const T5 kv5,
468
+ const T6 kv6, const T7 kv7)
469
+ {
470
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(
471
+ m_tb, m_tb->keyNum(), kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
554
472
  return *this;
555
- }
473
+ }
556
474
 
557
- inline table_ptr table() const {return m_tb;};
475
+ inline table_ptr table() const { return m_tb; };
558
476
 
559
- activeTable& option(int v)
477
+ activeObject& option(int v)
560
478
  {
561
479
  m_option = v;
562
480
  return *this;
563
481
  }
564
482
 
565
483
  template <class Any_Map_type>
566
- void readRange(Any_Map_type& map, queryBase& q)
484
+ activeObject& readMap(Any_Map_type& map, queryBase& q)
567
485
  {
568
- map.init(m_option, m_fdi, m_map);
486
+ mraResetter mras(m_tb);
487
+ m_alias.reverseAliasNamesQuery(q);
569
488
  m_tb->setQuery(&q);
570
489
  if (m_tb->stat())
571
490
  nstable::throwError(_T("Query is inaccurate"), &(*m_tb));
572
491
 
492
+ map.init(m_option, m_fdi, m_map, m_tb, &m_alias);
573
493
  m_tb->find(q.getDirection());
574
494
  if (q.getDirection() == table::findForword)
575
495
  {
576
496
  findIterator itsf(*m_tb);
577
497
  for_each(itsf, map);
578
- }else
498
+ }
499
+ else
579
500
  {
580
501
  findRvIterator itsf(*m_tb);
581
502
  for_each(itsf, map);
582
503
  }
504
+ return *this;
583
505
  }
584
506
 
585
-
586
507
  template <class Any_Map_type>
587
- void readRange(Any_Map_type& map, queryBase& q, validationFunc func)
508
+ activeObject& readMap(Any_Map_type& map, queryBase& q, validationFunc func)
588
509
  {
589
- map.init(m_option, m_fdi, m_map);
510
+ mraResetter mras(m_tb);
511
+ m_alias.reverseAliasNamesQuery(q);
512
+
590
513
  m_tb->setQuery(&q);
591
514
  if (m_tb->stat())
592
515
  nstable::throwError(_T("Query is inaccurate"), &(*m_tb));
516
+ map.init(m_option, m_fdi, m_map, m_tb, &m_alias);
593
517
  m_tb->find(q.getDirection());
594
518
  if (q.getDirection() == table::findForword)
595
519
  {
596
520
  findIterator itsf(*m_tb);
597
521
  filterdFindIterator it(itsf, func);
598
522
  for_each(it, map);
599
- }else
523
+ }
524
+ else
600
525
  {
601
526
  findRvIterator itsf(*m_tb);
602
527
  filterdFindRvIterator it(itsf, func);
603
528
  for_each(it, map);
604
529
  }
530
+ return *this;
605
531
  }
606
532
 
607
- void read(collection_vec_type& mdls, queryBase& q, validationFunc func)
533
+ activeObject& read(collection_vec_type& mdls, queryBase& q,
534
+ validationFunc func)
608
535
  {
609
536
  mdlsHandler<MAP, collection_vec_type> map(mdls);
610
- readRange(map, q, func);
537
+ return readMap(map, q, func);
611
538
  }
612
539
 
613
- void read(collection_vec_type& mdls, queryBase& q)
540
+ activeObject& read(collection_vec_type& mdls, queryBase& q)
614
541
  {
615
542
  mdlsHandler<MAP, collection_vec_type> map(mdls);
616
- readRange(map, q);
543
+ return readMap(map, q);
617
544
  }
618
545
 
619
- template <class Container>
620
- void read(Container& mdls, queryBase& q)
546
+ template <class Container> activeObject& read(Container& mdls, queryBase& q)
621
547
  {
622
548
  typename MAP::collection_orm_typename map(mdls);
623
- readRange(map, q);
549
+ return readMap(map, q);
624
550
  }
625
551
 
626
552
  template <class Container>
627
- void read(Container& mdls, queryBase& q, validationFunc func)
553
+ activeObject& read(Container& mdls, queryBase& q, validationFunc func)
628
554
  {
629
555
  typename MAP::collection_orm_typename map(mdls);
630
- readRange(map, q, func);
556
+ return readMap(map, q, func);
631
557
  }
632
558
 
633
- void read(T& mdl, bool setKeyValueFromObj=true)
559
+ template <class T2> void read(T2& mdl, bool setKeyValueFromObj = true)
634
560
  {
635
561
  fields fds(m_tb);
636
562
  if (setKeyValueFromObj)
637
563
  m_map.setKeyValues(mdl, fds, m_tb->keyNum());
638
564
  indexIterator it = readIndex(m_tb, eSeekEqual);
639
565
  if (m_tb->stat() != 0)
640
- nstable::throwError(_T("activeTable read"), &(*m_tb));
566
+ nstable::throwError(_T("activeObject read"), &(*m_tb));
641
567
  m_map.readMap(mdl, fds, m_option);
642
568
  }
643
569
 
644
- void update(T& mdl, bool setKeyValueFromObj=true)
570
+ template <class T2> void update(T2& mdl, bool setKeyValueFromObj = true)
645
571
  {
646
572
  fields fds(m_tb);
647
573
  if (setKeyValueFromObj)
648
574
  m_map.setKeyValues(mdl, fds, m_tb->keyNum());
649
575
  indexIterator it = readIndex(m_tb, eSeekEqual);
650
576
  if (m_tb->stat() != 0)
651
- nstable::throwError(_T("activeTable update"), &(*m_tb));
577
+ nstable::throwError(_T("activeObject update"), &(*m_tb));
652
578
 
653
579
  m_map.writeMap(mdl, fds, m_option);
654
580
  updateRecord(it);
655
-
656
- }
657
-
658
- template <class Container>
659
- void update(Container& mdls)
660
- {
661
- typename Container::iterator it = begin(mdls),ite = end(mdls);
662
- while (it != ite)
663
- update(*it);
664
-
665
581
  }
666
582
 
667
583
  // No need object
@@ -669,27 +585,22 @@ public:
669
585
  {
670
586
  readIndex(m_tb, eSeekEqual);
671
587
  if (m_tb->stat() != 0)
672
- nstable::throwError(_T("activeTable delete"), &(*m_tb));
588
+ nstable::throwError(_T("activeObject delete"), &(*m_tb));
673
589
  m_tb->del();
590
+ if (m_tb->stat() != 0)
591
+ nstable::throwError(_T("activeObject delete"), &(*m_tb));
674
592
  }
675
593
 
676
- //Recieve delete record by mdl
677
- void del(T& mdl, bool setKeyValueFromObj=true)
594
+ // Recieve delete record by mdl
595
+ template <class T2> void del(T2& mdl, bool setKeyValueFromObj = true)
678
596
  {
679
597
  read(mdl, setKeyValueFromObj);
680
598
  m_tb->del();
599
+ if (m_tb->stat() != 0)
600
+ nstable::throwError(_T("activeObject delete"), &(*m_tb));
681
601
  }
682
602
 
683
- template <class Container>
684
- void del(Container& mdls)
685
- {
686
- typename Container::iterator it = begin(mdls),ite = end(mdls);
687
- while (it != ite)
688
- del(*it);
689
-
690
- }
691
-
692
- void insert(T& mdl)
603
+ template <class T2> void insert(T2& mdl)
693
604
  {
694
605
  fields fds(m_tb);
695
606
  m_map.writeMap(mdl, fds, m_option);
@@ -697,16 +608,7 @@ public:
697
608
  m_map.readAuntoincValue(mdl, fds, m_option);
698
609
  }
699
610
 
700
- template <class Container>
701
- void insert(Container& mdls)
702
- {
703
- typename Container::iterator it = begin(mdls),ite = end(mdls);
704
- while (it != ite)
705
- insert(*it);
706
-
707
- }
708
-
709
- void save(T& mdl, bool setKeyValueFromObj=true)
611
+ template <class T2> void save(T2& mdl, bool setKeyValueFromObj = true)
710
612
  {
711
613
  fields fds(m_tb);
712
614
  if (setKeyValueFromObj)
@@ -721,31 +623,56 @@ public:
721
623
  }
722
624
  }
723
625
 
724
- /* mdls���L�[�t�B�[���h�ɑΉ����郁���o�ɂ���ă\�[�g�ς̎���
725
- sorted��true�ɂ��܂��B�������郌�R�[�h�ƒʐM�ʂ��������܂��B
726
- */
626
+ #ifdef USE_CONTAINER_CUD // default not support
627
+
628
+ template <class Container> void update(Container& mdls)
629
+ {
630
+ typename Container::iterator it = begin(mdls), ite = end(mdls);
631
+ while (it != ite)
632
+ update(*it);
633
+ }
634
+
635
+ template <class Container> void del(Container& mdls)
636
+ {
637
+ typename Container::iterator it = begin(mdls), ite = end(mdls);
638
+ while (it != ite)
639
+ del(*it);
640
+ }
641
+
642
+ template <class Container> void insert(Container& mdls)
643
+ {
644
+ typename Container::iterator it = begin(mdls), ite = end(mdls);
645
+ while (it != ite)
646
+ insert(*it);
647
+ }
648
+
649
+ #endif
650
+
727
651
  template <class Container>
728
- void readEach(Container& mdls, queryBase& q, bool sorted=false, bzs::rtl::exception* e=NULL)
652
+ void readEach(Container& mdls, queryBase& q, bool sorted = false,
653
+ bzs::rtl::exception * e = NULL)
729
654
  {
730
- q.clearSeekKeyValues();
655
+ mraResetter mras(m_tb);
656
+ m_alias.reverseAliasNamesQuery(q);
731
657
  fields fds(m_tb);
732
- typename Container::iterator it = begin(mdls),itb = begin(mdls),ite = end(mdls);
658
+ typename Container::iterator it = begin(mdls), itb = begin(mdls),
659
+ ite = end(mdls);
733
660
  it = itb = begin(mdls);
734
661
  T& mdlb = *(*it);
735
- if (!m_useTransactd)
736
- nstable::throwError(_T("activeTable P.SQL can not use this"), (short_td)0);
737
- while(it != ite)
662
+ if (!m_tb->isUseTransactd())
663
+ nstable::throwError(_T("activeObject P.SQL can not use this"),
664
+ (short_td)0);
665
+ while (it != ite)
738
666
  {
739
- //if mdl has same key value, to be once read access to server
667
+ // if mdl has same key value, to be once read access to server
740
668
  T& mdl = *(*it);
741
- if ((it == itb)
742
- || !sorted
743
- || (m_map.compKeyValue(mdl, mdlb, m_tb->keyNum())==true)
744
- || (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum())==true))
669
+ if ((it == itb) || !sorted ||
670
+ (m_map.compKeyValue(mdl, mdlb, m_tb->keyNum()) == true) ||
671
+ (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum()) == true))
745
672
  {
746
673
  m_map.setKeyValues(mdl, fds, m_tb->keyNum());
747
674
  keydef* kd = &m_tb->tableDef()->keyDefs[m_tb->keyNum()];
748
- for (int i=0;i<kd->segmentCount;++i)
675
+ for (int i = 0; i < kd->segmentCount; ++i)
749
676
  q.addSeekKeyValue(fds[kd->segments[i].fieldNum].c_str());
750
677
  }
751
678
  mdlb = mdl;
@@ -753,20 +680,20 @@ public:
753
680
  }
754
681
  m_tb->setQuery(&q);
755
682
  if (m_tb->stat() != 0)
756
- nstable::throwError(_T("activeTable readEach Query"), &(*m_tb));
683
+ nstable::throwError(_T("activeObject readEach Query"), &(*m_tb));
757
684
  m_tb->find();
758
- //���‚���Ȃ����R�[�h������ƁA���̎��_�ŃG���[�ŕԂ�
759
- //�s���ƂɃG���[���ǂ����킩���������悢�B
685
+
760
686
  it = itb = begin(mdls);
761
- while(it != ite)
687
+ while (it != ite)
762
688
  {
763
- if (m_tb->stat() != 0)
764
- nstable::throwError(_T("activeTable readEach"), &(*m_tb));
689
+ if ((m_tb->stat() != STATUS_SUCCESS) &&
690
+ (m_tb->stat() != STATUS_NOT_FOUND_TI))
691
+ nstable::throwError(_T("activeObject readEach"), &(*m_tb));
765
692
  T& mdl = *(*it);
766
693
  if ((it != itb) &&
767
- (!sorted
768
- || (m_map.compKeyValue(mdl, mdlb, m_tb->keyNum())==true)
769
- || (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum())==true)))
694
+ (!sorted ||
695
+ (m_map.compKeyValue(mdl, mdlb, m_tb->keyNum()) == true) ||
696
+ (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum()) == true)))
770
697
  {
771
698
  m_tb->findNext();
772
699
  if (m_tb->stat() != 0)
@@ -774,11 +701,11 @@ public:
774
701
  _TCHAR buf[8192];
775
702
  m_tb->keyValueDescription(buf, 8192);
776
703
  if (e)
777
- *e << bzs::rtl::errnoCode(m_tb->stat()) << bzs::rtl::errMessage(buf);
704
+ *e << bzs::rtl::errnoCode(m_tb->stat())
705
+ << bzs::rtl::errMessage(buf);
778
706
  else
779
707
  THROW_BZS_ERROR_WITH_CODEMSG(m_tb->stat(), buf);
780
708
  }
781
-
782
709
  }
783
710
  if (m_tb->stat() == 0)
784
711
  m_map.readMap(mdl, fds, m_option);
@@ -787,10 +714,8 @@ public:
787
714
  }
788
715
  }
789
716
 
790
- /** Join�����̏��������O�\�[�g���č����ɍs���܂��B
791
- */
792
717
  template <class BaseContainer, class T2>
793
- void readEach(BaseContainer& mdls, T* (T2::*func)()const, queryBase& q)
718
+ void readEach(BaseContainer& mdls, T* (T2::*func)() const, queryBase& q)
794
719
  {
795
720
  boost::shared_ptr<std::vector<T*> > refList(listup(mdls, func));
796
721
  compFunc<MAP, T> comp(m_map, m_tb->keyNum());
@@ -799,7 +724,8 @@ public:
799
724
  }
800
725
 
801
726
  template <class BaseContainer, class T2>
802
- void readEach(BaseContainer& mdls, T* (T2::*func)()const, queryBase& q, bzs::rtl::exception& e)
727
+ void readEach(BaseContainer& mdls, T* (T2::*func)() const, queryBase& q,
728
+ bzs::rtl::exception& e)
803
729
  {
804
730
  boost::shared_ptr<std::vector<T*> > refList(listup(mdls, func));
805
731
  compFunc<MAP, T> comp(m_map, m_tb->keyNum());
@@ -809,19 +735,21 @@ public:
809
735
 
810
736
  /* No use field select */
811
737
  template <class Container>
812
- void readEach(Container& mdls, bool sorted=false, bzs::rtl::exception* e=NULL)
738
+ void readEach(Container& mdls, bool sorted = false,
739
+ bzs::rtl::exception * e = NULL)
813
740
  {
814
741
  fields fds(m_tb);
815
- typename Container::iterator it = mdls.begin(),itb = mdls.begin(),ite = end(mdls);
742
+ mraResetter mras(m_tb);
743
+ typename Container::iterator it = begin(mdls), itb = begin(mdls),
744
+ ite = end(mdls);
816
745
  it = itb = begin(mdls);
817
746
  T& mdlb = *(*it);
818
- while(it != ite)
747
+ while (it != ite)
819
748
  {
820
749
  T& mdl = *(*it);
821
- if ((it == itb)
822
- || !sorted
823
- || (m_map.compKeyValue(mdl, mdlb, m_tb->keyNum())==true)
824
- || (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum())==true))
750
+ if ((it == itb) || !sorted ||
751
+ (m_map.compKeyValue(mdl, mdlb, m_tb->keyNum()) == true) ||
752
+ (m_map.compKeyValue(mdlb, mdl, m_tb->keyNum()) == true))
825
753
  {
826
754
  m_map.setKeyValues(mdl, fds, m_tb->keyNum());
827
755
  readIndex(m_tb, eSeekEqual);
@@ -830,7 +758,8 @@ public:
830
758
  _TCHAR buf[8192];
831
759
  m_tb->keyValueDescription(buf, 8192);
832
760
  if (e)
833
- *e << bzs::rtl::errnoCode(m_tb->stat()) << bzs::rtl::errMessage(buf);
761
+ *e << bzs::rtl::errnoCode(m_tb->stat())
762
+ << bzs::rtl::errMessage(buf);
834
763
  else
835
764
  THROW_BZS_ERROR_WITH_CODEMSG(m_tb->stat(), buf);
836
765
  }
@@ -844,7 +773,7 @@ public:
844
773
 
845
774
  /* No use field select */
846
775
  template <class BaseContainer, class T2>
847
- void readEach(BaseContainer& mdls, T* (T2::*func)()const)
776
+ void readEach(BaseContainer& mdls, T* (T2::*func)() const)
848
777
  {
849
778
  boost::shared_ptr<std::vector<T*> > refList(listup(mdls, func));
850
779
  compFunc<MAP, T> comp(m_map, m_tb->keyNum());
@@ -853,20 +782,32 @@ public:
853
782
  }
854
783
 
855
784
  template <class BaseContainer, class T2>
856
- void readEach(BaseContainer& mdls, T* (T2::*func)()const , bzs::rtl::exception& e)
785
+ void readEach(BaseContainer& mdls, T* (T2::*func)() const,
786
+ bzs::rtl::exception& e)
857
787
  {
858
788
  boost::shared_ptr<std::vector<T*> > refList(listup(mdls, func));
859
789
  compFunc<MAP, T> comp(m_map, m_tb->keyNum());
860
790
  std::sort(refList->begin(), refList->end(), comp);
861
791
  readEach(*refList, true, &e);
862
792
  }
863
- };
864
793
 
794
+ inline activeObject& alias(const _TCHAR* src, const _TCHAR* dst)
795
+ {
796
+ m_alias.set(src, dst);
797
+ return *this;
798
+ }
799
+
800
+ inline activeObject& resetAlias()
801
+ {
802
+ m_alias.clear();
803
+ return *this;
804
+ }
805
+ };
865
806
 
866
- }// namespace client
867
- }// namespace tdap
868
- }// namespace protocol
869
- }// namespace db
870
- }// namespace bzs
807
+ } // namespace client
808
+ } // namespace tdap
809
+ } // namespace protocol
810
+ } // namespace db
811
+ } // namespace bzs
871
812
 
872
- #endif//trdormapiH
813
+ #endif // BZS_DB_PROTOCOL_TDAP_CLIENT_TRDORMAPI_H