transactd 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CMakeLists.txt +37 -4
  3. data/bin/common/tdclc_32_1_2.dll +0 -0
  4. data/bin/common/tdclc_64_1_2.dll +0 -0
  5. data/build/common/transactd_cl_common.cmake +0 -1
  6. data/build/common/transactd_common.cmake +26 -6
  7. data/build/swig/php/generate.cmake.in +58 -0
  8. data/build/swig/php/generate.cmd.in +41 -0
  9. data/build/swig/php/php.swg +155 -0
  10. data/build/swig/ruby/ruby.swg +38 -0
  11. data/build/swig/tdcl.i +133 -3
  12. data/build/tdclc/CMakeLists.txt +4 -1
  13. data/build/tdclc/tdclc_32.cbproj +1 -1
  14. data/build/tdclc/tdclc_64.cbproj +1 -1
  15. data/build/tdclcpp/CMakeLists.txt +1 -1
  16. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +1 -4
  17. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +0 -3
  18. data/build/tdclrb/CMakeLists.txt +1 -1
  19. data/build/tdclrb/GEM_VERSION +2 -2
  20. data/source/bzs/db/engine/mysql/IReadRecords.h +1 -1
  21. data/source/bzs/db/engine/mysql/bookmark.h +3 -3
  22. data/source/bzs/db/engine/mysql/database.cpp +95 -19
  23. data/source/bzs/db/engine/mysql/database.h +6 -6
  24. data/source/bzs/db/engine/mysql/mysqlInternal.h +43 -1
  25. data/source/bzs/db/engine/mysql/mysqlThd.cpp +10 -8
  26. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +1 -1
  27. data/source/bzs/db/protocol/tdap/btrDate.h +2 -2
  28. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +15 -8
  29. data/source/bzs/db/protocol/tdap/client/dbDef.h +2 -2
  30. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +4 -0
  31. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +0 -5
  32. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +0 -4
  33. data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -484
  34. data/source/bzs/db/protocol/tdap/client/filter.h +696 -84
  35. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +13 -3
  36. data/source/bzs/db/protocol/tdap/client/nsTable.h +12 -6
  37. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +2 -1
  38. data/source/bzs/db/protocol/tdap/client/stringConverter.h +1 -0
  39. data/source/bzs/db/protocol/tdap/client/table.cpp +519 -75
  40. data/source/bzs/db/protocol/tdap/client/table.h +49 -7
  41. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +145 -124
  42. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +39 -0
  43. data/source/bzs/db/protocol/tdap/client/trdormapi.h +872 -0
  44. data/source/bzs/db/protocol/tdap/myDateTime.cpp +8 -8
  45. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +7 -9
  46. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +406 -195
  47. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +64 -13
  48. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +2 -1
  49. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +35 -3
  50. data/source/bzs/db/protocol/tdap/tdapSchema.h +11 -3
  51. data/source/bzs/db/protocol/tdap/tdapcapi.h +63 -53
  52. data/source/bzs/env/crosscompile.h +8 -3
  53. data/source/bzs/example/connection_pool_c.cpp +1 -7
  54. data/source/bzs/example/useORM.cpp +585 -0
  55. data/source/bzs/rtl/exception.h +6 -0
  56. data/source/bzs/test/tdclatl/bench_tdclatl.js +12 -7
  57. data/source/bzs/test/tdclphp/transactd_Test.php +1845 -0
  58. data/source/bzs/test/tdclphp/transactd_blob_Test.php +325 -0
  59. data/source/bzs/test/tdclphp/transactd_datetime_Test.php +183 -0
  60. data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +212 -0
  61. data/source/bzs/test/tdclrb/transactd_blob_spec.rb +332 -0
  62. data/source/bzs/test/tdclrb/transactd_spec.rb +256 -1
  63. data/source/bzs/test/trdclengn/test_blob.cpp +327 -0
  64. data/source/bzs/test/trdclengn/test_trdclengn.cpp +485 -5
  65. data/source/global/tdclatl/QueryBase.cpp +231 -0
  66. data/source/global/tdclatl/QueryBase.h +96 -0
  67. data/source/global/tdclatl/Table.cpp +24 -0
  68. data/source/global/tdclatl/Table.h +2 -1
  69. data/source/global/tdclatl/resource.h +0 -0
  70. data/source/global/tdclatl/tdclatl.idl +88 -2
  71. metadata +16 -3
  72. data/bin/common/tdclc_32_1_1.dll +0 -0
  73. data/bin/common/tdclc_64_1_1.dll +0 -0
