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
@@ -12,8 +12,8 @@
12
12
  GNU General Public License for more details.
13
13
 
14
14
  You should have received a copy of the GNU General Public License
15
- along with this program; if not, write to the Free Software
16
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
17
  02111-1307, USA.
18
18
  =================================================================*/
19
19
  #include "stdafx.h"
@@ -23,216 +23,255 @@
23
23
  STDMETHODIMP CFieldDef::get_Name(BSTR* Value)
24
24
  {
25
25
  CComBSTR ret;
26
- ret = fielddef()->name();
26
+ ret = const_fielddef()->name();
27
27
  *Value = ret.Copy();
28
28
  return S_OK;
29
29
  }
30
30
 
31
31
  STDMETHODIMP CFieldDef::put_Name(BSTR Value)
32
32
  {
33
+ if (!isWritabale())
34
+ return write_error();
35
+
33
36
  fielddef()->setName(Value);
34
37
  return S_OK;
35
38
  }
36
39
 
37
40
  STDMETHODIMP CFieldDef::get_Type(eFieldType* Value)
38
41
  {
39
- *Value = (eFieldType)fielddef()->type;
42
+ *Value = (eFieldType)const_fielddef()->type;
40
43
  return S_OK;
41
44
  }
42
45
 
43
46
  STDMETHODIMP CFieldDef::put_Type(eFieldType Value)
44
47
  {
48
+ if (!isWritabale())
49
+ return write_error();
50
+
45
51
  fielddef()->type = (uchar_td)Value;
46
52
  return S_OK;
47
53
  }
48
54
 
49
55
  STDMETHODIMP CFieldDef::get_Len(short* Value)
50
56
  {
51
- *Value = fielddef()->len;
57
+ *Value = const_fielddef()->len;
52
58
  return S_OK;
53
59
  }
54
60
 
55
61
  STDMETHODIMP CFieldDef::put_Len(short Value)
56
62
  {
63
+ if (!isWritabale())
64
+ return write_error();
57
65
  fielddef()->len = Value;
58
66
  return S_OK;
59
67
  }
60
68
 
61
69
  STDMETHODIMP CFieldDef::get_Decimals(unsigned char* Value)
62
70
  {
63
- *Value = fielddef()->decimals;
71
+ *Value = const_fielddef()->decimals;
64
72
  return S_OK;
65
73
  }
66
74
 
67
75
  STDMETHODIMP CFieldDef::put_Decimals(unsigned char Value)
68
76
  {
77
+ if (!isWritabale())
78
+ return write_error();
69
79
  fielddef()->decimals = Value;
70
80
  return S_OK;
71
81
  }
72
82
 
73
83
  STDMETHODIMP CFieldDef::get_Max(double* Value)
74
84
  {
75
- *Value = fielddef()->max;
85
+ *Value = const_fielddef()->max;
76
86
  return S_OK;
77
87
  }
78
88
 
79
89
  STDMETHODIMP CFieldDef::put_Max(double Value)
80
90
  {
91
+ if (!isWritabale())
92
+ return write_error();
81
93
  fielddef()->max = Value;
82
94
  return S_OK;
83
95
  }
84
96
 
85
97
  STDMETHODIMP CFieldDef::get_Min(double* Value)
86
98
  {
87
- *Value = fielddef()->min;
99
+ *Value = const_fielddef()->min;
88
100
  return S_OK;
89
101
  }
90
102
 
91
103
  STDMETHODIMP CFieldDef::put_Min(double Value)
92
104
  {
105
+ if (!isWritabale())
106
+ return write_error();
93
107
  fielddef()->min = Value;
94
108
  return S_OK;
95
109
  }
96
110
 
97
111
  STDMETHODIMP CFieldDef::get_DefValue(double* Value)
98
112
  {
99
- *Value = fielddef()->defValue;
113
+ *Value = const_fielddef()->defValue;
100
114
  return S_OK;
101
115
  }
102
116
 
103
117
  STDMETHODIMP CFieldDef::put_DefValue(double Value)
104
118
  {
119
+ if (!isWritabale())
120
+ return write_error();
105
121
  fielddef()->defValue = Value;
106
122
  return S_OK;
107
123
  }
108
124
 
109
125
  STDMETHODIMP CFieldDef::get_LookTable(unsigned char* Value)
