transactd 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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