@@ -20,6 +20,8 @@
20
20
  =================================================================*/
21
21
  #include <bzs/db/protocol/tdap/client/trdboostapiInternal.h>
22
22
  #include <boost/shared_ptr.hpp>
23
+ #include <boost/noncopyable.hpp>
24
+
23
25
  #include <stdio.h>
24
26
 
25
27
  #if defined(__GNUC__)
@@ -77,22 +79,58 @@ public:
77
79
  inline float f() const {return m_tb.getFVflt(m_index);}
78
80
 
79
81
  inline double d() const {return m_tb.getFVdbl(m_index);}
80
- inline field& operator = (const _TCHAR* p) {
82
+
83
+ inline field& operator = (const _TCHAR* p)
84
+ {
81
85
  m_tb.setFV(m_index, p);
82
86
  return *this;
83
- } inline field& operator = (int v) {
87
+ }
88
+
89
+ inline field& operator = (const std::_tstring& p)
90
+ {
91
+ m_tb.setFV(m_index, p.c_str());
92
+ return *this;
93
+ }
94
+
95
+ #ifdef _UNICODE
96
+ inline field& operator = (const char* p)
97
+ {
98
+ m_tb.setFVA(m_index, p);
99
+ return *this;
100
+ }
101
+
102
+ inline field& operator = (const std::string& p)
103
+ {
104
+ m_tb.setFVA(m_index, p.c_str());
105
+ return *this;
106
+ }
107
+
108
+ #endif
109
+
110
+ inline field& operator = (int v)
111
+ {
84
112
  m_tb.setFV(m_index, v);
85
113
  return *this;
86
- } inline field& operator = (__int64 v) {
114
+ }
115
+
116
+ inline field& operator = (__int64 v)
117
+ {
87
118
  m_tb.setFV(m_index, v);
88
119
  return *this;
89
- } inline field& operator = (float v) {
120
+ }
121
+
122
+ inline field& operator = (float v)
123
+ {
90
124
  m_tb.setFV(m_index, v);
91
125
  return *this;
92
- } inline field& operator = (double v) {
126
+ }
127
+
128
+ inline field& operator = (double v)
129
+ {
93
130
  m_tb.setFV(m_index, v);
94
131
  return *this;
95
132
  }
133
+
96
134
  inline bool operator != (const _TCHAR* p) {return (_tcscmp(p, c_str()) != 0);};
97
135
  inline bool operator == (const _TCHAR* p) {return (_tcscmp(p, c_str())==0);};
98
136
 
@@ -166,7 +204,12 @@ class tableIterator
166
204
  public:
167
205
  static const tableIterator eos;
168
206
 
169
- inline tableIterator(table& tb) : m_tb(tb), m_fds(tb) {};
207
+ inline tableIterator(table& tb) : m_tb(tb), m_fds(tb)
208
+ {
209
+ if ((tb.stat() != 0) && (tb.stat() != STATUS_EOF) && (tb.stat() != STATUS_NOT_FOUND_TI))
210
+ nstable::throwError(std::_tstring(_T("tableIterator")).c_str(), &tb);
211
+
212
+ }
170
213
 
171
214
  table& tb() const {return m_tb;};
172
215
 
@@ -287,9 +330,17 @@ const filterdStepIterator filterdStepIterator::eos;
287
330
  template<>
288
331
  const filterdFindIterator filterdFindIterator::eos;
289
332
 
333
+ template<>
334
+ const filterdIndexRvIterator filterdIndexRvIterator::eos;
290
335
 
336
+ template<>
337
+ const filterdStepRvIterator filterdStepRvIterator::eos;
338
+
339
+ template<>
340
+ const filterdFindRvIterator filterdFindRvIterator::eos;
291
341
 
292
- inline indexIterator readIndex(table_ptr tb, eIndexOpType op)
342
+
343
+ indexIterator readIndex(table_ptr tb, eIndexOpType op)
293
344
  {
294
345
 
295
346
  switch (op)
@@ -309,7 +360,7 @@ inline indexIterator readIndex(table_ptr tb, eIndexOpType op)
309
360
  return indexIterator(*tb);
310
361
  }
311
362
 
312
- inline indexRvIterator readIndexRv(table_ptr tb, eIndexOpType op)
363
+ indexRvIterator readIndexRv(table_ptr tb, eIndexOpType op)
313
364
  {
314
365
 
315
366
  switch (op)
@@ -355,192 +406,152 @@ inline indexRvIterator readIndexRv(table_ptr tb, eIndexOpType op, char_td keynum
355
406
 
356
407
  }
357
408
 
358
-
359
- template <class T0 = _TCHAR*, class T1 = _TCHAR*, class T2 = _TCHAR*, class T3 = _TCHAR*
360
- , class T4 = _TCHAR*, class T5 = _TCHAR*, class T6 = _TCHAR*, class T7 = _TCHAR*>
361
- class keyValue
362
- {
363
-
364
- public:
365
- inline static void set(table_ptr tb, const char_td keynum
366
- ,const T0 kv0, const T1 kv1=NULL
367
- ,const T2 kv2=NULL, const T3 kv3=NULL
368
- ,const T4 kv4=NULL, const T5 kv5=NULL
369
- ,const T6 kv6=NULL, const T7 kv7=NULL)
370
- {
371
- const tabledef& td = *tb->tableDef();
372
- if (keynum < td.keyCount)
373
- {
374
- const keydef kd = td.keyDefs[keynum];
375
- if (kd.segmentCount > 0)
376
- tb->setFV(kd.segments[0].fieldNum, kv0);
377
- if (kd.segmentCount > 1)
378
- tb->setFV(kd.segments[1].fieldNum, kv1);
379
- if (kd.segmentCount > 2)
380
- tb->setFV(kd.segments[2].fieldNum, kv2);
381
- if (kd.segmentCount > 3)
382
- tb->setFV(kd.segments[3].fieldNum, kv3);
383
- if (kd.segmentCount > 4)
384
- tb->setFV(kd.segments[4].fieldNum, kv4);
385
- if (kd.segmentCount > 5)
386
- tb->setFV(kd.segments[5].fieldNum, kv5);
387
- if (kd.segmentCount > 6)
388
- tb->setFV(kd.segments[6].fieldNum, kv6);
389
- if (kd.segmentCount > 7)
390
- tb->setFV(kd.segments[7].fieldNum, kv7);
391
- }
392
- tb->setKeyNum(keynum);
393
-
394
- }
395
- };
396
-
397
409
  template <class T0, class T1, class T2, class T3
398
410
  , class T4, class T5, class T6, class T7>
399
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
411
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
400
412
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
401
413
  ,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
402
414
  {
403
- keyValue<T0, T1, T2, T3, T4, T5, T6, T7>::
415
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::
404
416
  set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
405
417
  return readIndex(tb, op);
406
418
  }
407
419
 
408
420
  template <class T0, class T1, class T2, class T3
409
421
  , class T4, class T5, class T6>
410
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
422
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
411
423
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
412
424
  ,const T4 kv4, const T5 kv5, const T6 kv6)
413
425
  {
414
- keyValue<T0, T1, T2, T3, T4, T5, T6>::
426
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::
415
427
  set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
416
428
  return readIndex(tb, op);
417
429
  }
418
430
 
419
431
  template <class T0, class T1, class T2, class T3
420
432
  , class T4, class T5>
421
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
433
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
422
434
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
423
435
  ,const T4 kv4, const T5 kv5)