110
126
  {
111
- *Value = fielddef()->lookTable;
127
+ *Value = const_fielddef()->lookTable;
112
128
  return S_OK;
113
129
  }
114
130
 
115
131
  STDMETHODIMP CFieldDef::put_LookTable(unsigned char Value)
116
132
  {
133
+ if (!isWritabale())
134
+ return write_error();
117
135
  fielddef()->lookTable = Value;
118
136
  return S_OK;
119
137
  }
120
138
 
121
139
  STDMETHODIMP CFieldDef::get_LookField(unsigned char* Value)
122
140
  {
123
- *Value = fielddef()->lookField;
141
+ *Value = const_fielddef()->lookField;
124
142
  return S_OK;
125
143
  }
126
144
 
127
145
  STDMETHODIMP CFieldDef::put_LookField(unsigned char Value)
128
146
  {
147
+ if (!isWritabale())
148
+ return write_error();
129
149
  fielddef()->lookField = Value;
130
150
  return S_OK;
131
151
  }
132
152
 
133
153
  STDMETHODIMP CFieldDef::get_LookViewField(short Index, unsigned char* Value)
134
154
  {
135
- *Value = fielddef()->lookFields[Index];
155
+ *Value = const_fielddef()->lookFields[Index];
136
156
  return S_OK;
137
157
  }
138
158
 
139
159
  STDMETHODIMP CFieldDef::put_LookViewField(short Index, unsigned char Value)
140
160
  {
161
+ if (!isWritabale())
162
+ return write_error();
141
163
  fielddef()->lookFields[Index] = Value;
142
164
  return S_OK;
143
165
  }
144
166
 
145
167
  STDMETHODIMP CFieldDef::get_EnableFlags(IFlags** Value)
146
168
  {
147
- CComObject<CFlags> *piObj;
169
+ CComObject<CFlags>* piObj;
148
170
  CComObject<CFlags>::CreateInstance(&piObj);
149
- if (piObj)
150
- {
151
- piObj->m_flags = fielddef()->enableFlags;
152
- IFlags* fl;
153
- piObj->QueryInterface(IID_IFlags, (void**)&fl);
154
- _ASSERTE(fl);
155
- *Value = piObj;
156
- }else
157
- *Value = 0;
171
+ if (piObj)
172
+ {
173
+ piObj->m_flags =
174
+ (bzs::db::protocol::tdap::FLAGS*)&(const_fielddef()->enableFlags);
175
+ IFlags* fl;
176
+ piObj->QueryInterface(IID_IFlags, (void**)&fl);
177
+ _ASSERTE(fl);
178
+ *Value = piObj;
179
+ }
180
+ else
181
+ *Value = 0;
158
182
  return S_OK;
159
183
  }
160
184
 
161
185
  STDMETHODIMP CFieldDef::put_EnableFlags(IFlags* Value)
162
186
  {
187
+ if (!isWritabale())
188
+ return write_error();
163
189
  Value->All(&fielddef()->enableFlags.all);
164
190
  return S_OK;
165
191
  }
166
192
 
167
193
  STDMETHODIMP CFieldDef::get_Keylen(unsigned short* Value)
168
194
  {
169
- *Value = fielddef()->keylen;
195
+ *Value = const_fielddef()->keylen;
170
196
  return S_OK;
171
197
  }
172
198
 
173
199
  STDMETHODIMP CFieldDef::put_Keylen(unsigned short Value)
174
200
  {
175
- fielddef()->keylen = Value;
201
+ if (!isWritabale())
202
+ return write_error();
203
+ fielddef()->keylen = Value;
176
204
  return S_OK;
177
205
  }
178
206
 
179
207
  STDMETHODIMP CFieldDef::get_NullValue(unsigned short* Value)
180
208
  {
181
- *Value = fielddef()->nullValue;
209
+ *Value = const_fielddef()->nullValue;
182
210
  return S_OK;
183
211
  }
184
212
 
185
213
  STDMETHODIMP CFieldDef::put_NullValue(unsigned short Value)
186
214
  {
187
- fielddef()->nullValue = (uchar_td)Value;
215
+ if (!isWritabale())
216
+ return write_error();
217
+ fielddef()->nullValue = (uchar_td)Value;
188
218
  return S_OK;
189
219
  }
190
220
 
