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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f89d3c2a7bda1a1c1acbe8113106f860cac1ede
4
- data.tar.gz: 33eb8baabb33c8915a9fc68dd5bb8cf4b3198d76
3
+ metadata.gz: 170428ca4c13d71e29e383dcd2177a3379ab9aa6
4
+ data.tar.gz: 679895450a096a43e0c3eb97fdd89e9da2b1c854
5
5
  SHA512:
6
- metadata.gz: 1341f50aaae62539ab3844a0658836f516ea75f47d48879e78e34f795f12fa41743a580ec1b54d4c93fb8408729d44f770514a1aee17fe2cf0b0a73058317123
7
- data.tar.gz: 8ca6b44afd9d429e98c673a32982b0a759c1a2ab304029778262c5729ffdbf0bb7311f18d86b5ee5df29b6d2baac4a1841d0fdfaf679fa45b1ea2a3a4a7c53dc
6
+ metadata.gz: b8fb996a5df63898313c19c456251efe0a4e598e0e9cb426828f7a5f4ac60df1474c6be25faa03756977c08db346d5aa41351e0d775bcbd7bffce876a5ff8bde
7
+ data.tar.gz: 18b21cf181a039f3bc1811e3a2d3ad0665f13a08f9baf7c8735973736312791bff390c6b4a3e0f759eedb56fcb7a6836308de83198e22082228cdd9a79d23c67
data/CMakeLists.txt CHANGED
@@ -29,16 +29,28 @@ include(build/common/transactd_common.cmake)
29
29
  option(WITH_TRANSACTD_SERVER "Build Transactd server plugin" ON)
30
30
  option(WITH_TRANSACTD_CLIENTS "Build Transactd client libraries" ON)
31
31
  option(TRANSACTD_HANDLERSOCKET "Add HandlerSocket protocol to Transactd plugin" ON)
32
- option(TRANSACTD_RUBY_GEM "Build Transactd ruby gem" OFF)
33
32
  set(TRANSACTD_PREFIX "/usr/local/transactd" CACHE STRING "Prefix for transactd executables(test,benchmark)")
34
33
  set(TRANSACTD_CLIENTS_PREFIX "" CACHE STRING "Prefix for transactd client libraries")
34
+ # options for Ruby client
35
+ option(TRANSACTD_RUBY_GEM "Build Transactd ruby gem" OFF)
36
+ # options for PHP client
37
+ option(TRANSACTD_PHP "Build Transactd client PHP extension" OFF)
38
+ set(TRANSACTD_PHP_SOURCE_ROOT "" CACHE STRING "Path of php source directory")
39
+ set(TRANSACTD_PHP_LIBRARY_PATH "" CACHE STRING "Library path for php")
40
+ option(TRANSACTD_PHP_ZTS "Add ZTS flag for build Transactd client PHP extension" OFF)
35
41
 
36
42
  # The following options are set automatically if not specified.
37
43
  # Usually you do not have to set these values.
44
+ # options for Ruby client
38
45
  set(TRANSACTD_RUBY_GEM_ROOT_PATH "" CACHE STRING "Transactd gem root path")
39
46
  set(TRANSACTD_RUBY_EXECUTABLE_PATH "" CACHE STRING "Ruby executable path")
40
- set(TRANSACTD_RUBY_INCLUDE_PATH "" CACHE STRING "Include path for ruby-swig")
41
- set(TRANSACTD_RUBY_LIBRARY_PATH "" CACHE STRING "Include path for ruby")
47
+ set(TRANSACTD_RUBY_INCLUDE_PATH "" CACHE STRING "Include path for ruby")
48
+ set(TRANSACTD_RUBY_LIBRARY_PATH "" CACHE STRING "Library path for ruby")
49
+ # options for PHP client
50
+ set(TRANSACTD_PHP_INCLUDE_PATH "" CACHE STRING "Include path for PHP")
51
+ option(TRANSACTD_PHP_USE_32BIT_TIME_T
52
+ "Add _USE_32BIT_TIME_T option for building Transactd client PHP extension" ON)
53
+ set(TDCL_CPP_CHARSET "" CACHE STRING "Transactd clients charset m:Multibyte u:Unicode")
42
54
 
43
55
 
44
56
  # ==========================================================
@@ -50,6 +62,10 @@ if(TRANSACTD_RUBY_GEM)
50
62
  set(WITH_TRANSACTD_SERVER OFF)
51
63
  set(WITH_TRANSACTD_CLIENTS OFF)
52
64
  endif()
65
+ if(TRANSACTD_PHP)
66
+ set(WITH_TRANSACTD_SERVER OFF)
67
+ set(WITH_TRANSACTD_CLIENTS OFF)
68
+ endif()
53
69
 