424
436
  {
425
- keyValue<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
437
+ keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
426
438
  return readIndex(tb, op);
427
439
  }
428
440
 
429
441
  template <class T0, class T1, class T2, class T3, class T4>
430
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
442
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
431
443
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4)
432
444
  {
433
- keyValue<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
445
+ keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
434
446
  return readIndex(tb, op);
435
447
  }
436
448
 
437
449
  template <class T0, class T1, class T2, class T3>
438
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
450
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
439
451
  ,const T0 kv0, const T1 kv1 ,const T2 kv2, const T3 kv3)
440
452
  {
441
- keyValue<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
453
+ keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
442
454
  return readIndex(tb, op);
443
455
  }
444
456
 
445
457
  template <class T0, class T1, class T2>
446
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
458
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
447
459
  ,const T0 kv0, const T1 kv1 ,const T2 kv2)
448
460
  {
449
- keyValue<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
461
+ keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
450
462
  return readIndex(tb, op);
451
463
  }
452
464
 
453
465
  template <class T0, class T1>
454
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
466
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
455
467
  ,const T0 kv0, const T1 kv1)
456
468
  {
457
- keyValue<T0, T1>::set(tb, keynum, kv0, kv1);
469
+ keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
458
470
  return readIndex(tb, op);
459
471
  }