191
221
  STDMETHODIMP CFieldDef::get_Align(unsigned int* Value)
192
222
  {
193
- *Value = fielddef()->align();
223
+ *Value = const_fielddef()->align();
194
224
  return S_OK;
195
225
  }
196
226
 
197
- STDMETHODIMP CFieldDef::get_TypeName( BSTR* Value)
227
+ STDMETHODIMP CFieldDef::get_TypeName(BSTR* Value)
198
228
  {
199
- *Value = ::SysAllocString(fielddef()->typeName());
229
+ *Value = ::SysAllocString(const_fielddef()->typeName());
200
230
  return S_OK;
201
231
  }
202
232
 
203
- STDMETHODIMP CFieldDef::get_IsStringType( VARIANT_BOOL* Value)
233
+ STDMETHODIMP CFieldDef::get_IsStringType(VARIANT_BOOL* Value)
204
234
  {
205
- *Value = fielddef()->isStringType();
235
+ *Value = const_fielddef()->isStringType();
206
236
  return S_OK;
207
237
  }
208
238
 
209
239
  STDMETHODIMP CFieldDef::get_CharsetIndex(eCharset* Value)
210
240
  {
211
- *Value = (eCharset)fielddef()->charsetIndex();
241
+ *Value = (eCharset)const_fielddef()->charsetIndex();
212
242
  return S_OK;
213
243
  }
214
244
 
215
245
  STDMETHODIMP CFieldDef::put_CharsetIndex(eCharset Value)
216
246
  {
217
- fielddef()->setCharsetIndex((unsigned char)Value);
247
+ if (!isWritabale())
248
+ return write_error();
249
+ fielddef()->setCharsetIndex((unsigned char)Value);
218
250
  return S_OK;
219
251
  }
220
252
 
221
253
  STDMETHODIMP CFieldDef::get_CodePage(unsigned int* Value)
222
254
  {
223
- *Value = fielddef()->codePage();
255
+ *Value = const_fielddef()->codePage();
224
256
  return S_OK;
225
257
  }
226
258
 
227
259
  STDMETHODIMP CFieldDef::get_CharNum(unsigned int* Value)
228
260
  {
229
- *Value = fielddef()->charNum();
261
+ *Value = const_fielddef()->charNum();
230
262
  return S_OK;
231
263
  }
232
264
 
233
265
  STDMETHODIMP CFieldDef::SetLenByCharnum(unsigned short Value)
234
266
  {
235
- fielddef()->setLenByCharnum(Value);
267
+ if (!isWritabale())
268
+ return write_error();
269
+ fielddef()->setLenByCharnum(Value);
236
270
  return S_OK;
237
271
  }
238
272
 
273
+ STDMETHODIMP CFieldDef::get_Index(short* Value)
274
+ {
275
+ *Value = m_index;
276
+ return S_OK;
277
+ }
@@ -13,8 +13,8 @@
13
13
  GNU General Public License for more details.
14
14
 
15
15
  You should have received a copy of the GNU General Public License
16
- along with this program; if not, write to the Free Software
17
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
18
  02111-1307, USA.
19
19
  =================================================================*/
20
20
  #include "resource.h"
@@ -24,29 +24,49 @@
24
24
  #include <bzs/db/protocol/tdap/client/dbDef.h>
25
25
  using namespace ATL;
26
26
 