54
70
 
55
71
  # ==========================================================
@@ -71,7 +87,9 @@ if(WITH_TRANSACTD_CLIENTS)
71
87
  endif()
72
88
  subdirs("build/tdclc")
73
89
  if(WIN32 AND NOT MINGW)
74
- set(TDCL_CPP_CHARSET u)
90
+ if((NOT ("${TDCL_CPP_CHARSET}" STREQUAL "m")) AND (NOT ("${TDCL_CPP_CHARSET}" STREQUAL "u")))
91
+ set(TDCL_CPP_CHARSET u)
92
+ endif()
75
93
  else()
76
94
  set(TDCL_CPP_CHARSET m)
77
95
  endif()
@@ -91,6 +109,21 @@ if(TRANSACTD_RUBY_GEM)
91
109
  if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
92
110
  project(tdcl)
93
111
  endif()
112
+ set(TDCL_CPP_CHARSET m)
94
113
  transactd_copy_subdir("${TRANSACTD_ROOT}" tdclcpp tdclcppm)
95
114
  subdirs("build/tdclrb")
96
115
  endif()
116
+
117
+
118
+ # ==========================================================
119
+ # build PHP extension
120
+ # ==========================================================
121
+ if(TRANSACTD_PHP)
122
+ message(STATUS "BUILD Transactd client PHP extension")
123
+ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
124
+ project(tdcl)
125
+ endif()
126
+ set(TDCL_CPP_CHARSET m)
127
+ transactd_copy_subdir("${TRANSACTD_ROOT}" tdclcpp tdclcppm)
128
+ subdirs("build/tdclphp")
129
+ endif()
Binary file
Binary file
@@ -32,7 +32,6 @@ macro(tdcl_add_source_files TRANSACTD_ROOT)
32
32
  ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/errorMessage.cpp
33
33
  ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/fieldDDF.cpp
34
34
  ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/fileDDF.cpp
35
- ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/filter.cpp
36
35
  ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/indexDDF.cpp
37
36
  ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/nsDatabase.cpp
38
37
  ${TRANSACTD_ROOT}/source/bzs/db/protocol/tdap/client/nsTable.cpp
@@ -209,7 +209,7 @@ macro(transactd_link_boost_libraries boost_components)
209
209
  target_link_libraries(${this_target} ${Boost_LIBRARIES})
210
210
  else()
211
211
  if(APPLE)
212
- target_link_libraries(${this_target} ${Boost_LIBRARIES})
212
+ target_link_libraries(${this_target} ${Boost_LIBRARIES})
213
213
  else()
214
214
  # need "-lrt" after chrono or timer
215
215
  target_link_libraries(${this_target} ${Boost_LIBRARIES} rt)
@@ -219,21 +219,41 @@ macro(transactd_link_boost_libraries boost_components)
219
219
  ## find Boost for Visual Studio /MD or /MDd or /MT or /MTd
220
220
  if(MSVC)
221
221
  get_boost_libs("${boost_components}")
222
- add_library(boostlibs_for_${this_target} SHARED IMPORTED)
223
222
  if("${CMAKE_CONFIGURATION_TYPES}" STREQUAL "")
224
223
  set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo MinSizeRel)
225
224
  endif()
225
+ # buildtype-specified libraries
226
226
  foreach(BT_NAME "" ${CMAKE_CONFIGURATION_TYPES})
227
227
  if(NOT("${BT_NAME}" STREQUAL ""))
228
228
  set(BT_NAME "_${BT_NAME}")
229
229
  string(TOUPPER "${BT_NAME}" BT_NAME)
230
230
  endif()
231
231
  get_boost_libs_from_CXXFLAGS("${CMAKE_CXX_FLAGS${BT_NAME}}")
232
- set_property(TARGET boostlibs_for_${this_target} PROPERTY
233
- "IMPORTED_IMPLIB${BT_NAME}" ${get_boost_libs_from_CXXFLAGS_return})
232
+ set(boost_libs_for${BT_NAME} "${get_boost_libs_from_CXXFLAGS_return}")
233
+ string(REGEX REPLACE ";$" "" boost_libs_for${BT_NAME} "${boost_libs_for${BT_NAME}}")
234
+ list(LENGTH boost_libs_for${BT_NAME} boost_libs_listlen${BT_NAME})
235
+ if(${boost_libs_listlen${BT_NAME}} GREATER ${boost_libs_listlen})
236
+ set(boost_libs_listlen ${boost_libs_listlen${BT_NAME}})
237
+ endif()
234
238
  endforeach()