460
472
 
461
473
  template <class T0>
462
- indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
474
+ inline indexIterator readIndex_v(table_ptr tb, eIndexOpType op, const char_td keynum
463
475
  ,const T0 kv0)
464
476
  {
465
- keyValue<T0>::set(tb, keynum, kv0);
477
+ keyValueSetter<T0>::set(tb, keynum, kv0);
466
478
  return readIndex(tb, op);
467
479
  }
468
480
 
469
481
 
470
482
  template <class T0, class T1, class T2, class T3
471
483
  , class T4, class T5, class T6, class T7>
472
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
484
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
473
485
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
474
486
  ,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
475
487
  {
476
- keyValue<T0, T1, T2, T3, T4, T5, T6, T7>::
488
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::
477
489
  set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
478
490
  return readIndexRv(tb, op);
479
491
  }
480
492
 
481
493
  template <class T0, class T1, class T2, class T3
482
494
  , class T4, class T5, class T6>
483
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
495
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
484
496
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
485
497
  ,const T4 kv4, const T5 kv5, const T6 kv6)
486
498
  {
487
- keyValue<T0, T1, T2, T3, T4, T5, T6>::
499
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::
488
500
  set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
489
501
  return readIndexRv(tb, op);
490
502
  }
491
503
 
492
504
  template <class T0, class T1, class T2, class T3
493
505
  , class T4, class T5>
494
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
506
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
495
507
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3
496
508
  ,const T4 kv4, const T5 kv5)
497
509
  {
498
- keyValue<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
510
+ keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
499
511
  return readIndexRv(tb, op);
500
512
  }
501
513
 
502
514
  template <class T0, class T1, class T2, class T3, class T4>
503
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
515
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
504
516
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4)
505
517
  {
506
- keyValue<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
518
+ keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
507
519
  return readIndexRv(tb, op);
508
520
  }
509
521
 
510
522
  template <class T0, class T1, class T2, class T3>
511
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
523
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
512
524
  ,const T0 kv0, const T1 kv1 ,const T2 kv2, const T3 kv3)
513
525
  {
514
- keyValue<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
526
+ keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
515
527
  return readIndexRv(tb, op);
516
528
  }
517
529
 
518
530
  template <class T0, class T1, class T2>
519
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
531
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
520
532
  ,const T0 kv0, const T1 kv1 ,const T2 kv2)
521
533
  {
522
- keyValue<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
534
+ keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
523
535
  return readIndexRv(tb, op);
524
536
  }
525
537
 
526
538
  template <class T0, class T1>
527
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
539
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
528
540
  ,const T0 kv0, const T1 kv1)
529
541
  {
530
- keyValue<T0, T1>::set(tb, keynum, kv0, kv1);
542
+ keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
531
543
  return readIndexRv(tb, op);
532
544
  }
533
545
 
534
546
  template <class T0>
535
- indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
547
+ inline indexRvIterator readIndexRv_v(table_ptr tb, eIndexOpType op, const char_td keynum
536
548
  ,const T0 kv0)
537
549
  {
538
- keyValue<T0>::set(tb, keynum, kv0);
550
+ keyValueSetter<T0>::set(tb, keynum, kv0);
539
551
  return readIndexRv(tb, op);
540
552
  }
541
553
 
542
554
 
543
-
544
555
  inline stepIterator readStep(table_ptr tb)