27
- class ATL_NO_VTABLE CFieldDef : public CComObjectRootEx<CComSingleThreadModel>,
28
- public CComCoClass<CFieldDef, &CLSID_FieldDef>,
29
- public IDispatchImpl<IFieldDef, &IID_IFieldDef, &LIBID_transactd, /* wMajor = */ 1, /* wMinor = */ 0>
27
+ class ATL_NO_VTABLE CFieldDef
28
+ : public CComObjectRootEx<CComSingleThreadModel>,
29
+ public CComCoClass<CFieldDef, &CLSID_FieldDef>,
30
+ public IDispatchImpl<IFieldDef, &IID_IFieldDef, &LIBID_transactd,
31
+ /* wMajor = */ 1, /* wMinor = */ 0>
30
32
  {
31
- bzs::db::protocol::tdap::fielddef* fielddef(){return &(*m_tabledefPtr)->fieldDefs[m_index];}
33
+ bzs::db::protocol::tdap::fielddef* fielddef()
34
+ {
35
+ if (m_fielddef)
36
+ return NULL;
37
+ return &(*m_tabledefPtr)->fieldDefs[m_index];
38
+ }
39
+
40
+ const bzs::db::protocol::tdap::fielddef* const_fielddef()
41
+ {
42
+ if (m_fielddef)
43
+ return m_fielddef;
44
+ return &(*m_tabledefPtr)->fieldDefs[m_index];
45
+ }
46
+ bool isWritabale() { return (m_tabledefPtr != NULL); }
47
+ HRESULT write_error()
48
+ {
49
+ return Error("This object is no writable.", IID_IFieldDef);
50
+ }
51
+
32
52
  public:
33
- CFieldDef():m_tabledefPtr(NULL) {}
34
- bzs::db::protocol::tdap::tabledef** m_tabledefPtr;
35
- short m_index;
53
+ CFieldDef() : m_tabledefPtr(NULL), m_fielddef(NULL) {}
54
+ const bzs::db::protocol::tdap::fielddef* m_fielddef;
55
+ bzs::db::protocol::tdap::tabledef** m_tabledefPtr;
56
+ short m_index;
36
57
 
37
- BEGIN_COM_MAP(CFieldDef)
38
- COM_INTERFACE_ENTRY(IFieldDef)
39
- COM_INTERFACE_ENTRY(IDispatch)
40
- END_COM_MAP()
58
+ BEGIN_COM_MAP(CFieldDef)
59
+ COM_INTERFACE_ENTRY(IFieldDef)
60
+ COM_INTERFACE_ENTRY(IDispatch)
61
+ END_COM_MAP()
41
62
 
42
63
  DECLARE_PROTECT_FINAL_CONSTRUCT()
43
64
 
44
- HRESULT FinalConstruct() {return S_OK;}
65
+ HRESULT FinalConstruct() { return S_OK; }
45
66
 
46
67
  void FinalRelease() {}
47
68
 
48
69
  public:
49
-
50
70
  STDMETHOD(get_Name)(BSTR* Value);
51
71
  STDMETHOD(get_Type)(eFieldType* Value);
52
72
  STDMETHOD(get_Len)(short* Value);
@@ -75,13 +95,12 @@ public:
75
95
  STDMETHOD(get_NullValue)(unsigned short* Value);
76
96
  STDMETHOD(put_NullValue)(unsigned short Value);
77
97
  STDMETHOD(get_Align)(unsigned int* Value);
78
- STDMETHOD(get_TypeName)( BSTR* Value);
79
- STDMETHOD(get_IsStringType)( VARIANT_BOOL* Value);
98
+ STDMETHOD(get_TypeName)(BSTR* Value);
99
+ STDMETHOD(get_IsStringType)(VARIANT_BOOL* Value);
80
100
  STDMETHOD(get_CharsetIndex)(eCharset* Value);
81
101
  STDMETHOD(put_CharsetIndex)(eCharset Value);
82
102
  STDMETHOD(get_CodePage)(unsigned int* Value);
83
103
  STDMETHOD(get_CharNum)(unsigned int* Value);
84
104
  STDMETHOD(SetLenByCharnum)(unsigned short Value);
85
-
86
-
105
+ STDMETHOD(get_Index)(short* Value);
87
106
  };