235
- if(NOT "${boost_components}" STREQUAL "")
236
- target_link_libraries(${this_target} boostlibs_for_${this_target})
239
+ # add libraries
240
+ if(${boost_libs_listlen} GREATER 0)
241
+ foreach(idx RANGE 1 ${boost_libs_listlen})
242
+ math(EXPR i "${idx} - 1")
243
+ add_library(boostlibs_for_${this_target}_${idx} SHARED IMPORTED)
244
+ foreach(BT_NAME "" ${CMAKE_CONFIGURATION_TYPES})
245
+ if(NOT("${BT_NAME}" STREQUAL ""))
246
+ set(BT_NAME "_${BT_NAME}")
247
+ string(TOUPPER "${BT_NAME}" BT_NAME)
248
+ endif()
249
+ list(GET boost_libs_for${BT_NAME} ${i} boost_lib_tmp)
250
+ set_property(TARGET boostlibs_for_${this_target}_${idx} PROPERTY
251
+ IMPORTED_IMPLIB${BT_NAME} "${boost_lib_tmp}")
252
+ endforeach()
253
+ if(NOT "${boost_components}" STREQUAL "")
254
+ target_link_libraries(${this_target} boostlibs_for_${this_target}_${idx})
255
+ endif()
256
+ endforeach()
237
257
  endif()
238
258
  endif()
239
259
  include_directories("${Boost_INCLUDE_DIRS}")