545
556
  {
546
557
  tb->stepFirst();
@@ -559,7 +570,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
559
570
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
560
571
  {
561
572
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
562
- keyValue<T0, T1, T2, T3, T4, T5, T6, T7>::
573
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::
563
574
  set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
564
575
  tb->find(table::findForword);
565
576
  return findIterator(*tb);
@@ -570,7 +581,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
570
581
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5, const T6 kv6)
571
582
  {
572
583
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
573
- keyValue<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
584
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
574
585
  tb->find(table::findForword);
575
586
  return findIterator(*tb);
576
587
  }
@@ -580,7 +591,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
580
591
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5)
581
592
  {
582
593
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
583
- keyValue<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
594
+ keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
584
595
  tb->find(table::findForword);
585
596
  return findIterator(*tb);
586
597
  }
@@ -590,7 +601,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
590
601
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4)
591
602
  {
592
603
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
593
- keyValue<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
604
+ keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
594
605
  tb->find(table::findForword);
595
606
  return findIterator(*tb);
596
607
  }
@@ -600,7 +611,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
600
611
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
601
612
  {
602
613
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
603
- keyValue<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
614
+ keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
604
615
  tb->find(table::findForword);
605
616
  return findIterator(*tb);
606
617
  }
@@ -610,7 +621,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
610
621
  ,const T0 kv0, const T1 kv1, const T2 kv2)
611
622
  {
612
623
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
613
- keyValue<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
624
+ keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
614
625
  tb->find(table::findForword);
615
626
  return findIterator(*tb);
616
627
  }
@@ -620,7 +631,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
620
631
  ,const T0 kv0, const T1 kv1)
621
632
  {
622
633
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
623
- keyValue<T0, T1>::set(tb, keynum, kv0, kv1);
634
+ keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
624
635
  tb->find(table::findForword);
625
636
  return findIterator(*tb);
626
637
  }
@@ -630,7 +641,7 @@ findIterator find(table_ptr tb, const char_td keynum, const filterParams& fp
630
641
  ,const T0 kv0)
631
642
  {
632
643
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
633
- keyValue<T0>::set(tb, keynum, kv0);
644
+ keyValueSetter<T0>::set(tb, keynum, kv0);
634
645
  tb->find(table::findForword);
635
646
  return findIterator(*tb);
636
647
  }
@@ -640,7 +651,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
640
651
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
641
652
  {
642
653
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
643
- keyValue<T0, T1, T2, T3, T4, T5, T6, T7>::
654
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::
644
655
  set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
645
656
  tb->find(table::findBackForword);
646
657
  return findRvIterator(*tb);
@@ -651,7 +662,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
651
662
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5, const T6 kv6)
652
663
  {
653
664
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
654
- keyValue<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
665
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
655
666
  tb->find(table::findBackForword);
656
667
  return findRvIterator(*tb);
657
668
  }
@@ -661,7 +672,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
661
672
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5)
662
673
  {
663
674
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
664
- keyValue<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
675
+ keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
665
676
  tb->find(table::findBackForword);
666
677
  return findRvIterator(*tb);
667
678
  }
@@ -671,7 +682,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
671
682
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4)
672
683
  {
673
684
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
674
- keyValue<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
685
+ keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
675
686
  tb->find(table::findBackForword);
676
687
  return findRvIterator(*tb);
677
688
  }
@@ -681,7 +692,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
681
692
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
682
693
  {
683
694
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
684
- keyValue<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
695
+ keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
685
696
  tb->find(table::findBackForword);
686
697
  return findRvIterator(*tb);
687
698
  }
@@ -691,7 +702,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
691
702
  ,const T0 kv0, const T1 kv1, const T2 kv2)
692
703
  {
693
704
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
694
- keyValue<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
705
+ keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
695
706
  tb->find(table::findBackForword);
696
707
  return findRvIterator(*tb);
697
708
  }
@@ -701,7 +712,7 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
701
712
  ,const T0 kv0, const T1 kv1)
702
713
  {
703
714
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
704
- keyValue<T0, T1>::set(tb, keynum, kv0, kv1);
715
+ keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
705
716
  tb->find(table::findBackForword);
706
717
  return findRvIterator(*tb);
707
718
  }
@@ -711,14 +722,12 @@ findRvIterator findRv(table_ptr tb, const char_td keynum, const filterParams& fp
711
722
  ,const T0 kv0)