@@ -0,0 +1,74 @@
1
+ /*=================================================================
2
+ Copyright (C) 2014 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #include "stdafx.h"
20
+ #include "FieldDefs.h"
21
+ #include "FieldDef.h"
22
+
23
+ void CFieldDefs::FinalRelease()
24
+ {
25
+ if (m_fieldDefObj)
26
+ m_fieldDefObj->AddRef();
27
+ }
28
+
29
+ short CFieldDefs::GetFieldNum(VARIANT* Index)
30
+ {
31
+ short index = -1;
32
+ if (Index->vt == VT_BSTR)
33
+ index = m_fds->indexByName(Index->bstrVal);
34
+ else if ((Index->vt == VT_I2) || (Index->vt == VT_I4))
35
+ index = Index->iVal;
36
+ return index;
37
+ }
38
+
39
+ STDMETHODIMP CFieldDefs::IndexByName(BSTR Name, short* retVal)
40
+ {
41
+ *retVal = m_fds->indexByName(Name);
42
+ return S_OK;
43
+ }
44
+
45
+ STDMETHODIMP CFieldDefs::get_FieldDef(VARIANT Name, IFieldDef** retVal)
46
+ {
47
+ short index = GetFieldNum(&Name);
48
+ if (index >= 0)
49
+ {
50
+ if (m_fieldDefObj == NULL)
51
+ {
52
+ CComObject<CFieldDef>::CreateInstance(&m_fieldDefObj);
53
+ m_fieldDefObj->AddRef();
54
+ }
55
+ if (m_fieldDefObj)
56
+ {
57
+ m_fieldDefObj->m_fielddef = &((*m_fds)[index]);
58
+
59
+ IFieldDef* fd;
60
+ m_fieldDefObj->QueryInterface(IID_IFieldDef, (void**)&fd);
61
+ _ASSERTE(fd);
62
+ *retVal = fd;
63
+ }
64
+ }
65
+ else
66
+ return Error("Invalid index", IID_IFieldDefs);
67
+ return S_OK;
68
+ }
69
+
70
+ STDMETHODIMP CFieldDefs::get_Size(short* retVal)
71
+ {
72
+ *retVal = (short)m_fds->size();
73
+ return S_OK;
74
+ }
@@ -0,0 +1,56 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2014 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+
22
+ #include "tdclatl_i.h"
23
+ #include <bzs/db/protocol/tdap/client/field.h>
24
+
25
+ using namespace ATL;
26
+ class CFieldDef;
27
+
28
+ class ATL_NO_VTABLE CFieldDefs
29
+ : public CComObjectRootEx<CComSingleThreadModel>,
30
+ public CComCoClass<CFieldDefs, &CLSID_FieldDefs>,
31
+ public IDispatchImpl<IFieldDefs, &IID_IFieldDefs, &LIBID_transactd,
32
+ /* wMajor = */ 1, /* wMinor = */ 0>
33
+ {
34
+ CComObject<CFieldDef>* m_fieldDefObj;
35
+ short GetFieldNum(VARIANT* Index);
36
+
37
+ public:
38
+ CFieldDefs() : m_fieldDefObj(NULL) {}
39
+ const bzs::db::protocol::tdap::client::fielddefs* m_fds;
40
+
41
+ BEGIN_COM_MAP(CFieldDefs)
42
+ COM_INTERFACE_ENTRY(IFieldDefs)
43
+ COM_INTERFACE_ENTRY(IDispatch)
44
+ END_COM_MAP()
45
+
46
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
47
+
48
+ HRESULT FinalConstruct() { return S_OK; }
49
+
50
+ void FinalRelease();
51
+
52
+ public:
53
+ STDMETHOD(IndexByName)(BSTR Name, short* retVal);
54
+ STDMETHOD(get_FieldDef)(VARIANT Name, IFieldDef** retVal);
55
+ STDMETHOD(get_Size)(short* retVal);
56
+ };
@@ -0,0 +1,99 @@
1
+ /*=================================================================
2
+ Copyright (C) 2014 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #include "stdafx.h"
20
+ #include "FieldNames.h"
21
+
22
+ using namespace bzs::db::protocol::tdap::client;
23
+
24
+ void CFieldNames::setResult(IFieldNames** retVal)
25
+ {
26
+ this->QueryInterface(IID_IFieldNames, (void**)retVal);
27
+ }
28
+
29
+ STDMETHODIMP CFieldNames::KeyField(BSTR Name0, BSTR Name1, BSTR Name2,
30
+ BSTR Name3, BSTR Name4, BSTR Name5,
31
+ BSTR Name6, BSTR Name7, BSTR Name8,
32
+ BSTR Name9, BSTR Name10,
33
+ IFieldNames** retVal)
34
+ {
35
+ if (Name0 && Name0[0])
36
+ {
37
+ if (!Name1 || !Name1[0])
38
+ m_fnsPtr->keyField(Name0);
39
+ else if (!Name2 || !Name2[0])
40
+ m_fnsPtr->keyField(Name0, Name1);
41
+ else if (!Name3 || !Name3[0])
42
+ m_fnsPtr->keyField(Name0, Name1, Name2);
43
+ else if (!Name4 || !Name4[0])
44
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3);
45
+ else if (!Name5 || !Name5[0])
46
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4);
47
+ else if (!Name6 || !Name6[0])
48
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4, Name5);
49
+ else if (!Name7 || !Name7[0])
50
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4, Name5, Name6);
51
+ else if (!Name8 || !Name8[0])
52
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4, Name5, Name6,
53
+ Name7);
54
+ else if (!Name9 || !Name9[0])
55
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4, Name5, Name6,
56
+ Name7, Name8);
57
+ else if (!Name10 || !Name10[0])
58
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4, Name5, Name6,
59
+ Name7, Name8, Name9);
60
+ else
61
+ m_fnsPtr->keyField(Name0, Name1, Name2, Name3, Name4, Name5, Name6,
62
+ Name7, Name8, Name9, Name10);
63
+ }
64
+ setResult(retVal);
65
+ return S_OK;
66
+ }
67
+
68
+ STDMETHODIMP CFieldNames::get_Count(int* Value)
69
+ {
70
+ *Value = m_fnsPtr->count();
71
+ return S_OK;
72
+ }
73
+
74
+ STDMETHODIMP CFieldNames::addValue(BSTR val)
75
+ {
76
+ m_fnsPtr->addValue(val);
77
+ return S_OK;
78
+ }
79
+
80
+ STDMETHODIMP CFieldNames::get_Value(int index, BSTR* retVal)
81
+ {
82
+ CComBSTR ret;
83
+ ret = m_fnsPtr->getValue(index);
84
+ *retVal = ret.Copy();
85
+ return S_OK;
86
+ }
87
+
88
+ STDMETHODIMP CFieldNames::addValues(BSTR val, BSTR delm)
89
+ {
90
+ m_fnsPtr->addValues(val, delm);
91
+ return S_OK;
92
+ }
93
+
94
+ STDMETHODIMP CFieldNames::Reset(IFieldNames** retVal)
95
+ {
96
+ m_fnsPtr->reset();
97
+ setResult(retVal);
98
+ return S_OK;
99
+ }
@@ -0,0 +1,66 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2014 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+ #include "tdclatl_i.h"
22
+ #include <bzs/db/protocol/tdap/client/groupQuery.h>
23
+
24
+ using namespace ATL;
25
+
26
+ class ATL_NO_VTABLE CFieldNames
27
+ : public CComObjectRootEx<CComSingleThreadModel>,
28
+ public CComCoClass<CFieldNames, &CLSID_FieldNames>,
29
+ public IDispatchImpl<IFieldNames, &IID_IFieldNames, &LIBID_transactd,
30
+ /* wMajor = */ 1, /* wMinor = */ 0>
31
+ {
32
+
33
+ bzs::db::protocol::tdap::client::fieldNames m_fns;
34
+ void setResult(IFieldNames** retVal);
35
+
36
+ public:
37
+ bzs::db::protocol::tdap::client::fieldNames* m_fnsPtr;
38
+
39
+ CFieldNames() : m_fnsPtr(NULL) { m_fnsPtr = &m_fns; }
40
+
41
+ DECLARE_REGISTRY_RESOURCEID(IDR_FIELDNAMES)
42
+
43
+ BEGIN_COM_MAP(CFieldNames)
44
+ COM_INTERFACE_ENTRY(IFieldNames)
45
+ COM_INTERFACE_ENTRY(IDispatch)
46
+ END_COM_MAP()
47
+
48
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
49
+
50
+ HRESULT FinalConstruct() { return S_OK; }
51
+
52
+ void FinalRelease(){};
53
+
54
+ public:
55
+ STDMETHOD(KeyField)(BSTR Name, BSTR Name1, BSTR Name2, BSTR Name3,
56
+ BSTR Name4, BSTR Name5, BSTR Name6, BSTR Name7,
57
+ BSTR Name8, BSTR Name9, BSTR Name10,
58
+ IFieldNames** retVal);
59
+ STDMETHOD(get_Count)(int* Value);
60
+ STDMETHOD(addValue)(BSTR val);
61
+ STDMETHOD(get_Value)(int index, BSTR* retVal);
62
+ STDMETHOD(addValues)(BSTR val, BSTR delm);
63
+ STDMETHOD(Reset)(IFieldNames** retVal);
64
+ };
65
+
66
+ OBJECT_ENTRY_AUTO(__uuidof(FieldNames), CFieldNames)