@@ -0,0 +1,58 @@
1
+ ##=================================================================
2
+ # Copyright (C) 2012 2013 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
+ ## GENERATE SWIG WRAPPER
20
+ if(WIN32)
21
+ execute_process(
22
+ ERROR_VARIABLE TRANSACTD_GENERATE_ERROR_VAR
23
+ COMMAND "@SWIG_GEN_CMD_WIN@"
24
+ )
25
+ else()
26
+ get_filename_component(TRANSACTD_PHP_PATH "@SWIG_NATIVE_OUTFILE@" PATH)
27
+ file(TO_CMAKE_PATH "${TRANSACTD_PHP_PATH}/transactd.php" TRANSACTD_PHP_PATH)
28
+ ## generate correct transactd.php
29
+ if(NOT EXISTS "${TRANSACTD_PHP_PATH}.correct")
30
+ MESSAGE("Generating ${TRANSACTD_PHP_PATH}.correct ...")
31
+ execute_process(
32
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "@SWIG_INTERFACE_FILE@" "@SWIG_INTERFACE_FILE@.org")
33
+ execute_process(
34
+ COMMAND grep -v "^%newobj" "@SWIG_INTERFACE_FILE@.org"
35
+ OUTPUT_FILE "@SWIG_INTERFACE_FILE@")
36
+ execute_process(
37
+ ERROR_VARIABLE TRANSACTD_GENERATE_ERROR_VAR
38
+ COMMAND swig -c++ -php5 -I@SWIG_INC_PATH1@ -I@SWIG_INC_PATH2@ -o @SWIG_NATIVE_OUTFILE@ @SWIG_INTERFACE_FILE@)
39
+ execute_process(
40
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${TRANSACTD_PHP_PATH}" "${TRANSACTD_PHP_PATH}.correct")
41
+ execute_process(
42
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "@SWIG_INTERFACE_FILE@.org" "@SWIG_INTERFACE_FILE@")
43
+ execute_process(
44
+ COMMAND ${CMAKE_COMMAND} -E remove "@SWIG_INTERFACE_FILE@.org")
45
+ endif()
46
+ ## generate wrapper cpp
47
+ execute_process(
48
+ ERROR_VARIABLE TRANSACTD_GENERATE_ERROR_VAR
49
+ COMMAND swig -c++ -php5 -I@SWIG_INC_PATH1@ -I@SWIG_INC_PATH2@ -o @SWIG_NATIVE_OUTFILE@ @SWIG_INTERFACE_FILE@)
50
+ ## overwrite with correct transactd.php
51
+ execute_process(
52
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different "${TRANSACTD_PHP_PATH}.correct" "${TRANSACTD_PHP_PATH}")
53
+ endif()
54
+
55
+ if("${TRANSACTD_GENERATE_ERROR_VAR}" STREQUAL "")
56
+ else()
57
+ message(STATUS ${TRANSACTD_GENERATE_ERROR_VAR})
58
+ endif()
@@ -0,0 +1,41 @@
1
+ @REM ===============================================================
2
+ @REM Copyright (C) 2013 BizStation Corp All rights reserved.
3
+ @REM
4
+ @REM This program is free software; you can redistribute it and/or
5
+ @REM modify it under the terms of the GNU General Public License
6
+ @REM as published by the Free Software Foundation; either version 2
7
+ @REM of the License, or (at your option) any later version.
8
+ @REM
9
+ @REM This program is distributed in the hope that it will be useful,
10
+ @REM but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ @REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ @REM GNU General Public License for more details.
13
+ @REM
14
+ @REM You should have received a copy of the GNU General Public License
15
+ @REM along with this program; if not, write to the Free Software
16
+ @REM Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ @REM 02111-1307, USA.
18
+ @REM ===============================================================
19
+ call :GET_TRANSACTD_PHP_PATH "@SWIG_NATIVE_OUTFILE@"
20
+ if not exist "%TDPHPPATH%.correct" call :GENERATE_TRANSACTD_PHP_CORRECT
21
+
22
+ swig -c++ -php5 -DSWIGWIN -D_WIN32 -I"@SWIG_INC_PATH1@" -I"@SWIG_INC_PATH2@" @SWIG_ADDITONAL_OPTIONS@ -o "@SWIG_NATIVE_OUTFILE@" "@SWIG_INTERFACE_FILE@"
23
+ del "%TDPHPPATH%"
24
+ copy "%TDPHPPATH%.correct" "%TDPHPPATH%"
25
+
26
+ exit /b 0
27
+
28
+ :GENERATE_TRANSACTD_PHP_CORRECT
29
+ copy "@SWIG_INTERFACE_FILE@" "@SWIG_INTERFACE_FILE@.org"
30
+ findstr /V /B /C:"%%newobject" "@SWIG_INTERFACE_FILE@.org" > "@SWIG_INTERFACE_FILE@"
31
+ swig -c++ -php5 -DSWIGWIN -D_WIN32 -I"@SWIG_INC_PATH1@" -I"@SWIG_INC_PATH2@" @SWIG_ADDITONAL_OPTIONS@ -o "@SWIG_NATIVE_OUTFILE@" "@SWIG_INTERFACE_FILE@"
32
+ del "@SWIG_INTERFACE_FILE@"
33
+ copy "@SWIG_INTERFACE_FILE@.org" "@SWIG_INTERFACE_FILE@"
34
+ del "@SWIG_INTERFACE_FILE@.org"
35
+ move "%TDPHPPATH%" "%TDPHPPATH%.correct"
36
+ exit /b 0
37
+
38
+ :GET_TRANSACTD_PHP_PATH
39
+ setlocal enabledelayedexpansion
40
+ endlocal && set TDPHPPATH=%~dp1transactd.php
41
+ exit /b 0
@@ -0,0 +1,155 @@
1
+ /*=================================================================
2
+ Copyright (C) 2013 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
+ #if defined(SWIGPHP) // ======= For PHP =======
20
+
21
+ /* ===============================================
22
+ ignore functions
23
+ =============================================== */
24
+ // original callback
25
+ %ignore bzs::db::protocol::tdap::client::database::onCopyData;
26
+ %ignore bzs::db::protocol::tdap::client::database::setOnCopyData;
27
+ %ignore bzs::db::protocol::tdap::client::database::onDeleteRecord;
28
+ %ignore bzs::db::protocol::tdap::client::database::setOnDeleteRecord;
29
+ // overloaded functions
30
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, float); // use double instead of this
31
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, unsigned char); // use __int64 instead of this
32
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, short); // use __int64 instead of this
33
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, int); // use __int64 instead of this
34
+ %ignore bzs::db::protocol::tdap::client::table::setFV(const _TCHAR *, float); // use double instead of this
35
+ %ignore bzs::db::protocol::tdap::client::table::setFV(const _TCHAR *, unsigned char); // use __int64 instead of this
36
+ %ignore bzs::db::protocol::tdap::client::table::setFV(const _TCHAR *, short); // use __int64 instead of this
37
+ %ignore bzs::db::protocol::tdap::client::table::setFV(const _TCHAR *, int); // use __int64 instead of this
38
+ %ignore bzs::db::protocol::tdap::client::table::setFVW; // use setFV instead of this
39
+ %ignore bzs::db::protocol::tdap::client::table::getFVWstr; // use getFVstr instead of this
40
+ %ignore bzs::db::protocol::tdap::btrTimeStamp::btrTimeStamp(const wchar_t *); // use char* instead of this
41
+ %ignore bzs::db::protocol::tdap::btrTimeStamp::toString(wchar_t *); // use char* instead of this
42
+ %ignore bzs::db::protocol::tdap::btrTimeStamp::fromString(const wchar_t *); // use char* instead of this
43
+ %ignore bzs::db::protocol::tdap::atobtrd(const wchar_t *); // use char* instead of this
44
+ %ignore bzs::db::protocol::tdap::atobtrt(const wchar_t *); // use char* instead of this
45
+ %ignore bzs::db::protocol::tdap::btrdtoa(int, wchar_t *); // use char* instead of this
46
+ %ignore bzs::db::protocol::tdap::btrdtoa(int, wchar_t *, bool); // use char* instead of this
47
+ %ignore bzs::db::protocol::tdap::btrdtoa(const btrDate &, wchar_t *); // use char* instead of this
48
+ %ignore bzs::db::protocol::tdap::btrdtoa(const btrDate &, wchar_t *, bool); // use char* instead of this
49
+ %ignore bzs::db::protocol::tdap::btrttoa(int, wchar_t *); // use char* instead of this
50
+ %ignore bzs::db::protocol::tdap::btrttoa(int, wchar_t *, bool); // use char* instead of this
51
+ %ignore bzs::db::protocol::tdap::btrttoa(const btrTime &, wchar_t *); // use char* instead of this
52
+ %ignore bzs::db::protocol::tdap::btrttoa(const btrTime &, wchar_t *, bool); // use char* instead of this
53
+
54
+
55
+ /* ===============================================
56
+ Rename functions
57
+ =============================================== */
58
+ // Rename function which has keyword of PHP as its name.
59
+ %rename(andWhere) bzs::db::protocol::tdap::client::queryBase::And;
60
+ %rename(orWhere) bzs::db::protocol::tdap::client::queryBase::Or;
61
+
62
+
63
+ /* ===============================================
64
+ set execCodePage on createObject
65
+ =============================================== */
66
+ %ignore bzs::db::protocol::tdap::client::database::create();
67
+ %extend bzs::db::protocol::tdap::client::database {
68
+ static bzs::db::protocol::tdap::client::database* createObject()
69
+ {
70
+ bzs::db::protocol::tdap::client::nsdatabase::setExecCodePage(CP_UTF8);
71
+ return bzs::db::protocol::tdap::client::database::create();
72
+ }
73
+ };
74
+ %newobject bzs::db::protocol::tdap::client::database::createObject;
75
+ %delobject bzs::db::protocol::tdap::client::database::release;
76
+
77
+
78
+ /* ===============================================
79
+ SWIG PHP can't convert String to c++ wchar_t
80
+ so define _TCHAR as char.
81
+ =============================================== */
82
+ #ifdef _UNICODE
83
+ #undef _UNICODE
84
+ #endif
85
+ #ifdef UNICODE
86
+ #undef UNICODE
87
+ #endif
88
+ typedef char _TCHAR;
89
+ #define _T(x) x
90
+
91
+
92
+ /* ===============================================
93
+ define strtoll and strtoull
94
+ for Visual Studio 2008 or lesser
95
+ =============================================== */
96
+ %{
97
+ #if _MSC_VER
98
+ #define strtoll _strtoi64
99
+ #define strtoull _strtoui64
100
+ #endif
101
+ %}
102
+
103
+
104
+ /* ===============================================
105
+ typemap
106
+ =============================================== */
107
+ %apply short { char_td }
108
+ %typemap(argout) (const char* u8, int u8size, char* mbc, int mbcsize) {
109
+ ZVAL_STRING(return_value, (char *)$3, 1);
110
+ }
111
+ %typemap(argout) (const char* mbc, int mbcsize, char* u8, int u8size) {
112
+ ZVAL_STRING(return_value, (char *)$3, 1);
113
+ }
114
+
115
+
116
+ /* ===============================================
117
+ setFV / getFV for binary data
118
+ =============================================== */
119
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, const void *, uint_td);
120
+ %extend bzs::db::protocol::tdap::client::table {
121
+ void setFV(short index, const char * data, uint_td size) {
122
+ return self->setFV(index, (void const *) data, size);
123
+ }
124
+ void setFV(const _TCHAR *fieldName, const char * data, uint_td size) {
125
+ return self->setFV(fieldName, (void const *) data, size);
126
+ }
127
+ };
128
+ %typemap(in, numinputs=0) (uint_td & size) (uint_td temp) {
129
+ $1 = &temp;
130
+ }
131
+ %typemap(argout) (uint_td & size) {
132
+ ZVAL_STRINGL($result, (char *)result, *$1, 1);
133
+ }
134
+
135
+
136
+ /* ===============================================
137
+ phpinfo
138
+ =============================================== */
139
+ #ifndef SWIGWIN
140
+ %{
141
+ #define TRANSACTD_PHP_REQUIRED_MODULE_PREFIX "lib"
142
+ %}
143
+ #else
144
+ %{
145
+ #define TRANSACTD_PHP_REQUIRED_MODULE_PREFIX ""
146
+ %}
147
+ #endif
148
+ %pragma(php) phpinfo="
149
+ php_info_print_table_start();
150
+ php_info_print_table_row(2, \"Version\", CPP_INTERFACE_VER_MAJOR \".\" CPP_INTERFACE_VER_MINOR \".\" CPP_INTERFACE_VER_RELEASE);
151
+ php_info_print_table_row(2, \"Required Module\", TRANSACTD_PHP_REQUIRED_MODULE_PREFIX TDCLC_LIBNAME);
152
+ php_info_print_table_end();
153
+ "
154
+
155
+ #endif // =============== For PHP ===============
@@ -36,6 +36,14 @@
36
36
  %ignore bzs::db::protocol::tdap::client::database::setOnDeleteRecord;
37
37
 
38
38
 
39
+ /* ===============================================
40
+ Rename functions
41
+ =============================================== */
42
+ // Rename function which has keyword of Ruby as its name.
43
+ %rename(andWhere) bzs::db::protocol::tdap::client::queryBase::And;
44
+ %rename(orWhere) bzs::db::protocol::tdap::client::queryBase::Or;
45
+
46
+
39
47
  /* ===============================================
40
48
  Ruby can't convert String to c++ wchar_t
41
49
  so define _TCHAR as char.
@@ -65,6 +73,36 @@ typedef char _TCHAR;
65
73
  %delobject bzs::db::protocol::tdap::client::database::release;
66
74
 
67
75
 
76
+ /* ===============================================
77
+ setFV / getFV for binary data
78
+ =============================================== */
79
+ %ignore bzs::db::protocol::tdap::client::table::setFV(short, const void *, uint_td);
80
+ %extend bzs::db::protocol::tdap::client::table {
81
+ void setFV(short index, const char * data, uint_td size) {
82
+ return self->setFV(index, (void const *) data, size);
83
+ }
84
+ void setFV(const _TCHAR *fieldName, const char * data, uint_td size) {
85
+ return self->setFV(fieldName, (void const *) data, size);
86
+ }
87
+ const char * getFVbin(short index, uint_td& size)
88
+ {
89
+ return (const char *)(self->getFVbin(index, size));
90
+ }
91
+ const char * getFVbin(const _TCHAR *fieldName, uint_td& size)
92
+ {
93
+ return (const char *)(self->getFVbin(fieldName, size));
94
+ }
95
+ };
96
+ %typemap(in, numinputs=0) (uint_td & size) (uint_td temp) {
97
+ $1 = &temp;
98
+ }
99
+ %typemap(argout) (uint_td & size) {
100
+ $result = rb_str_new((const char *)result, *$1);
101
+ }
102
+ %ignore bzs::db::protocol::tdap::client::table::getFVbin(short, uint_td&);
103
+ %ignore bzs::db::protocol::tdap::client::table::getFVbin(const _TCHAR *, uint_td&);
104
+
105
+
68
106
  /* ===============================================
69
107
  add encoding support for ruby 1.9
70
108
  =============================================== */
data/build/swig/tdcl.i CHANGED
@@ -21,18 +21,24 @@
21
21
  =============================================== */
22
22
  #if defined(SWIGRUBY)
23
23
  %include "ruby/ruby.swg"
24
+ #elif defined(SWIGPHP)
25
+ %include "php/php.swg"
24
26
  #endif
25
27
 
26
28
  %module transactd
27
29
 
28
30
  %include typemaps.i
29
31
  %include std_string.i
32
+ %include wchar.i
30
33
 
31
34
 
32
35
  /* ===============================================
33
36
  HEADERS (for cpp compilation)
34
37
  =============================================== */
35
38
  %{
39
+ #ifdef SWIGPHP
40
+ #undef realloc
41
+ #endif
36
42
  #include <bzs/env/crosscompile.h>
37
43
  #include <bzs/env/compiler.h>
38
44
  #include <bzs/db/protocol/tdap/btrDate.h>
@@ -75,6 +81,19 @@ using namespace bzs::db::protocol::tdap::client;
75
81
  /* ===============================================
76
82
  Ignore section
77
83
  =============================================== */
84
+ // functions used by internal C++
85
+ %ignore bzs::db::protocol::tdap::client::nsdatabase::btrvFunc;
86
+ %ignore bzs::db::protocol::tdap::fileSpec;
87
+ %ignore bzs::db::protocol::tdap::keySpec;
88
+ %ignore bzs::db::protocol::tdap::fielddef::dataLen;
89
+ %ignore bzs::db::protocol::tdap::fielddef::keyCopy;
90
+ %ignore bzs::db::protocol::tdap::fielddef::keyData;
91
+ %ignore bzs::db::protocol::tdap::fielddef::keyDataLen;
92
+ %ignore bzs::db::protocol::tdap::fielddef::blobDataPtr;
93
+ %ignore bzs::db::protocol::tdap::fielddef::blobDataLen;
94
+ // overwrote functions
95
+ %ignore bzs::db::protocol::tdap::client::nsdatabase::createTable;
96
+ %ignore bzs::db::protocol::tdap::client::nsdatabase::getBtrVersion(btrVersions*, uchar_td*);
78
97
  // ignore members used BizStation internal only
79
98
  %ignore bzs::db::protocol::tdap::fielddef::chainChar;
80
99
  %ignore bzs::db::protocol::tdap::fielddef::setChainChar;
@@ -99,12 +118,23 @@ using namespace bzs::db::protocol::tdap::client;
99
118
  %ignore bzs::db::protocol::tdap::tabledef::parentKeyNum;
100
119
  %ignore bzs::db::protocol::tdap::tabledef::replicaKeyNum;
101
120
  %ignore bzs::db::protocol::tdap::tabledef::treeIndex;
121
+ %ignore bzs::db::protocol::tdap::tabledef::filler0;
122
+ %ignore bzs::db::protocol::tdap::tabledef::reserved;
102
123
  %ignore bzs::db::protocol::tdap::client::dbdef::fieldNumByViewNum;
103
124
  // ignore operator=
104
125
  %ignore bzs::db::protocol::tdap::client::nsdatabase::operator=;
105
126
  %ignore bzs::db::protocol::tdap::client::database::operator=;
106
127
  // ignore internal structures / functions
107
128
  %ignore bzs::rtl::benchmark::report;
129
+ // ignore methods that will be replaced other methods
130
+ %ignore bzs::db::protocol::tdap::client::table::keyValueDescription(_TCHAR* buf, int bufsize);
131
+ %ignore bzs::db::protocol::tdap::client::queryBase::addField;
132
+ %ignore bzs::db::protocol::tdap::client::queryBase::addLogic;
133
+ %ignore bzs::db::protocol::tdap::client::queryBase::addSeekKeyValue;
134
+ // ignore queryBase destructor. use release instead of it.
135
+ %ignore bzs::db::protocol::tdap::client::queryBase::~queryBase;
136
+ %newobject bzs::db::protocol::tdap::client::queryBase::create;
137
+ %delobject bzs::db::protocol::tdap::client::queryBase::release;
108
138
 
109
139
 
110
140
  /* ===============================================
@@ -131,9 +161,29 @@ using namespace bzs::db::protocol::tdap::client;
131
161
 
132
162
 
133
163
  /* ===============================================
134
- external symbols
164
+ type defines
135
165
  =============================================== */
166
+ %apply unsigned long long { unsigned __int64 }
136
167
  %apply long long { __int64 }
168
+
169
+
170
+ /* ===============================================
171
+ typemap and extend for table::keyValueDescription
172
+ =============================================== */
173
+ %typemap(in,numinputs=0) (_TCHAR* keyValueDescription_buf) (_TCHAR tmpbuf[1024 * 8]) {
174
+ $1 = tmpbuf;
175
+ }
176
+ %extend bzs::db::protocol::tdap::client::table {
177
+ const _TCHAR* keyValueDescription(_TCHAR* keyValueDescription_buf) {
178
+ self->keyValueDescription(keyValueDescription_buf, 1024 * 8);
179
+ return keyValueDescription_buf;
180
+ }
181
+ };
182
+
183
+
184
+ /* ===============================================
185
+ external symbols
186
+ =============================================== */
137
187
  %include bzs/env/compiler.h
138
188
  #ifdef SWIGWIN
139
189
  #define CP_ACP 0
@@ -155,12 +205,92 @@ using namespace bzs::db::protocol::tdap::client;
155
205
  %include bzs/rtl/benchmark.h
156
206
  %include bzs/db/protocol/tdap/mysql/characterset.h
157
207
  // typemap for btrTimeStamp::toString/btrdtoa/btrttoa/btrstoa --
158
- %typemap(in,numinputs=0) (char *) (char tmpbuf[255]) { $1=tmpbuf; }
208
+ %typemap(in,numinputs=0) (char * retbuf) (char tmpbuf[255]) { $1=tmpbuf; }
159
209
  %include bzs/db/protocol/tdap/btrDate.h
160
- %clear char *;
210
+ %clear char * retbuf;
161
211
  // clear typemap for typemap for btrTimeStamp::toString/btrdtoa/btrttoa/btrstoa --
162
212
 
163
213
 
214
+ /* ===============================================
215
+ expand queryBase class
216
+ * Replace functions for convenience
217
+ =============================================== */
218
+ %extend bzs::db::protocol::tdap::client::queryBase {
219
+ queryBase* select(const _TCHAR* value1,
220
+ const _TCHAR* value2 = NULL, const _TCHAR* value3 = NULL, const _TCHAR* value4 = NULL,
221
+ const _TCHAR* value5 = NULL, const _TCHAR* value6 = NULL, const _TCHAR* value7 = NULL,
222
+ const _TCHAR* value8 = NULL, const _TCHAR* value9 = NULL, const _TCHAR* value10 = NULL)
223
+ {
224
+ self->addField(value1);
225
+ if (value2 != NULL)
226
+ self->addField(value2);
227
+ if (value3 != NULL)
228
+ self->addField(value3);
229
+ if (value4 != NULL)
230
+ self->addField(value4);
231
+ if (value5 != NULL)
232
+ self->addField(value5);
233
+ if (value6 != NULL)
234
+ self->addField(value6);
235
+ if (value7 != NULL)
236
+ self->addField(value7);
237
+ if (value8 != NULL)
238
+ self->addField(value8);
239
+ if (value9 != NULL)
240
+ self->addField(value9);
241
+ if (value10 != NULL)
242
+ self->addField(value10);
243
+ return self;
244
+ }
245
+ queryBase* where(const _TCHAR* field, const _TCHAR* op, const _TCHAR* val)
246
+ {
247
+ self->addLogic(field, op, val);
248
+ return self;
249
+ }
250
+ queryBase* And(const _TCHAR* field, const _TCHAR* op, const _TCHAR* val)
251
+ {
252
+ self->addLogic(_T("and") ,field, op, val);
253
+ return self;
254
+ }
255
+ queryBase* Or(const _TCHAR* field, const _TCHAR* op, const _TCHAR* val)
256
+ {
257
+ self->addLogic(_T("or") ,field, op, val);
258
+ return self;
259
+ }
260
+ queryBase* In(const _TCHAR* value1,
261
+ const _TCHAR* value2 = NULL, const _TCHAR* value3 = NULL, const _TCHAR* value4 = NULL,
262
+ const _TCHAR* value5 = NULL, const _TCHAR* value6 = NULL, const _TCHAR* value7 = NULL,
263
+ const _TCHAR* value8 = NULL, const _TCHAR* value9 = NULL, const _TCHAR* value10 = NULL)
264
+ {
265
+ self->addSeekKeyValue(value1, false);
266
+ if (value2 != NULL)
267
+ self->addSeekKeyValue(value2, false);
268
+ if (value3 != NULL)
269
+ self->addSeekKeyValue(value3, false);
270
+ if (value4 != NULL)
271
+ self->addSeekKeyValue(value4, false);
272
+ if (value5 != NULL)
273
+ self->addSeekKeyValue(value5, false);
274
+ if (value6 != NULL)
275
+ self->addSeekKeyValue(value6, false);
276
+ if (value7 != NULL)
277
+ self->addSeekKeyValue(value7, false);
278
+ if (value8 != NULL)
279
+ self->addSeekKeyValue(value8, false);
280
+ if (value9 != NULL)
281
+ self->addSeekKeyValue(value9, false);
282
+ if (value10 != NULL)
283
+ self->addSeekKeyValue(value10, false);
284
+ return self;
285
+ }
286
+ queryBase* addInValue(const _TCHAR* value, bool reset = false)
287
+ {
288
+ self->addSeekKeyValue(value, reset);
289
+ return self;
290
+ }
291
+ };
292
+
293
+
164
294
  /* ===============================================
165
295
  expand some classes
166
296
  * many languages can not use pointer as array so add helper functions.
@@ -134,10 +134,13 @@ add_library(${this_target} SHARED ${${this_target}_SOURCE_FILES})
134
134
  # ==========================================================
135
135
  # add link / include
136
136
  # ==========================================================
137
- transactd_link_boost_libraries("filesystem;system;thread")
137
+ transactd_link_boost_libraries("filesystem;thread;chrono;system")
138
138
  if(APPLE)
139
139
  target_link_libraries(${this_target} iconv)
140
140
  endif()
141
+ if(NOT MSVC)
142
+ target_link_libraries(${this_target} pthread)
143
+ endif()
141
144
 
142
145
 
143
146
  # ==========================================================