712
723
  {
713
724
  tb->setFilter(fp.filter(), fp.rejectCount(), fp.maxRecords());
714
- keyValue<T0>::set(tb, keynum, kv0);
725
+ keyValueSetter<T0>::set(tb, keynum, kv0);
715
726
  tb->find(table::findBackForword);
716
727
  return findRvIterator(*tb);
717
728
  }
718
729
 
719
-
720
-
721
- inline findIterator getFindIterator(indexIterator it, const filterParams& fp
730
+ findIterator getFindIterator(indexIterator it, const filterParams& fp
722
731
  ,bool isCurrentValid)
723
732
 
724
733
  {
@@ -731,7 +740,7 @@ inline findIterator getFindIterator(indexIterator it, const filterParams& fp
731
740
  return findIterator(it.tb());
732
741
  }
733
742
 
734
- inline findRvIterator getFindIterator(indexRvIterator it, const filterParams& fp
743
+ findRvIterator getFindIterator(indexRvIterator it, const filterParams& fp
735
744
  ,bool isCurrentValid)
736
745
  {
737
746
  if (it != indexRvIterator::eos)
@@ -783,7 +792,8 @@ inline database_ptr createDatadaseObject()
783
792
  return p;
784
793
  }
785
794
 
786
- inline void connect(database_ptr db, const connectParams& connPrams, bool newConnection)
795
+ template <class Database_Ptr, class ConnectParam_type>
796
+ inline void connect(Database_Ptr db, const ConnectParam_type& connPrams, bool newConnection)
787
797
  {
788
798
  db->connect(connPrams.uri(), newConnection);
789
799
  if (db->stat())
@@ -791,7 +801,8 @@ inline void connect(database_ptr db, const connectParams& connPrams, bool newCon
791
801
 
792
802
  }
793
803
 
794
- inline void disconnect(database_ptr db, const connectParams& connPrams)
804
+ template <class Database_Ptr>
805
+ inline void disconnect(Database_Ptr db, const connectParams& connPrams)
795
806
  {
796
807
  db->disconnect(connPrams.uri());
797
808
  if (db->stat())
@@ -799,7 +810,8 @@ inline void disconnect(database_ptr db, const connectParams& connPrams)
799
810
 
800
811
  }
801
812
 
802
- inline void disconnect(database_ptr db)
813
+ template <class Database_Ptr>
814
+ inline void disconnect(Database_Ptr db)
803
815
  {
804
816
  db->disconnect();
805
817
  if (db->stat())
@@ -807,14 +819,16 @@ inline void disconnect(database_ptr db)
807
819
 
808
820
  }
809
821
 
810
- inline void createDatabase(database_ptr db, const connectParams& connPrams)
822
+ template <class Database_Ptr>
823
+ inline void createDatabase(Database_Ptr db, const connectParams& connPrams)
811
824
  {
812
825
  db->create(connPrams.uri());
813
826
  if (db->stat())
814
827
  nstable::throwError((std::_tstring(_T("Create database ")) + connPrams.uri()).c_str(), db->stat());
815
828
  }
816
829
 
817
- inline void createDatabase(database_ptr db, const _TCHAR* uri)
830
+ template <class Database_Ptr>
831
+ inline void createDatabase(Database_Ptr db, const _TCHAR* uri)
818
832
  {
819
833
  db->create(uri);
820
834
  if (db->stat())
@@ -822,7 +836,8 @@ inline void createDatabase(database_ptr db, const _TCHAR* uri)
822
836
  }
823
837
 
824
838
 
825
- inline void openDatabase(database_ptr db, const connectParams& connPrams)
839
+ template <class Database_Ptr, class ConnectParam_type>
840
+ inline void openDatabase(Database_Ptr db, const ConnectParam_type& connPrams)
826
841
  {
827
842
  db->open(connPrams.uri(), connPrams.type(), connPrams.mode());
828
843
  if (db->stat())
@@ -830,7 +845,8 @@ inline void openDatabase(database_ptr db, const connectParams& connPrams)
830
845
 
831
846
  }
832
847
 
833
- inline void openDatabase(database_ptr db, const _TCHAR* uri, short schemaType = 0, short mode = -2, const _TCHAR* dir = NULL,
848
+ template <class Database_Ptr>
849
+ inline void openDatabase(Database_Ptr db, const _TCHAR* uri, short schemaType = 0, short mode = -2, const _TCHAR* dir = NULL,
834
850
  const _TCHAR* ownername = NULL)
835
851
  {
836
852
  db->open(uri, schemaType, mode, dir, ownername);
@@ -839,7 +855,8 @@ inline void openDatabase(database_ptr db, const _TCHAR* uri, short schemaType =
839
855
 
840
856
  }
841
857
 
842
- inline void dropDatabase(database_ptr db)
858
+ template <class Database_Ptr>
859
+ inline void dropDatabase(Database_Ptr db)
843
860
  {
844
861
  db->drop();
845
862
  if (db->stat())
@@ -847,7 +864,8 @@ inline void dropDatabase(database_ptr db)
847
864
 
848
865
  }
849
866
 
850
- inline table_ptr openTable(database_ptr db, const _TCHAR* name)
867
+ template <class Database_Ptr>
868
+ inline table_ptr openTable(Database_Ptr db, const _TCHAR* name)
851
869
  {
852
870
  table_ptr p(db->openTable(name), releaseTable);
853
871
  if (db->stat())
@@ -855,7 +873,9 @@ inline table_ptr openTable(database_ptr db, const _TCHAR* name)
855
873
  return p;
856
874
 
857
875
  }
858
- inline void convertTable(database_ptr db, short tableid, copyDataFn func=NULL)
876
+
877
+ template <class Database_Ptr>
878
+ inline void convertTable(Database_Ptr db, short tableid, copyDataFn func=NULL)
859
879
  {
860
880
 
861
881
  if (db->existsTableFile(tableid, NULL))
@@ -872,7 +892,8 @@ inline void convertTable(database_ptr db, short tableid, copyDataFn func=NULL)
872
892
  }
873
893
  }
874
894
 
875
- inline void convertTable(database_ptr db, const _TCHAR* name, copyDataFn func=NULL)
895
+ template <class Database_Ptr>
896
+ inline void convertTable(Database_Ptr db, const _TCHAR* name, copyDataFn func=NULL)
876
897
  {
877
898
  assert(db->dbDef());
878
899
  short tablenum = db->dbDef()->tableNumByName(name);
@@ -930,7 +951,7 @@ inline void insertRecord(const T& it, bool ncc = true)
930
951
  {
931
952
  it.tb().insert(ncc);
932
953
  if (it.tb().stat() != 0)
933
- nstable::throwError(std::_tstring(_T("Insert record")).c_str(), it.tb().stat());
954
+ nstable::throwError(std::_tstring(_T("Insert record")).c_str(), &(it.tb()));
934
955
 
935
956
  }
936
957
 
@@ -939,7 +960,7 @@ inline void updateRecord(const T& it, bool ncc = true)
939
960
  {
940
961
  it.tb().update((nstable::eUpdateType)ncc);
941
962
  if (it.tb().stat() != 0)
942
- nstable::throwError(std::_tstring(_T("Update record")).c_str(), it.tb().stat());
963
+ nstable::throwError(std::_tstring(_T("Update record")).c_str(), &(it.tb()));
943
964
 
944
965
  }
945
966
 
@@ -948,7 +969,7 @@ inline void updateRecord(fields& fd, char_td keynum)
948
969
  fd.tb().setKeyNum(keynum);
949
970
  fd.tb().update(nstable::changeInKey);
950
971
  if (fd.tb().stat() != 0)
951
- nstable::throwError(std::_tstring(_T("Update record")).c_str(), fd.tb().stat());
972
+ nstable::throwError(std::_tstring(_T("Update record")).c_str(), &(fd.tb()));
952
973
  }
953
974
 
954
975
  inline void deleteRecord(fields& fd, const char_td keynum)
@@ -956,14 +977,14 @@ inline void deleteRecord(fields& fd, const char_td keynum)
956
977
  fd.tb().setKeyNum(keynum);
957
978
  fd.tb().del(true/*inKey*/);
958
979
  if (fd.tb().stat() != 0)
959
- nstable::throwError(std::_tstring(_T("Update record")).c_str(), fd.tb().stat());
980
+ nstable::throwError(std::_tstring(_T("Update record")).c_str(), &(fd.tb()));
960
981
  }
961
982
 
962
983
  template <class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
963
984
  void deleteRecord(table_ptr tb, const char_td keynum
964
985
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
965
986
  {
966
- keyValue<T0, T1, T2, T3, T4, T5, T6, T7>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
987
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6, T7>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6, kv7);
967
988
  fields fd(tb);
968
989
  deleteRecord(fd, keynum);
969
990
  }
@@ -972,7 +993,7 @@ template <class T0, class T1, class T2, class T3, class T4, class T5, class T6>
972
993
  void deleteRecord(table_ptr tb, const char_td keynum
973
994
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5, const T6 kv6)
974
995
  {
975
- keyValue<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
996
+ keyValueSetter<T0, T1, T2, T3, T4, T5, T6>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5, kv6);
976
997
  fields fd(tb);
977
998
  deleteRecord(fd, keynum);
978
999
  }
@@ -981,7 +1002,7 @@ template <class T0, class T1, class T2, class T3, class T4, class T5>
981
1002
  void deleteRecord(table_ptr tb, const char_td keynum
982
1003
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4, const T5 kv5)
983
1004
  {
984
- keyValue<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
1005
+ keyValueSetter<T0, T1, T2, T3, T4, T5>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4, kv5);
985
1006
  fields fd(tb);
986
1007
  deleteRecord(fd, keynum);
987
1008
  }
@@ -990,7 +1011,7 @@ template <class T0, class T1, class T2, class T3, class T4>
990
1011
  void deleteRecord(table_ptr tb, const char_td keynum
991
1012
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3,const T4 kv4)
992
1013
  {
993
- keyValue<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
1014
+ keyValueSetter<T0, T1, T2, T3, T4>::set(tb, keynum, kv0, kv1, kv2, kv3, kv4);
994
1015
  fields fd(tb);
995
1016
  deleteRecord(fd, keynum);
996
1017
  }
@@ -999,7 +1020,7 @@ template <class T0, class T1, class T2, class T3>
999
1020
  void deleteRecord(table_ptr tb, const char_td keynum
1000
1021
  ,const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3)
1001
1022
  {
1002
- keyValue<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
1023
+ keyValueSetter<T0, T1, T2, T3>::set(tb, keynum, kv0, kv1, kv2, kv3);
1003
1024
  fields fd(tb);
1004
1025
  deleteRecord(fd, keynum);
1005
1026
  }
@@ -1008,7 +1029,7 @@ template <class T0, class T1, class T2>
1008
1029
  void deleteRecord(table_ptr tb, const char_td keynum
1009
1030
  ,const T0 kv0, const T1 kv1, const T2 kv2)
1010
1031
  {
1011
- keyValue<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
1032
+ keyValueSetter<T0, T1, T2>::set(tb, keynum, kv0, kv1, kv2);
1012
1033
  fields fd(tb);
1013
1034
  deleteRecord(fd, keynum);
1014
1035
  }
@@ -1017,7 +1038,7 @@ template <class T0, class T1>
1017
1038
  void deleteRecord(table_ptr tb, const char_td keynum
1018
1039
  ,const T0 kv0, const T1 kv1)
1019
1040
  {
1020
- keyValue<T0, T1>::set(tb, keynum, kv0, kv1);
1041
+ keyValueSetter<T0, T1>::set(tb, keynum, kv0, kv1);
1021
1042
  fields fd(tb);
1022
1043
  deleteRecord(fd, keynum);
1023
1044
  }
@@ -1026,7 +1047,7 @@ template <class T0>
1026
1047
  void deleteRecord(table_ptr tb, const char_td keynum
1027
1048
  ,const T0 kv0)
1028
1049
  {
1029
- keyValue<T0>::set(tb, keynum, kv0);
1050
+ keyValueSetter<T0>::set(tb, keynum, kv0);
1030
1051
  fields fd(tb);
1031
1052
  deleteRecord(fd, keynum);
1032
1053
  }
@@ -1036,7 +1057,7 @@ inline void deleteRecord(const T& it)
1036
1057
  {
1037
1058
  it.tb().del(false/*inKey*/);
1038
1059
  if (it.tb().stat() != 0)
1039
- nstable::throwError(std::_tstring(_T("Delete record")).c_str(), it.tb().stat());
1060
+ nstable::throwError(std::_tstring(_T("Delete record")).c_str(), &(it.tb()));
1040
1061
  }
1041
1062
 
1042
1063