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.
- checksums.yaml +4 -4
- data/BUILD_UNIX-JA +46 -67
- data/BUILD_WIN-JA +106 -63
- data/CMakeLists.txt +40 -15
- data/README +219 -75
- data/README-JA +207 -76
- data/README_ORMSRCGEN +118 -0
- data/README_ORMSRCGEN-JA +115 -0
- data/bin/common/tdclc_32_2_0.dll +0 -0
- data/bin/common/tdclc_64_2_0.dll +0 -0
- data/build/common/check_for_link_iconv.cmake +18 -14
- data/build/common/create_symlink.cmake.in +25 -0
- data/build/common/get_boost_libs.cmake +23 -23
- data/build/common/options.cmake +0 -66
- data/build/common/smart_install.cmake +3 -3
- data/build/common/transactd.rc.in +15 -5
- data/build/common/transactd_cl_common.cmake +37 -18
- data/build/common/transactd_cl_output.cmake +55 -13
- data/build/common/transactd_common.cmake +108 -31
- data/build/swig/php/generate.cmake.in +15 -17
- data/build/swig/php/generate.cmd.in +15 -9
- data/build/swig/php/php.swg +124 -82
- data/build/swig/php/transactd.no_yield.php +4494 -0
- data/build/swig/php/transactd.no_yield.php.git.patch +685 -0
- data/build/swig/php/transactd.no_yield.php.patch +685 -0
- data/build/swig/php/transactd.yield.php +4461 -0
- data/build/swig/php/transactd.yield.php.git.patch +652 -0
- data/build/swig/php/transactd.yield.php.patch +652 -0
- data/build/swig/referencecounter.h +79 -0
- data/build/swig/ruby/ruby.swg +226 -76
- data/build/swig/ruby/threadBlockRegionWrapper.h +71 -0
- data/build/swig/ruby/without_gvl.swg +87 -0
- data/build/swig/tdcl.i +659 -170
- data/build/swig/validatablepointer.h +91 -0
- data/build/tdclc/CMakeLists.txt +49 -34
- data/build/tdclc/{tdclc_64.cbproj → tdclc.cbproj} +65 -20
- data/build/tdclc/tdclc.rc +0 -0
- data/build/tdclcpp/CMakeLists.txt +84 -20
- data/build/tdclcpp/tdclcpp.rc +0 -0
- data/build/tdclcpp/{tdclcpp_bcb_64.cbproj → tdclcpp_bc.cbproj} +168 -44
- data/build/tdclrb/CMakeLists.txt +84 -66
- data/build/tdclrb/bldgem/extconf.rb +28 -3
- data/build/tdclrb/gem/helper.rb +11 -1
- data/build/tdclrb/gem_output.cmake +20 -16
- data/index_ja.html +15 -0
- data/source/bzs/db/IBlobBuffer.h +15 -17
- data/source/bzs/db/blobBuffer.h +186 -140
- data/source/bzs/db/blobStructs.h +37 -37
- data/source/bzs/db/engine/mysql/IReadRecords.h +34 -34
- data/source/bzs/db/engine/mysql/bookmark.h +150 -147
- data/source/bzs/db/engine/mysql/database.cpp +1721 -1526
- data/source/bzs/db/engine/mysql/database.h +608 -370
- data/source/bzs/db/engine/mysql/dbManager.cpp +213 -201
- data/source/bzs/db/engine/mysql/dbManager.h +115 -104
- data/source/bzs/db/engine/mysql/errorMessage.cpp +49 -50
- data/source/bzs/db/engine/mysql/errorMessage.h +25 -26
- data/source/bzs/db/engine/mysql/fieldAccess.h +55 -61
- data/source/bzs/db/engine/mysql/mydebuglog.cpp +326 -292
- data/source/bzs/db/engine/mysql/mydebuglog.h +63 -55
- data/source/bzs/db/engine/mysql/mysqlInternal.h +182 -125
- data/source/bzs/db/engine/mysql/mysqlThd.cpp +121 -121
- data/source/bzs/db/engine/mysql/mysqlThd.h +20 -20
- data/source/bzs/db/engine/mysql/percentageKey.h +241 -228
- data/source/bzs/db/protocol/ICommandExecuter.h +18 -17
- data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +543 -514
- data/source/bzs/db/protocol/hs/hsCommandExecuter.h +155 -158
- data/source/bzs/db/protocol/tdap/btrDate.cpp +213 -180
- data/source/bzs/db/protocol/tdap/btrDate.h +39 -37
- data/source/bzs/db/protocol/tdap/client/activeTable.cpp +173 -0
- data/source/bzs/db/protocol/tdap/client/activeTable.h +165 -0
- data/source/bzs/db/protocol/tdap/client/activeTableImple.h +370 -0
- data/source/bzs/db/protocol/tdap/client/bulkInsert.h +13 -23
- data/source/bzs/db/protocol/tdap/client/client.cpp +81 -68
- data/source/bzs/db/protocol/tdap/client/client.h +361 -320
- data/source/bzs/db/protocol/tdap/client/connMgr.cpp +17 -22
- data/source/bzs/db/protocol/tdap/client/connMgr.h +17 -19
- data/source/bzs/db/protocol/tdap/client/connectionPool.cpp +243 -0
- data/source/bzs/db/protocol/tdap/client/connectionPool.h +109 -0
- data/source/bzs/db/protocol/tdap/client/database.cpp +327 -219
- data/source/bzs/db/protocol/tdap/client/database.h +141 -118
- data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +60 -62
- data/source/bzs/db/protocol/tdap/client/databaseManager.h +255 -0
- data/source/bzs/db/protocol/tdap/client/dbDef.cpp +315 -202
- data/source/bzs/db/protocol/tdap/client/dbDef.h +40 -32
- data/source/bzs/db/protocol/tdap/client/dllmain.cpp +390 -371
- data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +148 -56
- data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +149 -57
- data/source/bzs/db/protocol/tdap/client/export.h +35 -0
- data/source/bzs/db/protocol/tdap/client/field.cpp +1985 -0
- data/source/bzs/db/protocol/tdap/client/field.h +393 -0
- data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +14 -14
- data/source/bzs/db/protocol/tdap/client/fieldDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.cpp +123 -0
- data/source/bzs/db/protocol/tdap/client/fieldNameAlias.h +58 -0
- data/source/bzs/db/protocol/tdap/client/fields.h +178 -0
- data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +13 -16
- data/source/bzs/db/protocol/tdap/client/fileDDF.h +11 -17
- data/source/bzs/db/protocol/tdap/client/filter.h +423 -259
- data/source/bzs/db/protocol/tdap/client/groupComp.h +117 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.cpp +818 -0
- data/source/bzs/db/protocol/tdap/client/groupQuery.h +281 -0
- data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +14 -17
- data/source/bzs/db/protocol/tdap/client/indexDDF.h +11 -14
- data/source/bzs/db/protocol/tdap/client/memRecord.cpp +231 -0
- data/source/bzs/db/protocol/tdap/client/memRecord.h +145 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.cpp +448 -0
- data/source/bzs/db/protocol/tdap/client/memRecordset.h +159 -0
- data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +300 -173
- data/source/bzs/db/protocol/tdap/client/nsDatabase.h +53 -36
- data/source/bzs/db/protocol/tdap/client/nsTable.cpp +171 -128
- data/source/bzs/db/protocol/tdap/client/nsTable.h +121 -87
- data/source/bzs/db/protocol/tdap/client/pooledDatabaseManager.h +173 -0
- data/source/bzs/db/protocol/tdap/client/recordset.cpp +209 -0
- data/source/bzs/db/protocol/tdap/client/recordset.h +86 -0
- data/source/bzs/db/protocol/tdap/client/recordsetImple.h +596 -0
- data/source/bzs/db/protocol/tdap/client/request.h +227 -170
- data/source/bzs/db/protocol/tdap/client/serializer.cpp +1288 -0
- data/source/bzs/db/protocol/tdap/client/serializer.h +295 -0
- data/source/bzs/db/protocol/tdap/client/sharedData.cpp +9 -12
- data/source/bzs/db/protocol/tdap/client/sharedData.h +18 -16
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +494 -473
- data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +51 -53
- data/source/bzs/db/protocol/tdap/client/stringConverter.h +214 -148
- data/source/bzs/db/protocol/tdap/client/table.cpp +929 -1665
- data/source/bzs/db/protocol/tdap/client/table.h +413 -87
- data/source/bzs/db/protocol/tdap/client/trdboostapi.h +642 -534
- data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +25 -40
- data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +11 -15
- data/source/bzs/db/protocol/tdap/client/trdormapi.h +378 -437
- data/source/bzs/db/protocol/tdap/client/trnsctcl.def +1 -1
- data/source/bzs/db/protocol/tdap/fieldComp.h +127 -0
- data/source/bzs/db/protocol/tdap/myDateTime.cpp +352 -345
- data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +75 -78
- data/source/bzs/db/protocol/tdap/mysql/characterset.h +18 -19
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +216 -199
- data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +23 -14
- data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +354 -314
- data/source/bzs/db/protocol/tdap/mysql/debuglog.h +57 -47
- data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +905 -739
- data/source/bzs/db/protocol/tdap/mysql/request.h +152 -159
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1044 -879
- data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +87 -81
- data/source/bzs/db/protocol/tdap/tdapRequest.h +162 -130
- data/source/bzs/db/protocol/tdap/tdapSchema.cpp +368 -166
- data/source/bzs/db/protocol/tdap/tdapSchema.h +702 -566
- data/source/bzs/db/protocol/tdap/tdapcapi.h +387 -353
- data/source/bzs/db/transactd/appBuilderImple.h +21 -20
- data/source/bzs/db/transactd/appModule.cpp +350 -98
- data/source/bzs/db/transactd/appModule.h +31 -37
- data/source/bzs/db/transactd/connManager.cpp +138 -135
- data/source/bzs/db/transactd/connManager.h +28 -21
- data/source/bzs/db/transactd/connectionRecord.h +39 -39
- data/source/bzs/db/transactd/transactd.cpp +217 -203
- data/source/bzs/env/boost_bcb_link.h +131 -0
- data/source/bzs/env/compiler.h +136 -79
- data/source/bzs/env/crosscompile.cpp +57 -57
- data/source/bzs/env/crosscompile.h +130 -115
- data/source/bzs/env/fileopen.h +7 -8
- data/source/bzs/env/mbcswchrLinux.cpp +4 -9
- data/source/bzs/env/mbcswchrLinux.h +37 -34
- data/source/bzs/env/tcharMinGW.h +59 -0
- data/source/bzs/env/tstring.h +90 -95
- data/source/bzs/example/changeSchema.cpp +22 -23
- data/source/bzs/example/changeSchema_c.cpp +22 -24
- data/source/bzs/example/connection_pool_c.cpp +49 -104
- data/source/bzs/example/createDatabase.cpp +40 -47
- data/source/bzs/example/createDatabase_c.cpp +38 -43
- data/source/bzs/example/deleteRecords.cpp +10 -15
- data/source/bzs/example/deleteRecords_c.cpp +10 -14
- data/source/bzs/example/dropDatabase.cpp +3 -9
- data/source/bzs/example/dropDatabase_c.cpp +5 -6
- data/source/bzs/example/insertRecords.cpp +37 -29
- data/source/bzs/example/insertRecords_c.cpp +19 -25
- data/source/bzs/example/ormap_c.cpp +621 -0
- data/source/bzs/example/queryData.cpp +371 -0
- data/source/bzs/example/queryData.h +16 -0
- data/source/bzs/example/query_c.cpp +109 -0
- data/source/bzs/example/readRecords.cpp +27 -27
- data/source/bzs/example/readRecords_c.cpp +25 -23
- data/source/bzs/example/updateRecords.cpp +16 -21
- data/source/bzs/example/updateRecords_c.cpp +8 -12
- data/source/bzs/example/update_with_transaction.cpp +21 -24
- data/source/bzs/example/update_with_transaction_c.cpp +12 -15
- data/source/bzs/example/useORMRecord.cpp +177 -0
- data/source/bzs/netsvc/client/tcpClient.cpp +167 -156
- data/source/bzs/netsvc/client/tcpClient.h +541 -489
- data/source/bzs/netsvc/server/IAppModule.h +119 -32
- data/source/bzs/netsvc/server/iserver.h +21 -23
- data/source/bzs/netsvc/server/serverCpt.cpp +421 -391
- data/source/bzs/netsvc/server/serverCpt.h +41 -43
- data/source/bzs/netsvc/server/serverPipe.cpp +580 -565
- data/source/bzs/netsvc/server/serverPipe.h +44 -45
- data/source/bzs/netsvc/server/serverTpool.cpp +333 -303
- data/source/bzs/netsvc/server/serverTpool.h +38 -43
- data/source/bzs/rtl/benchmark.cpp +91 -31
- data/source/bzs/rtl/benchmark.h +76 -22
- data/source/bzs/rtl/datetime.cpp +231 -233
- data/source/bzs/rtl/datetime.h +16 -16
- data/source/bzs/rtl/debuglog.cpp +48 -51
- data/source/bzs/rtl/debuglog.h +55 -44
- data/source/bzs/rtl/exception.h +55 -48
- data/source/bzs/rtl/stl_uty.cpp +27 -28
- data/source/bzs/rtl/stl_uty.h +28 -29
- data/source/bzs/rtl/stringBuffers.cpp +8 -6
- data/source/bzs/rtl/stringBuffers.h +16 -9
- data/source/bzs/rtl/strtrim.cpp +90 -91
- data/source/bzs/rtl/strtrim.h +14 -16
- data/source/bzs/test/tdclatl/bench_query_atl.js +647 -0
- data/source/bzs/test/tdclatl/bench_tdclatl.js +303 -303
- data/source/bzs/test/tdclatl/test_query_atl.js +669 -0
- data/source/bzs/test/tdclphp/bench.php +357 -0
- data/source/bzs/test/tdclphp/transactd_Test.php +907 -303
- data/source/bzs/test/tdclphp/transactd_blob_Test.php +21 -49
- data/source/bzs/test/tdclphp/transactd_datetime_Test.php +41 -75
- data/source/bzs/test/tdclphp/transactd_kanjischema_Test.php +23 -37
- data/source/bzs/test/tdclphp/transactd_pool_Test.php +120 -0
- data/source/bzs/test/tdclrb/bench_tdclcpp.rb +4 -6
- data/source/bzs/test/tdclrb/prepare.rb +15 -12
- data/source/bzs/test/tdclrb/transactd_blob_spec.rb +29 -32
- data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +0 -29
- data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +18 -19
- data/source/bzs/test/tdclrb/transactd_pool_spec.rb +107 -0
- data/source/bzs/test/tdclrb/transactd_spec.rb +734 -142
- data/source/bzs/test/transactdBench/query_bench.cpp +156 -0
- data/source/bzs/test/transactdBench/scaling_bench.cpp +265 -0
- data/source/bzs/test/transactdBench/transactdBench.cpp +107 -83
- data/source/bzs/test/transactdBench/transactdBench2.cpp +122 -83
- data/source/bzs/test/transactdBench/workerBase.cpp +5 -0
- data/source/bzs/test/transactdBench/workerBase.h +88 -0
- data/source/bzs/test/transactdBench/workerMySQLImple.h +333 -0
- data/source/bzs/test/transactdBench/workerTransactdImple.h +201 -0
- data/source/bzs/test/trdclengn/test_blob.cpp +121 -73
- data/source/bzs/test/trdclengn/test_trdclengn.cpp +1244 -426
- data/source/global/ormsrcgen/confParam.h +80 -0
- data/source/global/ormsrcgen/fieldName.cpp +77 -0
- data/source/global/ormsrcgen/fieldName.h +43 -0
- data/source/global/ormsrcgen/main.cpp +196 -0
- data/source/global/ormsrcgen/srcgen.cpp +763 -0
- data/source/global/ormsrcgen/srcgen.h +72 -0
- data/source/global/ormsrcgen/template/fieldNameList_sample.txt +2 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.cpp +48 -0
- data/source/global/ormsrcgen/template/ormDataClass_template.h +34 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.cpp +51 -0
- data/source/global/ormsrcgen/template/ormMapClass_template.h +62 -0
- data/source/global/ormsrcgen/template/template.cnf +38 -0
- data/source/global/querystmts/querystmts.cpp +237 -0
- data/source/global/tdclatl/ConnectParams.cpp +77 -0
- data/source/global/tdclatl/ConnectParams.h +70 -0
- data/source/global/tdclatl/Database.cpp +132 -128
- data/source/global/tdclatl/Database.h +60 -49
- data/source/global/tdclatl/DbDef.cpp +68 -64
- data/source/global/tdclatl/DbDef.h +36 -36
- data/source/global/tdclatl/Field.cpp +12 -17
- data/source/global/tdclatl/Field.h +15 -12
- data/source/global/tdclatl/FieldDef.cpp +75 -36
- data/source/global/tdclatl/FieldDef.h +38 -19
- data/source/global/tdclatl/FieldDefs.cpp +74 -0
- data/source/global/tdclatl/FieldDefs.h +56 -0
- data/source/global/tdclatl/FieldNames.cpp +99 -0
- data/source/global/tdclatl/FieldNames.h +66 -0
- data/source/global/tdclatl/Flags.cpp +75 -37
- data/source/global/tdclatl/Flags.h +13 -12
- data/source/global/tdclatl/GroupQuery.cpp +119 -0
- data/source/global/tdclatl/GroupQuery.h +65 -0
- data/source/global/tdclatl/KeyDef.cpp +15 -14
- data/source/global/tdclatl/KeyDef.h +20 -17
- data/source/global/tdclatl/KeySegment.cpp +13 -12
- data/source/global/tdclatl/PooledDbManager.cpp +223 -0
- data/source/global/tdclatl/PooledDbManager.h +76 -0
- data/source/global/tdclatl/QueryBase.cpp +206 -127
- data/source/global/tdclatl/QueryBase.h +55 -59
- data/source/global/tdclatl/Record.cpp +214 -0
- data/source/global/tdclatl/Record.h +96 -0
- data/source/global/tdclatl/Recordset.cpp +278 -0
- data/source/global/tdclatl/Recordset.h +83 -0
- data/source/global/tdclatl/RecordsetQuery.cpp +118 -0
- data/source/global/tdclatl/RecordsetQuery.h +126 -0
- data/source/global/tdclatl/Table.cpp +57 -60
- data/source/global/tdclatl/Table.h +32 -29
- data/source/global/tdclatl/TableDef.cpp +63 -62
- data/source/global/tdclatl/TableDef.h +20 -22
- data/source/global/tdclatl/TdVersion.cpp +3 -3
- data/source/global/tdclatl/TdVersion.h +15 -11
- data/source/global/tdclatl/_IDatabaseEvents_CP.h +99 -92
- data/source/global/tdclatl/activeTable.cpp +355 -0
- data/source/global/tdclatl/activeTable.h +79 -0
- data/source/global/tdclatl/dllmain.cpp +4 -3
- data/source/global/tdclatl/dllmain.h +7 -6
- data/source/global/tdclatl/keySegment.h +22 -18
- data/source/global/tdclatl/resource.h +0 -0
- data/source/global/tdclatl/stdafx.h +6 -4
- data/source/global/tdclatl/targetver.h +0 -1
- data/source/global/tdclatl/tdclatl.cpp +10 -5
- data/source/global/tdclatl/tdclatl.idl +530 -14
- data/source/linux/charsetConvert.h +78 -79
- data/source/linux/linuxTypes.h +9 -12
- data/source/linux/tchar.h +168 -166
- data/transactd.gemspec +24 -16
- metadata +98 -12
- data/bin/common/tdclc_32_1_2.dll +0 -0
- data/bin/common/tdclc_64_1_2.dll +0 -0
- data/build/tdclc/tdclc_32.cbproj +0 -173
- data/build/tdclcpp/tdclcpp_bcb_32.cbproj +0 -232
- data/build/tdclrb/GEM_VERSION +0 -3
- data/source/bzs/db/protocol/tdap/client/filter.cpp +0 -43
- data/source/bzs/example/useORM.cpp +0 -585
data/source/bzs/rtl/datetime.cpp
CHANGED
|
@@ -12,13 +12,10 @@
|
|
|
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
|
-
#include <bzs/env/tstring.h>
|
|
20
|
-
#pragma hdrstop
|
|
21
|
-
|
|
22
19
|
#include "datetime.h"
|
|
23
20
|
#include <string.h>
|
|
24
21
|
#include <stdio.h>
|
|
@@ -27,53 +24,53 @@
|
|
|
27
24
|
#include <bzs/env/crosscompile.h>
|
|
28
25
|
#ifdef LINUX
|
|
29
26
|
#include <wchar.h>
|
|
27
|
+
#if __clang__
|
|
28
|
+
#include <pthread.h>
|
|
29
|
+
#endif
|
|
30
30
|
#endif
|
|
31
31
|
|
|
32
|
-
#pragma package(smart_init)
|
|
33
|
-
#pragma warning(disable:4996)
|
|
32
|
+
#pragma package(smart_init) // BCB package
|
|
33
|
+
#pragma warning(disable : 4996) // VC++ unsafe function
|
|
34
34
|
|
|
35
35
|
#undef USETLS
|
|
36
|
-
#if ((defined(_WIN32) && _MSC_VER) || __APPLE__)
|
|
36
|
+
#if ((defined(_WIN32) && _MSC_VER) || (__APPLE__ && !defined(__BCPLUSPLUS__)))
|
|
37
37
|
#define USETLS
|
|
38
38
|
#endif
|
|
39
39
|
|
|
40
40
|
#ifdef USETLS
|
|
41
|
-
|
|
41
|
+
extern tls_key g_tlsiID_SC3;
|
|
42
42
|
#else
|
|
43
|
-
|
|
43
|
+
__THREAD _TCHAR __THREAD_BCB g_date[30];
|
|
44
44
|
#endif
|
|
45
45
|
|
|
46
46
|
inline _TCHAR* databuf()
|
|
47
47
|
{
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
48
|
+
#ifdef USETLS
|
|
49
|
+
_TCHAR* p = (_TCHAR*)tls_getspecific(g_tlsiID_SC3);
|
|
50
|
+
if (p == NULL)
|
|
51
|
+
{
|
|
52
|
+
p = (_TCHAR*)new wchar_t[45];
|
|
53
|
+
tls_setspecific(g_tlsiID_SC3, p);
|
|
54
|
+
}
|
|
55
|
+
return p;
|
|
56
|
+
#else
|
|
57
|
+
return g_date;
|
|
58
|
+
#endif
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
|
|
62
61
|
namespace bzs
|
|
63
62
|
{
|
|
64
63
|
namespace rtl
|
|
65
64
|
{
|
|
66
65
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
int GetDate(const _TCHAR* NowDate)
|
|
66
|
+
int GetDate(const _TCHAR* NowDate)
|
|
70
67
|
{
|
|
71
68
|
int ret;
|
|
72
|
-
ret = _ttol(NowDate+8);
|
|
69
|
+
ret = _ttol(NowDate + 8);
|
|
73
70
|
return ret;
|
|
74
71
|
}
|
|
75
72
|
|
|
76
|
-
int
|
|
73
|
+
int GetYear(const _TCHAR* NowDate, bool PrevMonth)
|
|
77
74
|
{
|
|
78
75
|
int ret;
|
|
79
76
|
ret = _ttol(NowDate);
|
|
@@ -82,10 +79,10 @@ int GetYear(const _TCHAR* NowDate, bool PrevMonth)
|
|
|
82
79
|
return ret;
|
|
83
80
|
}
|
|
84
81
|
|
|
85
|
-
int
|
|
82
|
+
int GetMonth(const _TCHAR* NowDate, bool PrevMonth)
|
|
86
83
|
{
|
|
87
84
|
int ret;
|
|
88
|
-
ret = _ttol(NowDate+5);
|
|
85
|
+
ret = _ttol(NowDate + 5);
|
|
89
86
|
if (PrevMonth)
|
|
90
87
|
ret--;
|
|
91
88
|
if (ret == 0)
|
|
@@ -94,7 +91,7 @@ int GetMonth(const _TCHAR* NowDate, bool PrevMonth)
|
|
|
94
91
|
return ret;
|
|
95
92
|
}
|
|
96
93
|
|
|
97
|
-
bool
|
|
94
|
+
bool IsUrudosi(int Year)
|
|
98
95
|
{
|
|
99
96
|
if ((Year % 4) == 0)
|
|
100
97
|
{
|
|
@@ -108,278 +105,279 @@ bool IsUrudosi(int Year)
|
|
|
108
105
|
return false;
|
|
109
106
|
}
|
|
110
107
|
|
|
111
|
-
bool GetDatefromYearSerialDays(int year, int Days, _TCHAR* date,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
108
|
+
bool GetDatefromYearSerialDays(int year, int Days, _TCHAR* date,
|
|
109
|
+
bool nextYearRight)
|
|
110
|
+
{
|
|
111
|
+
// The date of the day counted from the beginning of the year is returned.
|
|
112
|
+
// if orver the year then return false.
|
|
115
113
|
|
|
116
114
|
int mm;
|
|
117
115
|
int dd = Days;
|
|
118
|
-
for (mm=1; mm < 14;mm++)
|
|
116
|
+
for (mm = 1; mm < 14; mm++)
|
|
119
117
|
{
|
|
120
118
|
switch (mm)
|
|
121
119
|
{
|
|
122
120
|
case 2:
|
|
123
|
-
if(IsUrudosi(year))
|
|
124
|
-
Days-=29;
|
|
121
|
+
if (IsUrudosi(year))
|
|
122
|
+
Days -= 29;
|
|
125
123
|
else
|
|
126
|
-
Days-=28;
|
|
124
|
+
Days -= 28;
|
|
127
125
|
break;
|
|
128
126
|
case 4:
|
|
129
127
|
case 6:
|
|
130
128
|
case 9:
|
|
131
129
|
case 11:
|
|
132
|
-
Days-=30;
|
|
130
|
+
Days -= 30;
|
|
131
|
+
break;
|
|
133
132
|
default:
|
|
134
|
-
Days-=31;
|
|
133
|
+
Days -= 31;
|
|
135
134
|
}
|
|
136
135
|
if (Days <= 0)
|
|
137
136
|
break;
|
|
138
|
-
dd=Days;
|
|
137
|
+
dd = Days;
|
|
139
138
|
}
|
|
140
|
-
bool ret= true;
|
|
141
|
-
if ((dd>31)|| (mm==13))
|
|
139
|
+
bool ret = true;
|
|
140
|
+
if ((dd > 31) || (mm == 13))
|
|
142
141
|
{
|
|
143
142
|
if (nextYearRight)
|
|
144
143
|
{
|
|
145
144
|
year += 1;
|
|
146
145
|
mm = 1;
|
|
147
|
-
}
|
|
148
|
-
|
|
146
|
+
}
|
|
147
|
+
else
|
|
148
|
+
{ // for old program
|
|
149
149
|
dd = 31;
|
|
150
150
|
mm--;
|
|
151
151
|
}
|
|
152
|
-
ret= false;
|
|
152
|
+
ret = false;
|
|
153
153
|
}
|
|
154
|
-
_stprintf(date,_T("%04d/%02d/%02d"), year,mm,dd);
|
|
154
|
+
_stprintf(date, _T("%04d/%02d/%02d"), year, mm, dd);
|
|
155
155
|
return ret;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
//---------------------------------------------------------------------------
|
|
159
159
|
int JDate2NumOLD(const _TCHAR* date)
|
|
160
|
-
{//1900/01/01 = 2415021
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
160
|
+
{ // 1900/01/01 = 2415021
|
|
161
|
+
int yy = GetYear(date, false);
|
|
162
|
+
int mm = GetMonth(date, false);
|
|
163
|
+
int dd = GetDate(date);
|
|
164
|
+
int i;
|
|
165
|
+
|
|
166
|
+
// The number of leap years
|
|
167
|
+
int n = 2415020;
|
|
168
|
+
for (i = 1900; i < yy; i += 4)
|
|
169
|
+
{
|
|
170
|
+
if (IsUrudosi(i))
|
|
171
|
+
n += 1;
|
|
172
|
+
}
|
|
173
|
+
n += (yy - 1900) * 365;
|
|
174
|
+
for (i = 1; i < mm; i++)
|
|
175
|
+
{
|
|
176
|
+
switch (i)
|
|
177
|
+
{
|
|
178
|
+
case 2:
|
|
179
|
+
if (IsUrudosi(yy))
|
|
180
|
+
n += 29;
|
|
181
|
+
else
|
|
182
|
+
n += 28;
|
|
183
|
+
break;
|
|
184
|
+
case 4:
|
|
185
|
+
case 6:
|
|
186
|
+
case 9:
|
|
187
|
+
case 11:
|
|
188
|
+
n += 30;
|
|
189
|
+
break;
|
|
190
|
+
default:
|
|
191
|
+
n += 31;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
n += dd;
|
|
195
|
+
return n;
|
|
196
196
|
}
|
|
197
197
|
#ifdef _WIN32
|
|
198
198
|
//---------------------------------------------------------------------------
|
|
199
199
|
int JDate2Num(const _NTCHAR* date)
|
|
200
200
|
{
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
201
|
+
#ifdef _UNICODE
|
|
202
|
+
wchar_t buf[20];
|
|
203
|
+
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, date, -1, buf, 20);
|
|
204
|
+
#else
|
|
205
|
+
char buf[20];
|
|
206
|
+
wtoa(buf, date, 20);
|
|
207
|
+
#endif
|
|
208
208
|
return JDate2Num(buf);
|
|
209
209
|
}
|
|
210
210
|
#endif
|
|
211
211
|
//---------------------------------------------------------------------------
|
|
212
212
|
int JDate2Num(const _TCHAR* date)
|
|
213
|
-
{//1980/01/01 = 2444240
|
|
214
|
-
|
|
213
|
+
{ // 1980/01/01 = 2444240
|
|
214
|
+
int yy = GetYear(date, false);
|
|
215
215
|
if (yy < 1980)
|
|
216
216
|
return JDate2NumOLD(date);
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
218
|
+
int mm = GetMonth(date, false);
|
|
219
|
+
int dd = GetDate(date);
|
|
220
|
+
int i;
|
|
222
221
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
222
|
+
// The number of leap years
|
|
223
|
+
int n = 2444239;
|
|
224
|
+
for (i = 1980; i < yy; i += 4)
|
|
225
|
+
{
|
|
226
|
+
if (IsUrudosi(i))
|
|
227
|
+
n += 1;
|
|
228
|
+
}
|
|
229
|
+
n += (yy - 1980) * 365;
|
|
230
|
+
for (i = 1; i < mm; i++)
|
|
231
|
+
{
|
|
232
|
+
switch (i)
|
|
233
|
+
{
|
|
234
|
+
case 2:
|
|
235
|
+
if (IsUrudosi(yy))
|
|
236
|
+
n += 29;
|
|
237
|
+
else
|
|
238
|
+
n += 28;
|
|
239
|
+
break;
|
|
240
|
+
case 4:
|
|
241
|
+
case 6:
|
|
242
|
+
case 9:
|
|
243
|
+
case 11:
|
|
244
|
+
n += 30;
|
|
245
|
+
break;
|
|
246
|
+
default:
|
|
247
|
+
n += 31;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
n += dd;
|
|
251
|
+
return n;
|
|
253
252
|
}
|
|
254
253
|
//---------------------------------------------------------------------------
|
|
255
254
|
_TCHAR* JNum2DateOLD(int n)
|
|
256
|
-
{//1900/01/01 = 2415021
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
255
|
+
{ // 1900/01/01 = 2415021
|
|
256
|
+
bool uru = false;
|
|
257
|
+
if (n < 2415021)
|
|
258
|
+
return NULL;
|
|
259
|
+
|
|
260
|
+
int yy = 1900;
|
|
261
|
+
n -= 2415020;
|
|
262
|
+
while (1)
|
|
263
|
+
{
|
|
264
|
+
if (uru)
|
|
265
|
+
{
|
|
266
|
+
if (n <= 366)
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
else
|
|
270
|
+
{
|
|
271
|
+
if (n <= 365)
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
if (uru)
|
|
275
|
+
n -= 366;
|
|
276
|
+
else
|
|
277
|
+
n -= 365;
|
|
278
|
+
yy++;
|
|
279
|
+
uru = IsUrudosi(yy);
|
|
280
|
+
}
|
|
281
|
+
GetDatefromYearSerialDays(yy, n, databuf());
|
|
282
|
+
return databuf();
|
|
284
283
|
}
|
|
285
284
|
|
|
286
285
|
//---------------------------------------------------------------------------
|
|
287
286
|
const _TCHAR* JNum2Date(int n)
|
|
288
|
-
{//1980/01/01 = 2444240
|
|
289
|
-
|
|
290
|
-
|
|
287
|
+
{ // 1980/01/01 = 2444240
|
|
288
|
+
bool uru = true;
|
|
289
|
+
if (n < 2444240)
|
|
291
290
|
return JNum2DateOLD(n);
|
|
292
291
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
292
|
+
int yy = 1980;
|
|
293
|
+
n -= 2444239;
|
|
294
|
+
while (1)
|
|
295
|
+
{
|
|
296
|
+
if (uru)
|
|
297
|
+
{
|
|
298
|
+
if (n <= 366)
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
else
|
|
302
|
+
{
|
|
303
|
+
if (n <= 365)
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
if (uru)
|
|
307
|
+
n -= 366;
|
|
308
|
+
else
|
|
309
|
+
n -= 365;
|
|
310
|
+
yy++;
|
|
311
|
+
uru = IsUrudosi(yy);
|
|
312
|
+
}
|
|
313
|
+
GetDatefromYearSerialDays(yy, n, databuf());
|
|
314
|
+
return databuf();
|
|
316
315
|
}
|
|
317
316
|
|
|
318
317
|
//---------------------------------------------------------------------------
|
|
319
318
|
long StrToLongDate(_TCHAR* strdat)
|
|
320
|
-
{
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
319
|
+
{ // Conver string date to long. ex : 20011231
|
|
320
|
+
_TCHAR buf[9];
|
|
321
|
+
_tcsncpy(buf, strdat, 4);
|
|
322
|
+
_tcsncpy(buf + 4, strdat + 5, 2);
|
|
323
|
+
_tcsncpy(buf + 6, strdat + 8, 2);
|
|
324
|
+
buf[8] = 0x00;
|
|
325
|
+
return _ttol(buf);
|
|
327
326
|
}
|
|
328
327
|
//---------------------------------------------------------------------------
|
|
329
|
-
_TCHAR* LongToStrDate(long ldat
|
|
330
|
-
{ //Conver long date to string date�B
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
328
|
+
_TCHAR* LongToStrDate(long ldat, _TCHAR* strdat)
|
|
329
|
+
{ // Conver long date to string date�B
|
|
330
|
+
// No check long date is valid.
|
|
331
|
+
_TCHAR buf[11];
|
|
332
|
+
if (ldat == 0)
|
|
333
|
+
_tcscpy(strdat, _T("0000/00/00"));
|
|
334
|
+
else
|
|
335
|
+
{
|
|
336
|
+
_stprintf_s(buf, 11, _T("%08ld"), ldat);
|
|
337
|
+
|
|
338
|
+
_tcsncpy(strdat, buf, 4);
|
|
339
|
+
strdat[4] = '/';
|
|
340
|
+
_tcsncpy(strdat + 5, buf + 4, 2);
|
|
341
|
+
strdat[7] = '/';
|
|
342
|
+
_tcsncpy(strdat + 8, buf + 6, 2);
|
|
343
|
+
strdat[10] = 0x00;
|
|
344
|
+
}
|
|
345
|
+
return strdat;
|
|
347
346
|
}
|
|
348
347
|
//---------------------------------------------------------------------------
|
|
349
|
-
_TCHAR* LongToStrTime(long ltime
|
|
350
|
-
{ //Conver long time to string time�B
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
348
|
+
_TCHAR* LongToStrTime(long ltime, _TCHAR* strdat)
|
|
349
|
+
{ // Conver long time to string time�B
|
|
350
|
+
// No check long time is valid.
|
|
351
|
+
_TCHAR buf[9];
|
|
352
|
+
_stprintf_s(buf, 9, _T("%ld"), ltime);
|
|
353
|
+
_tcsncpy(strdat, buf, 2);
|
|
354
|
+
strdat[2] = ':';
|
|
355
|
+
_tcsncpy(strdat + 3, buf + 2, 2);
|
|
356
|
+
strdat[5] = ':';
|
|
357
|
+
_tcsncpy(strdat + 6, buf + 4, 2);
|
|
358
|
+
strdat[8] = 0x00;
|
|
359
|
+
return strdat;
|
|
361
360
|
}
|
|
362
361
|
//---------------------------------------------------------------------------
|
|
363
362
|
const char* dateTimeStr(char* buf, unsigned int bufsize)
|
|
364
363
|
{
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
364
|
+
struct tm* date;
|
|
365
|
+
time_t now;
|
|
366
|
+
time(&now);
|
|
368
367
|
#ifdef __MINGW32__
|
|
369
|
-
|
|
368
|
+
date = localtime(&now);
|
|
370
369
|
#else
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
#endif
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
370
|
+
struct tm tmp;
|
|
371
|
+
date = &tmp;
|
|
372
|
+
localtime_x(date, &now);
|
|
373
|
+
#endif
|
|
374
|
+
sprintf_s(buf, bufsize, "%04d/%02d/%02d %02d:%02d:%02d",
|
|
375
|
+
date->tm_year + 1900, date->tm_mon + 1, date->tm_mday,
|
|
376
|
+
date->tm_hour, date->tm_min, date->tm_sec);
|
|
377
|
+
return buf;
|
|
379
378
|
}
|
|
380
379
|
|
|
380
|
+
} // namespace rtl
|
|
381
|
+
} // namespace bzs
|
|
381
382
|
|
|
382
|
-
|
|
383
|
-
}//namespace bzs
|
|
384
|
-
|
|
385
|
-
#pragma warning(default:4996)
|
|
383
|
+
#pragma warning(default : 4996)
|
data/source/bzs/rtl/datetime.h
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
GNU General Public License for more details.
|
|
15
15
|
|
|
16
16
|
You should have received a copy of the GNU General Public License
|
|
17
|
-
along with this program; if not, write to the Free Software
|
|
18
|
-
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
17
|
+
along with this program; if not, write to the Free Software
|
|
18
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
19
19
|
02111-1307, USA.
|
|
20
20
|
=================================================================*/
|
|
21
21
|
|
|
@@ -27,27 +27,27 @@ namespace bzs
|
|
|
27
27
|
namespace rtl
|
|
28
28
|
{
|
|
29
29
|
//---------------------------------------------------------------------------
|
|
30
|
-
PACKAGE int
|
|
31
|
-
PACKAGE int
|
|
32
|
-
PACKAGE int
|
|
33
|
-
PACKAGE bool
|
|
34
|
-
PACKAGE bool
|
|
35
|
-
|
|
30
|
+
PACKAGE int GetYear(const _TCHAR* NowDate, bool PrevMonth);
|
|
31
|
+
PACKAGE int GetMonth(const _TCHAR* NowDate, bool PrevMonth);
|
|
32
|
+
PACKAGE int GetDate(const _TCHAR* NowDate);
|
|
33
|
+
PACKAGE bool IsUrudosi(int Year);
|
|
34
|
+
PACKAGE bool GetDatefromYearSerialDays(int year, int Days, _TCHAR* date,
|
|
35
|
+
bool nextYearRight = false);
|
|
36
36
|
|
|
37
|
-
PACKAGE int
|
|
37
|
+
PACKAGE int JDate2Num(const _TCHAR* date);
|
|
38
38
|
|
|
39
39
|
#ifdef _WIN32
|
|
40
|
-
PACKAGE int
|
|
40
|
+
PACKAGE int JDate2Num(const _NTCHAR* date);
|
|
41
41
|
#endif
|
|
42
42
|
|
|
43
43
|
PACKAGE const _TCHAR* JNum2Date(int ldate);
|
|
44
44
|
|
|
45
|
-
PACKAGE long
|
|
46
|
-
PACKAGE _TCHAR* LongToStrDate(long
|
|
47
|
-
PACKAGE _TCHAR* LongToStrTime(long
|
|
45
|
+
PACKAGE long StrToLongDate(_TCHAR* pStrDate);
|
|
46
|
+
PACKAGE _TCHAR* LongToStrDate(long, _TCHAR*);
|
|
47
|
+
PACKAGE _TCHAR* LongToStrTime(long, _TCHAR*);
|
|
48
48
|
PACKAGE const char* dateTimeStr(char* buf, unsigned int bufsize);
|
|
49
49
|
|
|
50
|
-
}//namespace rtl
|
|
51
|
-
}//namespace bzs
|
|
50
|
+
} // namespace rtl
|
|
51
|
+
} // namespace bzs
|
|
52
52
|
|
|
53
|
-
#endif//BZS_RT_DATETIME_H
|
|
53
|
+
#endif // BZS_RT_DATETIME_H
|