summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2023-03-11 18:15:37 +0100
committerJörg Frings-Fürst <debian@jff-webhosting.net>2023-03-11 18:15:37 +0100
commitdd70ff8bf32c2d7ed365004b1770058265db1978 (patch)
tree084788d142d86c4dc38f5c48606523b4040596e6
parent517ad9d4b6eae320b708d03a9340a22893b0cab7 (diff)
New upstream version 4.1.0upstream/4.1.0
-rwxr-xr-xNEWS20
-rwxr-xr-xREADME2
-rwxr-xr-xbuild/borland5.5/CMakeLists.txt98
-rwxr-xr-xbuild/cmake/copymake6
-rwxr-xr-xbuild/debian/CMakeLists.txt (renamed from build/cmake/CMakeLists.txt)98
-rw-r--r--build/debian/README.debian23
-rwxr-xr-xbuild/linux32/CMakeLists.txt98
-rwxr-xr-xbuild/linux64/CMakeLists.txt98
-rwxr-xr-xbuild/mac64/CMakeLists.txt98
-rwxr-xr-xbuild/win32vs/CMakeLists.txt98
-rwxr-xr-xbuild/win64vs/CMakeLists.txt98
-rw-r--r--docs/doxygen/html/classxb_1_1xbDate.html140
-rw-r--r--docs/doxygen/html/classxb_1_1xbDbf.html339
-rw-r--r--docs/doxygen/html/classxb_1_1xbFile.html232
-rw-r--r--docs/doxygen/html/classxb_1_1xbSsv.html140
-rw-r--r--docs/doxygen/html/classxb_1_1xbString.html49
-rw-r--r--docs/doxygen/html/classxb_1_1xbTblMgr.html160
-rw-r--r--docs/doxygen/html/classxb_1_1xbXBase.html256
-rw-r--r--docs/doxygen/html/dir_25b94c3afce00ed38231227d8141f932.html8
-rw-r--r--docs/doxygen/html/dir_313caf1132e152dd9b58bea13a4052ca.html8
-rw-r--r--docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html2
-rw-r--r--docs/doxygen/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html4
-rw-r--r--docs/doxygen/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html4
-rw-r--r--docs/doxygen/html/dir_d93a1d4020dea85bb71b237545b5e722.html4
-rw-r--r--docs/doxygen/html/dir_e931c1a3f0014e624d0645a271726ad2.html6
-rw-r--r--docs/doxygen/html/files.html175
-rw-r--r--docs/doxygen/html/functions.html2
-rw-r--r--docs/doxygen/html/functions_func.html2
-rw-r--r--docs/doxygen/html/functions_func_g.html15
-rw-r--r--docs/doxygen/html/functions_func_p.html2
-rw-r--r--docs/doxygen/html/functions_func_s.html4
-rw-r--r--docs/doxygen/html/functions_g.html15
-rw-r--r--docs/doxygen/html/functions_p.html5
-rw-r--r--docs/doxygen/html/functions_s.html4
-rw-r--r--docs/doxygen/html/functions_vars.html1
-rw-r--r--docs/doxygen/html/globals.html14
-rw-r--r--docs/doxygen/html/globals_defs.html3
-rw-r--r--docs/doxygen/html/globals_func.html9
-rw-r--r--docs/doxygen/html/globals_vars.html2
-rw-r--r--docs/doxygen/html/menudata.js2
-rw-r--r--docs/doxygen/html/search/all_0.js2
-rw-r--r--docs/doxygen/html/search/all_10.js12
-rw-r--r--docs/doxygen/html/search/all_15.js430
-rw-r--r--docs/doxygen/html/search/all_6.js119
-rw-r--r--docs/doxygen/html/search/all_b.js6
-rw-r--r--docs/doxygen/html/search/all_e.js28
-rw-r--r--docs/doxygen/html/search/defines_3.js163
-rw-r--r--docs/doxygen/html/search/files_1.js165
-rw-r--r--docs/doxygen/html/search/functions_0.js2
-rw-r--r--docs/doxygen/html/search/functions_10.js12
-rw-r--r--docs/doxygen/html/search/functions_6.js119
-rw-r--r--docs/doxygen/html/search/functions_b.js2
-rw-r--r--docs/doxygen/html/search/functions_e.js23
-rw-r--r--docs/doxygen/html/search/searchdata.js2
-rw-r--r--docs/doxygen/html/search/variables_3.js6
-rw-r--r--docs/doxygen/html/search/variables_4.js7
-rw-r--r--docs/doxygen/html/search/variables_5.js5
-rw-r--r--docs/doxygen/html/search/variables_6.js4
-rw-r--r--docs/doxygen/html/search/variables_7.js5
-rw-r--r--docs/doxygen/html/search/variables_8.js9
-rw-r--r--docs/doxygen/html/search/variables_9.html37
-rw-r--r--docs/doxygen/html/search/variables_9.js8
-rw-r--r--docs/doxygen/html/structxb_1_1xbSchema.html2
-rw-r--r--docs/doxygen/html/structxb_1_1xbTblList.html18
-rw-r--r--docs/doxygen/html/tstfuncs_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__cfg__check_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__copydbf_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__dbfutil_8cpp.html56
-rw-r--r--docs/doxygen/html/xb__deletall_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__dumpdbt_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__dumphdr_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__dumpix_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__dumprecs_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__ex__date_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__ex__expression_8cpp.html168
-rw-r--r--docs/doxygen/html/xb__ex__sql_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__ex__ssv_8cpp.html117
-rw-r--r--docs/doxygen/html/xb__ex__string_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__ex__v3__create__dbf_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__ex__v3__upd__dbf_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__ex__v4__create__dbf_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__ex__v4__upd__dbf_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__execsql_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__pack_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__tblinfo_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__test__bcd_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__blockread_8cpp.html147
-rw-r--r--docs/doxygen/html/xb__test__blockread__save_8cpp.html147
-rw-r--r--docs/doxygen/html/xb__test__date_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__dbf__v3__memos_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__dbf__v3__nomemos_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__dbf__v4__memos_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__dbf__v4__nomemos_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__expnode_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__expression_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__file_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__filter_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__funcs_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__linklist_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__lock2_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__lock_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__log_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__mdx_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__ndx_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__sql_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__string_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__tblmgr_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__uda_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__test__xbase_8cpp.html2
-rw-r--r--docs/doxygen/html/xb__undelall_8cpp.html54
-rw-r--r--docs/doxygen/html/xb__zap_8cpp.html2
-rw-r--r--docs/doxygen/html/xbalttbl_8cpp.html2
-rw-r--r--docs/doxygen/html/xbase_8h.html3
-rw-r--r--docs/doxygen/html/xbase_8h_source.html98
-rw-r--r--docs/doxygen/html/xbbcd_8cpp.html2
-rw-r--r--docs/doxygen/html/xbbcd_8h.html2
-rw-r--r--docs/doxygen/html/xbbcd_8h_source.html2
-rw-r--r--docs/doxygen/html/xbblkread_8h.html89
-rw-r--r--docs/doxygen/html/xbblkread_8h_source.html145
-rw-r--r--docs/doxygen/html/xbblockread_8cpp.html80
-rw-r--r--docs/doxygen/html/xbcrix_8cpp.html2
-rw-r--r--docs/doxygen/html/xbcrtbl_8cpp.html2
-rw-r--r--docs/doxygen/html/xbcrtbl_8save_8cpp.html80
-rw-r--r--docs/doxygen/html/xbdate_8cpp.html2
-rw-r--r--docs/doxygen/html/xbdate_8h.html2
-rw-r--r--docs/doxygen/html/xbdate_8h_source.html59
-rw-r--r--docs/doxygen/html/xbdbf3_8cpp.html2
-rw-r--r--docs/doxygen/html/xbdbf4_8cpp.html2
-rw-r--r--docs/doxygen/html/xbdbf_8cpp.html2
-rw-r--r--docs/doxygen/html/xbdbf_8h.html2
-rw-r--r--docs/doxygen/html/xbdbf_8h_source.html724
-rw-r--r--docs/doxygen/html/xbdelete_8cpp.html2
-rw-r--r--docs/doxygen/html/xbdrpix_8cpp.html2
-rw-r--r--docs/doxygen/html/xbdrptbl_8cpp.html2
-rw-r--r--docs/doxygen/html/xbexp_8cpp.html2
-rw-r--r--docs/doxygen/html/xbexp_8h.html2
-rw-r--r--docs/doxygen/html/xbexp_8h_source.html2
-rw-r--r--docs/doxygen/html/xbexpnode_8cpp.html2
-rw-r--r--docs/doxygen/html/xbexpnode_8h.html2
-rw-r--r--docs/doxygen/html/xbexpnode_8h_source.html2
-rw-r--r--docs/doxygen/html/xbfields_8cpp.html2
-rw-r--r--docs/doxygen/html/xbfile_8cpp.html2
-rw-r--r--docs/doxygen/html/xbfile_8h.html2
-rw-r--r--docs/doxygen/html/xbfile_8h_source.html244
-rw-r--r--docs/doxygen/html/xbfilter_8cpp.html2
-rw-r--r--docs/doxygen/html/xbfilter_8h.html2
-rw-r--r--docs/doxygen/html/xbfilter_8h_source.html29
-rw-r--r--docs/doxygen/html/xbfuncs_8cpp.html2
-rw-r--r--docs/doxygen/html/xbindex_8h.html2
-rw-r--r--docs/doxygen/html/xbindex_8h_source.html2
-rw-r--r--docs/doxygen/html/xbinsert_8cpp.html2
-rw-r--r--docs/doxygen/html/xbixbase_8cpp.html2
-rw-r--r--docs/doxygen/html/xbixmdx_8cpp.html2
-rw-r--r--docs/doxygen/html/xbixndx_8cpp.html2
-rw-r--r--docs/doxygen/html/xblnklst_8h.html2
-rw-r--r--docs/doxygen/html/xblnklst_8h_source.html4
-rw-r--r--docs/doxygen/html/xblnklstord_8h.html2
-rw-r--r--docs/doxygen/html/xblnklstord_8h_source.html4
-rw-r--r--docs/doxygen/html/xblnknod_8h.html2
-rw-r--r--docs/doxygen/html/xblnknod_8h_source.html2
-rw-r--r--docs/doxygen/html/xblog_8cpp.html2
-rw-r--r--docs/doxygen/html/xblog_8h.html2
-rw-r--r--docs/doxygen/html/xblog_8h_source.html2
-rw-r--r--docs/doxygen/html/xbmemo3_8cpp.html2
-rw-r--r--docs/doxygen/html/xbmemo4_8cpp.html2
-rw-r--r--docs/doxygen/html/xbmemo_8cpp.html2
-rw-r--r--docs/doxygen/html/xbmemo_8h.html2
-rw-r--r--docs/doxygen/html/xbmemo_8h_source.html2
-rw-r--r--docs/doxygen/html/xbretcod_8h.html50
-rw-r--r--docs/doxygen/html/xbretcod_8h_source.html123
-rw-r--r--docs/doxygen/html/xbselect_8cpp.html80
-rw-r--r--docs/doxygen/html/xbset_8cpp.html2
-rw-r--r--docs/doxygen/html/xbsql_8cpp.html2
-rw-r--r--docs/doxygen/html/xbsql_8h.html2
-rw-r--r--docs/doxygen/html/xbsql_8h_source.html170
-rw-r--r--docs/doxygen/html/xbssv_8cpp.html2
-rw-r--r--docs/doxygen/html/xbssv_8h.html2
-rw-r--r--docs/doxygen/html/xbssv_8h_source.html189
-rw-r--r--docs/doxygen/html/xbstmt_8cpp.html80
-rw-r--r--docs/doxygen/html/xbstring_8cpp.html2
-rw-r--r--docs/doxygen/html/xbstring_8h.html2
-rw-r--r--docs/doxygen/html/xbstring_8h_source.html98
-rw-r--r--docs/doxygen/html/xbtag_8cpp.html2
-rw-r--r--docs/doxygen/html/xbtag_8h.html2
-rw-r--r--docs/doxygen/html/xbtag_8h_source.html2
-rw-r--r--docs/doxygen/html/xbtblmgr_8cpp.html2
-rw-r--r--docs/doxygen/html/xbtblmgr_8h.html2
-rw-r--r--docs/doxygen/html/xbtblmgr_8h_source.html72
-rw-r--r--docs/doxygen/html/xbtypes_8h.html2
-rw-r--r--docs/doxygen/html/xbtypes_8h_source.html2
-rw-r--r--docs/doxygen/html/xbuda_8cpp.html2
-rw-r--r--docs/doxygen/html/xbuda_8h.html2
-rw-r--r--docs/doxygen/html/xbuda_8h_source.html8
-rw-r--r--docs/doxygen/html/xbxbase_8cpp.html2
-rw-r--r--docs/doxygen/html/xbxbase_8h.html2
-rw-r--r--docs/doxygen/html/xbxbase_8h_source.html154
-rw-r--r--docs/doxygen/latex/classxb_1_1xbDate.pdfbin4739 -> 4739 bytes
-rw-r--r--docs/doxygen/latex/classxb_1_1xbDate.tex68
-rw-r--r--docs/doxygen/latex/classxb_1_1xbDbf.pdfbin4914 -> 4914 bytes
-rw-r--r--docs/doxygen/latex/classxb_1_1xbDbf.tex139
-rw-r--r--docs/doxygen/latex/classxb_1_1xbFile.pdfbin4915 -> 4915 bytes
-rw-r--r--docs/doxygen/latex/classxb_1_1xbFile.tex85
-rw-r--r--docs/doxygen/latex/classxb_1_1xbSsv.pdfbin6100 -> 6100 bytes
-rw-r--r--docs/doxygen/latex/classxb_1_1xbSsv.tex68
-rw-r--r--docs/doxygen/latex/classxb_1_1xbString.tex30
-rw-r--r--docs/doxygen/latex/classxb_1_1xbTblMgr.pdfbin5490 -> 5490 bytes
-rw-r--r--docs/doxygen/latex/classxb_1_1xbTblMgr.tex80
-rw-r--r--docs/doxygen/latex/classxb_1_1xbXBase.pdfbin5492 -> 5492 bytes
-rw-r--r--docs/doxygen/latex/classxb_1_1xbXBase.tex114
-rw-r--r--docs/doxygen/latex/dir_25b94c3afce00ed38231227d8141f932.tex10
-rw-r--r--docs/doxygen/latex/dir_313caf1132e152dd9b58bea13a4052ca.tex10
-rw-r--r--docs/doxygen/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex4
-rw-r--r--docs/doxygen/latex/dir_aebb8dcc11953d78e620bbef0b9e2183.tex6
-rw-r--r--docs/doxygen/latex/dir_b0856f6b0d80ccb263b2f415c91f9e17.tex6
-rw-r--r--docs/doxygen/latex/dir_d93a1d4020dea85bb71b237545b5e722.tex6
-rw-r--r--docs/doxygen/latex/dir_e931c1a3f0014e624d0645a271726ad2.tex8
-rw-r--r--docs/doxygen/latex/files.tex203
-rw-r--r--docs/doxygen/latex/refman.tex12
-rw-r--r--docs/doxygen/latex/structxb_1_1xbSchema.tex2
-rw-r--r--docs/doxygen/latex/structxb_1_1xbTblList.tex10
-rw-r--r--docs/doxygen/latex/tstfuncs_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__cfg__check_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__copydbf_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__dbfutil_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__deletall_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__dumpdbt_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__dumphdr_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__dumpix_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__dumprecs_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__ex__date_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__ex__expression_8cpp.tex51
-rw-r--r--docs/doxygen/latex/xb__ex__sql_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__ex__ssv_8cpp.tex17
-rw-r--r--docs/doxygen/latex/xb__ex__string_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__ex__v3__create__dbf_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__ex__v3__upd__dbf_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__ex__v4__create__dbf_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__ex__v4__upd__dbf_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__execsql_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__pack_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__tblinfo_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__test__bcd_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__blockread_8cpp.tex42
-rw-r--r--docs/doxygen/latex/xb__test__blockread__save_8cpp.tex42
-rw-r--r--docs/doxygen/latex/xb__test__date_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__dbf__v3__memos_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__dbf__v3__nomemos_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__dbf__v4__memos_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__dbf__v4__nomemos_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__expnode_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__expression_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__file_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__filter_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__funcs_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__linklist_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__lock2_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__lock_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__log_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__mdx_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__ndx_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__sql_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__string_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__tblmgr_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__uda_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__test__xbase_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xb__undelall_8cpp.tex26
-rw-r--r--docs/doxygen/latex/xb__zap_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbalttbl_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbase_8h.tex5
-rw-r--r--docs/doxygen/latex/xbase_8h_source.tex97
-rw-r--r--docs/doxygen/latex/xbbcd_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbbcd_8h.tex4
-rw-r--r--docs/doxygen/latex/xbbcd_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbblkread_8h.tex7
-rw-r--r--docs/doxygen/latex/xbblkread_8h_source.tex69
-rw-r--r--docs/doxygen/latex/xbblockread_8cpp.tex3
-rw-r--r--docs/doxygen/latex/xbcrix_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbcrtbl_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbcrtbl_8save_8cpp.tex3
-rw-r--r--docs/doxygen/latex/xbdate_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbdate_8h.tex4
-rw-r--r--docs/doxygen/latex/xbdate_8h_source.tex59
-rw-r--r--docs/doxygen/latex/xbdbf3_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbdbf4_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbdbf_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbdbf_8h.tex4
-rw-r--r--docs/doxygen/latex/xbdbf_8h_source.tex721
-rw-r--r--docs/doxygen/latex/xbdelete_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbdrpix_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbdrptbl_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbexp_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbexp_8h.tex4
-rw-r--r--docs/doxygen/latex/xbexp_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbexpnode_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbexpnode_8h.tex4
-rw-r--r--docs/doxygen/latex/xbexpnode_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbfields_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbfile_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbfile_8h.tex4
-rw-r--r--docs/doxygen/latex/xbfile_8h_source.tex242
-rw-r--r--docs/doxygen/latex/xbfilter_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbfilter_8h.tex4
-rw-r--r--docs/doxygen/latex/xbfilter_8h_source.tex28
-rw-r--r--docs/doxygen/latex/xbfuncs_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbindex_8h.tex4
-rw-r--r--docs/doxygen/latex/xbindex_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbinsert_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbixbase_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbixmdx_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbixndx_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xblnklst_8h.tex4
-rw-r--r--docs/doxygen/latex/xblnklst_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xblnklstord_8h.tex4
-rw-r--r--docs/doxygen/latex/xblnklstord_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xblnknod_8h.tex4
-rw-r--r--docs/doxygen/latex/xblnknod_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xblog_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xblog_8h.tex4
-rw-r--r--docs/doxygen/latex/xblog_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbmemo3_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbmemo4_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbmemo_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbmemo_8h.tex4
-rw-r--r--docs/doxygen/latex/xbmemo_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbretcod_8h.tex28
-rw-r--r--docs/doxygen/latex/xbretcod_8h_source.tex123
-rw-r--r--docs/doxygen/latex/xbselect_8cpp.tex3
-rw-r--r--docs/doxygen/latex/xbset_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbsql_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbsql_8h.tex4
-rw-r--r--docs/doxygen/latex/xbsql_8h_source.tex169
-rw-r--r--docs/doxygen/latex/xbssv_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbssv_8h.tex4
-rw-r--r--docs/doxygen/latex/xbssv_8h_source.tex185
-rw-r--r--docs/doxygen/latex/xbstmt_8cpp.tex3
-rw-r--r--docs/doxygen/latex/xbstring_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbstring_8h.tex4
-rw-r--r--docs/doxygen/latex/xbstring_8h_source.tex98
-rw-r--r--docs/doxygen/latex/xbtag_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbtag_8h.tex4
-rw-r--r--docs/doxygen/latex/xbtag_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbtblmgr_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbtblmgr_8h.tex4
-rw-r--r--docs/doxygen/latex/xbtblmgr_8h_source.tex63
-rw-r--r--docs/doxygen/latex/xbtypes_8h.tex4
-rw-r--r--docs/doxygen/latex/xbtypes_8h_source.tex2
-rw-r--r--docs/doxygen/latex/xbuda_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbuda_8h.tex4
-rw-r--r--docs/doxygen/latex/xbuda_8h_source.tex8
-rw-r--r--docs/doxygen/latex/xbxbase_8cpp.tex4
-rw-r--r--docs/doxygen/latex/xbxbase_8h.tex4
-rw-r--r--docs/doxygen/latex/xbxbase_8h_source.tex152
-rwxr-xr-xdocs/html/index.html8
-rwxr-xr-xdocs/html/xbac.html13
-rwxr-xr-xdocs/html/xbae.html6
-rwxr-xr-xdocs/html/xbc15.html127
-rwxr-xr-xdocs/html/xbc16.html52
-rwxr-xr-xdocs/html/xbc17.html219
-rwxr-xr-xdocs/html/xbc18.html252
-rw-r--r--docs/man/xb_cfg_chk.1.gzbin0 -> 546 bytes
-rw-r--r--docs/man/xb_copydbf.1.gzbin0 -> 705 bytes
-rw-r--r--docs/man/xb_dbfutil.1.gzbin0 -> 633 bytes
-rw-r--r--docs/man/xb_deletall.1.gzbin0 -> 656 bytes
-rw-r--r--docs/man/xb_dumpdbt.1.gzbin0 -> 672 bytes
-rw-r--r--docs/man/xb_dumprecs.1.gzbin0 -> 691 bytes
-rw-r--r--docs/man/xb_pack.1.gzbin0 -> 697 bytes
-rw-r--r--docs/man/xb_tblinfo.1.gzbin0 -> 675 bytes
-rw-r--r--docs/man/xb_undelall.1.gzbin0 -> 690 bytes
-rwxr-xr-xsql/jointest.sql43
-rwxr-xr-xsrc/core/xbbcd.cpp5
-rwxr-xr-xsrc/core/xbblockread.cpp271
-rwxr-xr-xsrc/core/xbdbf.cpp154
-rwxr-xr-xsrc/core/xbdbf3.cpp8
-rwxr-xr-xsrc/core/xbdbf4.cpp19
-rwxr-xr-xsrc/core/xbexp.cpp31
-rwxr-xr-xsrc/core/xbfile.cpp286
-rwxr-xr-xsrc/core/xbfilter.cpp50
-rwxr-xr-xsrc/core/xbixmdx.cpp50
-rwxr-xr-xsrc/core/xbixndx.cpp3
-rwxr-xr-xsrc/core/xblog.cpp4
-rwxr-xr-xsrc/core/xbssv.cpp111
-rwxr-xr-xsrc/core/xbstring.cpp71
-rwxr-xr-xsrc/core/xbtblmgr.cpp85
-rwxr-xr-xsrc/core/xbxbase.cpp54
-rwxr-xr-xsrc/examples/xb_ex_expression.cpp4
-rwxr-xr-xsrc/examples/xb_ex_ssv.cpp134
-rwxr-xr-xsrc/examples/xb_ex_v4_upd_dbf.cpp6
-rwxr-xr-xsrc/include/xbase.h7
-rwxr-xr-xsrc/include/xbblkread.h70
-rwxr-xr-xsrc/include/xbconfig.h.in2
-rwxr-xr-xsrc/include/xbdate.h1
-rwxr-xr-xsrc/include/xbdbf.h37
-rwxr-xr-xsrc/include/xbfile.h4
-rwxr-xr-xsrc/include/xbfilter.h6
-rwxr-xr-xsrc/include/xbretcod.h5
-rwxr-xr-xsrc/include/xbsql.h78
-rwxr-xr-xsrc/include/xbssv.h31
-rwxr-xr-xsrc/include/xbstring.h2
-rwxr-xr-xsrc/include/xbtblmgr.h9
-rwxr-xr-xsrc/include/xbuda.h6
-rwxr-xr-xsrc/include/xbxbase.h10
-rwxr-xr-xsrc/sql/xbalttbl.cpp7
-rwxr-xr-xsrc/sql/xbcrix.cpp16
-rwxr-xr-xsrc/sql/xbcrtbl.cpp49
-rwxr-xr-xsrc/sql/xbcrtbl.save.cpp256
-rwxr-xr-xsrc/sql/xbdelete.cpp2
-rwxr-xr-xsrc/sql/xbdrptbl.cpp9
-rwxr-xr-xsrc/sql/xbselect.cpp17
-rwxr-xr-xsrc/sql/xbset.cpp5
-rwxr-xr-xsrc/sql/xbsql.cpp3
-rwxr-xr-xsrc/sql/xbstmt.cpp679
-rwxr-xr-xsrc/tests/xb_test_bcd.cpp5
-rwxr-xr-xsrc/tests/xb_test_blockread.cpp168
-rwxr-xr-xsrc/tests/xb_test_date.cpp7
-rwxr-xr-xsrc/tests/xb_test_dbf_v3_memos.cpp4
-rwxr-xr-xsrc/tests/xb_test_dbf_v3_nomemos.cpp10
-rwxr-xr-xsrc/tests/xb_test_dbf_v4_memos.cpp10
-rwxr-xr-xsrc/tests/xb_test_dbf_v4_nomemos.cpp29
-rwxr-xr-xsrc/tests/xb_test_expnode.cpp4
-rwxr-xr-xsrc/tests/xb_test_expression.cpp7
-rwxr-xr-xsrc/tests/xb_test_file.cpp3
-rwxr-xr-xsrc/tests/xb_test_filter.cpp8
-rwxr-xr-xsrc/tests/xb_test_funcs.cpp3
-rwxr-xr-xsrc/tests/xb_test_linklist.cpp8
-rwxr-xr-xsrc/tests/xb_test_lock.cpp4
-rwxr-xr-xsrc/tests/xb_test_lock2.cpp5
-rwxr-xr-xsrc/tests/xb_test_log.cpp15
-rwxr-xr-xsrc/tests/xb_test_mdx.cpp70
-rwxr-xr-xsrc/tests/xb_test_ndx.cpp15
-rwxr-xr-xsrc/tests/xb_test_sql.cpp151
-rwxr-xr-xsrc/tests/xb_test_string.cpp11
-rwxr-xr-xsrc/tests/xb_test_tblmgr.cpp81
-rwxr-xr-xsrc/tests/xb_test_uda.cpp9
-rwxr-xr-xsrc/tests/xb_test_xbase.cpp44
-rwxr-xr-xsrc/utils/xb_cfg_check.cpp84
-rwxr-xr-xsrc/utils/xb_copydbf.cpp78
-rwxr-xr-xsrc/utils/xb_dbfutil.cpp453
-rwxr-xr-xsrc/utils/xb_deletall.cpp54
-rwxr-xr-xsrc/utils/xb_dumpdbt.cpp54
-rwxr-xr-xsrc/utils/xb_dumphdr.cpp45
-rwxr-xr-xsrc/utils/xb_dumpix.cpp56
-rwxr-xr-xsrc/utils/xb_dumprecs.cpp60
-rwxr-xr-xsrc/utils/xb_execsql.cpp2
-rwxr-xr-xsrc/utils/xb_pack.cpp54
-rwxr-xr-xsrc/utils/xb_tblinfo.cpp105
-rwxr-xr-xsrc/utils/xb_undelall.cpp53
-rwxr-xr-xsrc/utils/xb_zap.cpp52
447 files changed, 11246 insertions, 4939 deletions
diff --git a/NEWS b/NEWS
index 60fdc49..1dd9edd 100755
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,25 @@
-Xbase64 (Dec 26, 2022)
+Xbase64 (Feb 1, 2023)
------------------------
+4.1.0 - 03/02/23
+
+1) Created block read functionality, class xbBlockRead
+2) SQL Updates - Started development of structures needed to support basic
+ SQL SELECT statement - SELECT f FROM t WHERE x=z ORDER BY o
+ Caveat: **** SQL support is still in development phase ******
+3) Updates to class xbTblMgr functionality
+4) New method xbString::Pos( char c, xbUInt32 ulStartPos )
+5) Updated xb_cfg_check program
+6) Added method xbDbf::GetHeaderLen()
+7) Documentation updates
+8) Updates to SQL Create Table logic
+9) Updates to MDX create tag key length calculation
+10) Updated default log file folder to $HOME/xbase64/logs
+11) Updated default data file folder to $HOME/xbase64/data
+12) Created initial round of man pages for utility programs
+13) Created Debian specific build folder
+
4.0.3 - 12/26/22
diff --git a/README b/README
index bea1789..2005427 100755
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
- Xbase64 Version 4.0.3
+ Xbase64 Version 4.1.1
12/26/22
diff --git a/build/borland5.5/CMakeLists.txt b/build/borland5.5/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/borland5.5/CMakeLists.txt
+++ b/build/borland5.5/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/build/cmake/copymake b/build/cmake/copymake
deleted file mode 100755
index e692f68..0000000
--- a/build/cmake/copymake
+++ /dev/null
@@ -1,6 +0,0 @@
-cp CMakeLists.txt ../linux32
-cp CMakeLists.txt ../linux64
-cp CMakeLists.txt ../mac64
-cp CMakeLists.txt ../borland5.5
-cp CMakeLists.txt ../win32vs
-cp CMakeLists.txt ../win64vs
diff --git a/build/cmake/CMakeLists.txt b/build/debian/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/cmake/CMakeLists.txt
+++ b/build/debian/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/build/debian/README.debian b/build/debian/README.debian
new file mode 100644
index 0000000..2c7e95b
--- /dev/null
+++ b/build/debian/README.debian
@@ -0,0 +1,23 @@
+
+Debian build stes for Xbase64 - 2/16/23
+
+1) Verify cmake is installed with command: cmake --version
+ If it is not installed, install the latest version through the Debian software store.
+
+2) Verify gcc is intalled with the command: gcc --version
+ If it is not installed, execute the following commands:
+
+ sudo apt update
+ sudo apt install build-essential
+ gcc --version
+
+3) Build xbase64 library
+
+ cd build/debian (go to the appropriate build directory)
+ cmake . (configure for your environment)
+ make (compile it)
+ sudo make install (install it)
+ xb_cfg_chk (test it)
+
+
+
diff --git a/build/linux32/CMakeLists.txt b/build/linux32/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/linux32/CMakeLists.txt
+++ b/build/linux32/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/build/linux64/CMakeLists.txt b/build/linux64/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/linux64/CMakeLists.txt
+++ b/build/linux64/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/build/mac64/CMakeLists.txt b/build/mac64/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/mac64/CMakeLists.txt
+++ b/build/mac64/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/build/win32vs/CMakeLists.txt b/build/win32vs/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/win32vs/CMakeLists.txt
+++ b/build/win32vs/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/build/win64vs/CMakeLists.txt b/build/win64vs/CMakeLists.txt
index 516b9c9..f514c5c 100755
--- a/build/win64vs/CMakeLists.txt
+++ b/build/win64vs/CMakeLists.txt
@@ -2,12 +2,13 @@ cmake_minimum_required(VERSION 3.0)
project (xbase64)
set( xbase_VERSION_MAJOR 4 )
-set( xbase_VERSION_MINOR 0 )
-set( xbase_VERSION_PATCH 3 )
+set( xbase_VERSION_MINOR 1 )
+set( xbase_VERSION_PATCH 0 )
MESSAGE( "--- Xbase build for: " ${CMAKE_SYSTEM_NAME} )
MESSAGE( "--- Compiler: " ${CMAKE_CXX_COMPILER_ID} )
MESSAGE( "--- Project Name: " ${CMAKE_PROJECT_NAME} )
+MESSAGE( "--- Install Prefix: " ${CMAKE_INSTALL_PREFIX} )
#Set compiler options
@@ -152,42 +153,43 @@ IF( NOT ${iSize} EQUAL 8 )
ENDIF( NOT ${iSize} EQUAL 8 )
#Library options
-option( BUILD_SHARED_LIBS "Build shared libraries?" ON)
-option( XB_DEBUG_SUPPORT "Compile debug logic into library?" ON)
-option( XB_UTILS_SUPPORT "Compile utility programs?" ON)
-option( XB_EXAMPLES_SUPPORT "Compile example programs?" ON)
-option( XB_MEMO_SUPPORT "Compile memo field support into library?" ON)
-option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( BUILD_SHARED_LIBS "Build shared libraries" ON)
option( XB_DBF3_SUPPORT "Compile DBase File Format Version 3 support" ON)
option( XB_DBF4_SUPPORT "Compile DBase File Format Version 4 support" ON)
-option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
+option( XB_MEMO_SUPPORT "Compile memo field support into library" ON)
+option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
+option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
option( XB_LOCKING_SUPPORT "Compile Multi User Locking support into library" ON)
+
+option( XB_LOGGING_SUPPORT "Compile message logging support into library" ON)
+option( XB_LINKLIST_SUPPORT "Compile Link List routines into library" ON)
option( XB_FUNCTION_SUPPORT "Compile XBase Function support into library" ON)
option( XB_EXPRESSION_SUPPORT "Compile Expression support into library" ON)
-option( XB_NDX_SUPPORT "Compile NDX Index support into library" ON)
-option( XB_MDX_SUPPORT "Compile MDX Index support into library" ON)
-option( XB_SQL_SUPPORT "Compile SQL support into library" ON)
option( XB_INF_SUPPORT "Compile NDX INF file support into library" ON)
option( XB_FILTER_SUPPORT "Compile Filter support into library" ON)
-
+option( XB_BLOCKREAD_SUPPORT "Compile Block Read support into library" ON)
+option( XB_SQL_SUPPORT "Compile SQL support into library - alpha" ON)
+option( XB_DEBUG_SUPPORT "Compile debug logic into library" ON)
+option( XB_UTILS_SUPPORT "Compile utility programs" ON)
+option( XB_EXAMPLES_SUPPORT "Compile example programs" ON)
Message( "--- BUILD_SHARED_LIBS " ${BUILD_SHARED_LIBS})
-Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
-Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
-Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
-Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
-Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_DBF3_SUPPORT " ${XB_DBF3_SUPPORT})
Message( "--- XB_DBF4_SUPPORT " ${XB_DBF4_SUPPORT})
-Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
+Message( "--- XB_MEMO_SUPPORT " ${XB_MEMO_SUPPORT})
+Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
+Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
Message( "--- XB_LOCKING_SUPPORT " ${XB_LOCKING_SUPPORT})
+Message( "--- XB_LINKLIST_SUPPORT " ${XB_LINKLIST_SUPPORT})
Message( "--- XB_FUNCTION_SUPPORT " ${XB_FUNCTION_SUPPORT})
Message( "--- XB_EXPRESSION_SUPPORT " ${XB_EXPRESSION_SUPPORT})
-Message( "--- XB_NDX_SUPPORT " ${XB_NDX_SUPPORT})
-Message( "--- XB_MDX_SUPPORT " ${XB_MDX_SUPPORT})
+Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
+Message( "--- XB_DEBUG_SUPPORT " ${XB_DEBUG_SUPPORT})
+Message( "--- XB_UTILS_SUPPORT " ${XB_UTILS_SUPPORT})
+Message( "--- XB_EXAMPLES_SUPPORT " ${XB_EXAMPLES_SUPPORT})
+Message( "--- XB_LOGGING_SUPPORT " ${XB_LOGGING_SUPPORT})
Message( "--- XB_SQL_SUPPORT " ${XB_SQL_SUPPORT})
Message( "--- XB_INF_SUPPORT " ${XB_INF_SUPPORT})
-Message( "--- XB_FILTER_SUPPORT " ${XB_FILTER_SUPPORT})
IF( XB_DEBUG_SUPPORT )
Message( "--- Adding debug support" )
@@ -218,6 +220,7 @@ CHECK_INCLUDE_FILES (ctype.h HAVE_CTYPE_H)
CHECK_INCLUDE_FILES (dirent.h HAVE_DIRENT_H)
CHECK_INCLUDE_FILES (fcntl.h HAVE_FCNTL_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILES (pwd.h HAVE_PWD_H)
CHECK_INCLUDE_FILES (stdarg.h HAVE_STDARG_H)
CHECK_INCLUDE_FILES (stdargs.h HAVE_STDARGS_H)
CHECK_INCLUDE_FILES (string.h HAVE_STRING_H)
@@ -250,6 +253,8 @@ CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF_F)
CHECK_FUNCTION_EXISTS(_vsnprintf_s HAVE__VSNPRINTF_S_F)
+CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT_F)
+
IF( WIN32 )
# Use CHECK_SYMBOL_EXISTS for the Win32API instead of CHECK_FUNCTION_EXISTS
@@ -261,8 +266,6 @@ INCLUDE( CheckSymbolExists )
CHECK_SYMBOL_EXISTS(CreateProcessW Windows.h HAVE_CREATEPROCESSW_F )
CHECK_SYMBOL_EXISTS(vsprintf_s stdio.h HAVE_VSPRINTF_S_F )
-
-
ENDIF ( WIN32 )
# IF( NOT HAVE_SENTENDOFFILE_F AND NOT HAVE_FTRUNCATE_F AND BORLAND )
@@ -300,7 +303,6 @@ set( EXTRA_LIBS ${EXTRA_LIBS} ${XB_LIBNAME})
-
# Undo bad decisions
IF( XB_PLATFORM_32 AND XB_LARGEFILE_SUPPORT )
MESSAGE( "--- Can't build 64 bit environment with a 32 bit compiler" )
@@ -353,6 +355,10 @@ IF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
set( XB_EXPRESSION_SUPPORT ON CACHE BOOL "Compile Expression support into library" FORCE )
ENDIF( XB_FILTER_SUPPORT AND NOT XB_EXPRESSION_SUPPORT )
+IF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
+ MESSAGE( "--- BLOCKREAD support required for SQL. Setting to ON" )
+ set( XB_BLOCKREAD_SUPPORT ON CACHE BOOL "Compile Block Read support into library" FORCE )
+ENDIF( XB_SQL_SUPPORT AND NOT XB_BLOCKREAD_SUPPORT )
# Build configuration header file
@@ -445,6 +451,7 @@ IF( XB_SQL_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbinsert.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbset.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbsql.cpp )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbstmt.cpp )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/sql/xbselect.cpp )
ENDIF( XB_SQL_SUPPORT )
@@ -453,6 +460,9 @@ IF( XB_FILTER_SUPPORT )
set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbfilter.cpp )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+ set (SOURCES ${SOURCES} ${PROJECT_SOURCE_DIR}/core/xbblockread.cpp )
+ENDIF( XB_BLOCKREAD_SUPPORT )
include( GenerateExportHeader )
@@ -593,6 +603,12 @@ target_link_libraries( xb_test_filter ${EXTRA_LIBS})
add_test( NAME xbFilter COMMAND xb_test_filter QUIET )
ENDIF( XB_FILTER_SUPPORT )
+IF( XB_BLOCKREAD_SUPPORT )
+add_executable( xb_test_blockread ${PROJECT_SOURCE_DIR}/tests/xb_test_blockread.cpp )
+target_link_libraries( xb_test_blockread ${EXTRA_LIBS})
+add_test( NAME xbBlockRead COMMAND xb_test_blockread QUIET )
+ENDIF( XB_BLOCKREAD_SUPPORT )
+
IF( XB_LOCKING_SUPPORT )
add_executable( xb_test_lock ${PROJECT_SOURCE_DIR}/tests/xb_test_lock.cpp )
@@ -633,6 +649,8 @@ IF( XB_EXAMPLES_SUPPORT )
add_executable( xb_ex_v4_upd_dbf ${PROJECT_SOURCE_DIR}/examples/xb_ex_v4_upd_dbf.cpp )
target_link_libraries( xb_ex_v4_upd_dbf ${EXTRA_LIBS})
+ add_executable( xb_ex_ssv ${PROJECT_SOURCE_DIR}/examples/xb_ex_ssv.cpp )
+ target_link_libraries( xb_ex_ssv ${EXTRA_LIBS})
ENDIF( XB_EXAMPLES_SUPPORT )
@@ -654,13 +672,9 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_dumpdbt ${PROJECT_SOURCE_DIR}/utils/xb_dumpdbt.cpp )
target_link_libraries( xb_dumpdbt ${EXTRA_LIBS})
- add_executable( xb_dumphdr ${PROJECT_SOURCE_DIR}/utils/xb_dumphdr.cpp )
- target_link_libraries( xb_dumphdr ${EXTRA_LIBS})
-
add_executable( xb_dumprecs ${PROJECT_SOURCE_DIR}/utils/xb_dumprecs.cpp )
target_link_libraries( xb_dumprecs ${EXTRA_LIBS})
-
add_executable( xb_tblinfo ${PROJECT_SOURCE_DIR}/utils/xb_tblinfo.cpp )
target_link_libraries( xb_tblinfo ${EXTRA_LIBS})
@@ -675,20 +689,14 @@ IF( XB_UTILS_SUPPORT )
add_executable( xb_undelall ${PROJECT_SOURCE_DIR}/utils/xb_undelall.cpp )
target_link_libraries( xb_undelall ${EXTRA_LIBS})
- add_executable( xb_zap ${PROJECT_SOURCE_DIR}/utils/xb_zap.cpp )
- target_link_libraries( xb_zap ${EXTRA_LIBS})
-
-
install (TARGETS xb_cfg_check DESTINATION bin)
install (TARGETS xb_copydbf DESTINATION bin)
install (TARGETS xb_dbfutil DESTINATION bin)
install (TARGETS xb_deletall DESTINATION bin)
install (TARGETS xb_dumpdbt DESTINATION bin)
- install (TARGETS xb_dumphdr DESTINATION bin)
install (TARGETS xb_dumprecs DESTINATION bin)
install (TARGETS xb_pack DESTINATION bin)
install (TARGETS xb_undelall DESTINATION bin)
- install (TARGETS xb_zap DESTINATION bin)
IF( XB_SQL_SUPPORT )
install (TARGETS xb_execsql DESTINATION bin)
ENDIF( XB_SQL_SUPPORT )
@@ -721,10 +729,28 @@ install (FILES include/xbconfig.h
${PROJECT_SOURCE_DIR}/include/xbuda.h
${PROJECT_SOURCE_DIR}/include/xbtag.h
${PROJECT_SOURCE_DIR}/include/xbfilter.h
+ ${PROJECT_SOURCE_DIR}/include/xbblkread.h
+ ${PROJECT_SOURCE_DIR}/include/xbsql.h
+
DESTINATION include/${CMAKE_PROJECT_NAME})
+IF( NOT WIN32 )
+install (FILES ${PROJECT_PARENT_DIR}/docs/man/xb_cfg_chk.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_copydbf.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dbfutil.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_deletall.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumpdbt.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_dumprecs.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_pack.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_tblinfo.1.gz
+ ${PROJECT_PARENT_DIR}/docs/man/xb_undelall.1.gz
+
+ DESTINATION man/man1)
+
+ENDIF( NOT WIN32 )
+
-SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.0.3 SOVERSION 0 )
+SET_TARGET_PROPERTIES( ${XB_LIBNAME} PROPERTIES VERSION 4.1.0 SOVERSION 0 )
IF( EXISTS /usr/local/lib64 )
install (TARGETS ${XB_LIBNAME} DESTINATION lib64/${CMAKE_PROJECT_NAME})
diff --git a/docs/doxygen/html/classxb_1_1xbDate.html b/docs/doxygen/html/classxb_1_1xbDate.html
index 80dcc57..67f85fc 100644
--- a/docs/doxygen/html/classxb_1_1xbDate.html
+++ b/docs/doxygen/html/classxb_1_1xbDate.html
@@ -235,12 +235,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">SetDefaultAutoCommit</a> (<a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit)</td></tr>
<tr class="memdesc:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the default auto commit. <a href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">More...</a><br /></td></tr>
<tr class="separator:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf3763faf6a8917a963213cd53af529c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">GetDefaultLogDirectory</a> () const</td></tr>
-<tr class="separator:abf3763faf6a8917a963213cd53af529c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">GetDefaultLogFileName</a> () const</td></tr>
-<tr class="separator:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84343b8645790791512d6bc22ee6c8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">SetDefaultLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory)</td></tr>
-<tr class="separator:a84343b8645790791512d6bc22ee6c8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">GetHomeDir</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut)</td></tr>
+<tr class="memdesc:abc9c06c95d71fbad8294e1ae8862cea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get home directory. <a href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">More...</a><br /></td></tr>
+<tr class="separator:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4822315bded3969b59aeeb683c373051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">GetLogDirectory</a> () const</td></tr>
+<tr class="separator:a4822315bded3969b59aeeb683c373051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaef09435be73b3111f5edbd7091d861"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">GetLogFileName</a> () const</td></tr>
+<tr class="separator:afaef09435be73b3111f5edbd7091d861"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b992ed97281bf25b5b66f5df686225e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">SetLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sLogDirectory)</td></tr>
+<tr class="separator:a7b992ed97281bf25b5b66f5df686225e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">GetMultiUser</a> () const</td></tr>
<tr class="memdesc:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multi user setting. <a href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">More...</a><br /></td></tr>
<tr class="separator:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -863,8 +866,8 @@ XB_NO_ERROR </dd></dl>
</div>
</div>
-<a id="abf3763faf6a8917a963213cd53af529c" name="abf3763faf6a8917a963213cd53af529c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abf3763faf6a8917a963213cd53af529c">&#9670;&nbsp;</a></span>GetDefaultLogDirectory()</h2>
+<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
<div class="memitem">
<div class="memproto">
@@ -873,7 +876,7 @@ XB_NO_ERROR </dd></dl>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogDirectory </td>
+ <td class="memname">xbInt16 xb::xbSsv::GetEndianType </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@@ -886,10 +889,15 @@ XB_NO_ERROR </dd></dl>
</table>
</div><div class="memdoc">
+<p>Get the Endian type. </p>
+<dl class="section return"><dt>Returns</dt><dd>B - Big endian<br />
+ L - Little endian<br />
+ </dd></dl>
+
</div>
</div>
-<a id="a43878d4dc041f2a5e2398a118ccfaf79" name="a43878d4dc041f2a5e2398a118ccfaf79"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43878d4dc041f2a5e2398a118ccfaf79">&#9670;&nbsp;</a></span>GetDefaultLogFileName()</h2>
+<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
<div class="memitem">
<div class="memproto">
@@ -898,9 +906,10 @@ XB_NO_ERROR </dd></dl>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogFileName </td>
+ <td class="memname">const char * xb::xbSsv::GetErrorMessage </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">xbInt16&#160;</td>
+ <td class="paramname"><em>iErrorCode</em></td><td>)</td>
<td> const</td>
</tr>
</table>
@@ -911,10 +920,19 @@ XB_NO_ERROR </dd></dl>
</table>
</div><div class="memdoc">
+<p>Get an error message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">iErrorCode</td><td>ErrorCode is the error number of description to be returned. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a string containing a text description for the error code. </dd></dl>
+
</div>
</div>
-<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
+<a id="abc9c06c95d71fbad8294e1ae8862cea9" name="abc9c06c95d71fbad8294e1ae8862cea9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc9c06c95d71fbad8294e1ae8862cea9">&#9670;&nbsp;</a></span>GetHomeDir()</h2>
<div class="memitem">
<div class="memproto">
@@ -923,10 +941,11 @@ XB_NO_ERROR </dd></dl>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">xbInt16 xb::xbSsv::GetEndianType </td>
+ <td class="memname">void xb::xbSsv::GetHomeDir </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sHomeDirOut</em></td><td>)</td>
+ <td></td>
</tr>
</table>
</td>
@@ -936,15 +955,19 @@ XB_NO_ERROR </dd></dl>
</table>
</div><div class="memdoc">
-<p>Get the Endian type. </p>
-<dl class="section return"><dt>Returns</dt><dd>B - Big endian<br />
- L - Little endian<br />
- </dd></dl>
+<p>Get home directory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sHomeDirOut</td><td>- Output home directory for current user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
</div>
</div>
-<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
+<a id="a4822315bded3969b59aeeb683c373051" name="a4822315bded3969b59aeeb683c373051"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4822315bded3969b59aeeb683c373051">&#9670;&nbsp;</a></span>GetLogDirectory()</h2>
<div class="memitem">
<div class="memproto">
@@ -953,10 +976,9 @@ XB_NO_ERROR </dd></dl>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">const char * xb::xbSsv::GetErrorMessage </td>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogDirectory </td>
<td>(</td>
- <td class="paramtype">xbInt16&#160;</td>
- <td class="paramname"><em>iErrorCode</em></td><td>)</td>
+ <td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
@@ -967,14 +989,30 @@ XB_NO_ERROR </dd></dl>
</table>
</div><div class="memdoc">
-<p>Get an error message. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iErrorCode</td><td>ErrorCode is the error number of description to be returned. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a string containing a text description for the error code. </dd></dl>
+</div>
+</div>
+<a id="afaef09435be73b3111f5edbd7091d861" name="afaef09435be73b3111f5edbd7091d861"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afaef09435be73b3111f5edbd7091d861">&#9670;&nbsp;</a></span>GetLogFileName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogFileName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
</div>
</div>
@@ -1646,8 +1684,8 @@ XB_INVALID_DATE </dd></dl>
</div>
</div>
-<a id="a84343b8645790791512d6bc22ee6c8eb" name="a84343b8645790791512d6bc22ee6c8eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a84343b8645790791512d6bc22ee6c8eb">&#9670;&nbsp;</a></span>SetDefaultLogDirectory()</h2>
+<a id="a904ec348fd029d4a76e72b8fde636108" name="a904ec348fd029d4a76e72b8fde636108"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a904ec348fd029d4a76e72b8fde636108">&#9670;&nbsp;</a></span>SetEndianType()</h2>
<div class="memitem">
<div class="memproto">
@@ -1656,24 +1694,26 @@ XB_INVALID_DATE </dd></dl>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void xb::xbSsv::SetDefaultLogDirectory </td>
+ <td class="memname">void xb::xbSsv::SetEndianType </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sDefaultLogDirectory</em></td><td>)</td>
+ <td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
+<p>Set the endian type. </p>
+<p >This routine determines the Endian-ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. </p>
+
</div>
</div>
-<a id="a904ec348fd029d4a76e72b8fde636108" name="a904ec348fd029d4a76e72b8fde636108"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a904ec348fd029d4a76e72b8fde636108">&#9670;&nbsp;</a></span>SetEndianType()</h2>
+<a id="a7b992ed97281bf25b5b66f5df686225e" name="a7b992ed97281bf25b5b66f5df686225e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b992ed97281bf25b5b66f5df686225e">&#9670;&nbsp;</a></span>SetLogDirectory()</h2>
<div class="memitem">
<div class="memproto">
@@ -1682,22 +1722,20 @@ XB_INVALID_DATE </dd></dl>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void xb::xbSsv::SetEndianType </td>
+ <td class="memname">void xb::xbSsv::SetLogDirectory </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sLogDirectory</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
-<p>Set the endian type. </p>
-<p >This routine determines the Endian-ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. </p>
-
</div>
</div>
<a id="aba6e59512f7172dd55dcf92059e5928c" name="aba6e59512f7172dd55dcf92059e5928c"></a>
@@ -1864,8 +1902,8 @@ XB_INVALID_DATE </dd></dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbdate_8h_source.html">xbdate.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbdate_8cpp.html">xbdate.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbdate_8h_source.html">xbdate.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbdate_8cpp.html">xbdate.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/classxb_1_1xbDbf.html b/docs/doxygen/html/classxb_1_1xbDbf.html
index d532bc4..0546182 100644
--- a/docs/doxygen/html/classxb_1_1xbDbf.html
+++ b/docs/doxygen/html/classxb_1_1xbDbf.html
@@ -144,12 +144,18 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:ae0c00226fd2ea7a67f101e795467ed68"><td class="memItemLeft" align="right" valign="top">virtual xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#ae0c00226fd2ea7a67f101e795467ed68">GetAutoCommit</a> (xbInt16 iOption) const</td></tr>
<tr class="memdesc:ae0c00226fd2ea7a67f101e795467ed68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get auto commit setting. <a href="classxb_1_1xbDbf.html#ae0c00226fd2ea7a67f101e795467ed68">More...</a><br /></td></tr>
<tr class="separator:ae0c00226fd2ea7a67f101e795467ed68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0827a43c025c1184ffebab74cc9e779"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#ad0827a43c025c1184ffebab74cc9e779">GetBof</a> ()</td></tr>
+<tr class="memdesc:ad0827a43c025c1184ffebab74cc9e779"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the current index object. <a href="classxb_1_1xbDbf.html#ad0827a43c025c1184ffebab74cc9e779">More...</a><br /></td></tr>
+<tr class="separator:ad0827a43c025c1184ffebab74cc9e779"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643a80a3792a52760c8e09ba18719503"><td class="memItemLeft" align="right" valign="top">virtual xbUInt32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503">GetCurRecNo</a> () const</td></tr>
-<tr class="memdesc:a643a80a3792a52760c8e09ba18719503"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the current index object. <a href="classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503">More...</a><br /></td></tr>
+<tr class="memdesc:a643a80a3792a52760c8e09ba18719503"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current record number. <a href="classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503">More...</a><br /></td></tr>
<tr class="separator:a643a80a3792a52760c8e09ba18719503"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1110d867ba297a52c8b0e83e88f05e6"><td class="memItemLeft" align="right" valign="top">virtual xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6">GetDbfStatus</a> () const</td></tr>
<tr class="memdesc:ac1110d867ba297a52c8b0e83e88f05e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the current dbf status. <a href="classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6">More...</a><br /></td></tr>
<tr class="separator:ac1110d867ba297a52c8b0e83e88f05e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a256dc1f98626fa77da24e91a38ab5b4d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#a256dc1f98626fa77da24e91a38ab5b4d">GetEof</a> ()</td></tr>
+<tr class="memdesc:a256dc1f98626fa77da24e91a38ab5b4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if dbf file empty or positioned to the last record. <a href="classxb_1_1xbDbf.html#a256dc1f98626fa77da24e91a38ab5b4d">More...</a><br /></td></tr>
+<tr class="separator:a256dc1f98626fa77da24e91a38ab5b4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add27d8ef555a13b336b8c804165dc15e"><td class="memItemLeft" align="right" valign="top">virtual xbInt32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e">GetFieldCnt</a> () const</td></tr>
<tr class="memdesc:add27d8ef555a13b336b8c804165dc15e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of fields in the table. <a href="classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e">More...</a><br /></td></tr>
<tr class="separator:add27d8ef555a13b336b8c804165dc15e"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -159,6 +165,8 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:acb78991e8435edd36318c653cb977c1a"><td class="memItemLeft" align="right" valign="top">virtual xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a">GetFirstRecord</a> (xbInt16 iOption)</td></tr>
<tr class="memdesc:acb78991e8435edd36318c653cb977c1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the first record. <a href="classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a">More...</a><br /></td></tr>
<tr class="separator:acb78991e8435edd36318c653cb977c1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad56be2756b7a9f8318d9ba5cf215dafb"><td class="memItemLeft" align="right" valign="top">virtual xbUInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb">GetHeaderLen</a> () const</td></tr>
+<tr class="separator:ad56be2756b7a9f8318d9ba5cf215dafb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49e667f9c8ee55c36444702663fc5964"><td class="memItemLeft" align="right" valign="top">virtual xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964">GetLastRecord</a> ()</td></tr>
<tr class="memdesc:a49e667f9c8ee55c36444702663fc5964"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the last record. <a href="classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964">More...</a><br /></td></tr>
<tr class="separator:a49e667f9c8ee55c36444702663fc5964"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -378,6 +386,9 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a571b36b3a940b1a16d5e834f329b33b9"><td class="memItemLeft" align="right" valign="top">virtual xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbDbf.html#a571b36b3a940b1a16d5e834f329b33b9">PutDateField</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, const <a class="el" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt)</td></tr>
<tr class="memdesc:a571b36b3a940b1a16d5e834f329b33b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put date field for field name. <a href="classxb_1_1xbDbf.html#a571b36b3a940b1a16d5e834f329b33b9">More...</a><br /></td></tr>
<tr class="separator:a571b36b3a940b1a16d5e834f329b33b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a060acbfaa8d528f86cb59301814b414a"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a">SetHomeFolders</a> ()</td></tr>
+<tr class="memdesc:a060acbfaa8d528f86cb59301814b414a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create Home Folders. <a href="classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a">More...</a><br /></td></tr>
+<tr class="separator:a060acbfaa8d528f86cb59301814b414a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae9a2ddb0adb8165b4ac2b6a28a932f7"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbFile.html#aae9a2ddb0adb8165b4ac2b6a28a932f7">CreateUniqueFileName</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDirIn, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sExtIn, <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFqnOut)</td></tr>
<tr class="memdesc:aae9a2ddb0adb8165b4ac2b6a28a932f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a unique file name. <a href="classxb_1_1xbFile.html#aae9a2ddb0adb8165b4ac2b6a28a932f7">More...</a><br /></td></tr>
<tr class="separator:aae9a2ddb0adb8165b4ac2b6a28a932f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -621,12 +632,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">SetDefaultAutoCommit</a> (<a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit)</td></tr>
<tr class="memdesc:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the default auto commit. <a href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">More...</a><br /></td></tr>
<tr class="separator:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf3763faf6a8917a963213cd53af529c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">GetDefaultLogDirectory</a> () const</td></tr>
-<tr class="separator:abf3763faf6a8917a963213cd53af529c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">GetDefaultLogFileName</a> () const</td></tr>
-<tr class="separator:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84343b8645790791512d6bc22ee6c8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">SetDefaultLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory)</td></tr>
-<tr class="separator:a84343b8645790791512d6bc22ee6c8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">GetHomeDir</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut)</td></tr>
+<tr class="memdesc:abc9c06c95d71fbad8294e1ae8862cea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get home directory. <a href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">More...</a><br /></td></tr>
+<tr class="separator:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4822315bded3969b59aeeb683c373051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">GetLogDirectory</a> () const</td></tr>
+<tr class="separator:a4822315bded3969b59aeeb683c373051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaef09435be73b3111f5edbd7091d861"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">GetLogFileName</a> () const</td></tr>
+<tr class="separator:afaef09435be73b3111f5edbd7091d861"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b992ed97281bf25b5b66f5df686225e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">SetLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sLogDirectory)</td></tr>
+<tr class="separator:a7b992ed97281bf25b5b66f5df686225e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">GetMultiUser</a> () const</td></tr>
<tr class="memdesc:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multi user setting. <a href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">More...</a><br /></td></tr>
<tr class="separator:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -2317,6 +2331,36 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
+<a id="ad0827a43c025c1184ffebab74cc9e779" name="ad0827a43c025c1184ffebab74cc9e779"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad0827a43c025c1184ffebab74cc9e779">&#9670;&nbsp;</a></span>GetBof()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> xb::xbDbf::GetBof </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get a pointer to the current index object. </p>
+<dl class="section return"><dt>Returns</dt><dd>Pointer to current index.</dd></dl>
+<p>Return true if dbf file empty or positioned to the first record</p>
+<dl class="section return"><dt>Returns</dt><dd>Returns true if dbf file is empty or positioned on the first record. </dd></dl>
+
+</div>
+</div>
<a id="a643a80a3792a52760c8e09ba18719503" name="a643a80a3792a52760c8e09ba18719503"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a643a80a3792a52760c8e09ba18719503">&#9670;&nbsp;</a></span>GetCurRecNo()</h2>
@@ -2340,9 +2384,7 @@ Static Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Get a pointer to the current index object. </p>
-<dl class="section return"><dt>Returns</dt><dd>Pointer to current index.</dd></dl>
-<p>Return the current record number.</p>
+<p>Return the current record number. </p>
<dl class="section return"><dt>Returns</dt><dd>Returns the current record number. </dd></dl>
</div>
@@ -2568,56 +2610,6 @@ XB_INVALID_DATA </dd></dl>
</div>
</div>
-<a id="abf3763faf6a8917a963213cd53af529c" name="abf3763faf6a8917a963213cd53af529c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abf3763faf6a8917a963213cd53af529c">&#9670;&nbsp;</a></span>GetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="a43878d4dc041f2a5e2398a118ccfaf79" name="a43878d4dc041f2a5e2398a118ccfaf79"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43878d4dc041f2a5e2398a118ccfaf79">&#9670;&nbsp;</a></span>GetDefaultLogFileName()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogFileName </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="acd0fb2166b2bff7e8a1cf65a7bc8be1e" name="acd0fb2166b2bff7e8a1cf65a7bc8be1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd0fb2166b2bff7e8a1cf65a7bc8be1e">&#9670;&nbsp;</a></span>GetDirectory()</h2>
@@ -2840,6 +2832,34 @@ XB_INVALID_DATA </dd></dl>
</div>
</div>
+<a id="a256dc1f98626fa77da24e91a38ab5b4d" name="a256dc1f98626fa77da24e91a38ab5b4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a256dc1f98626fa77da24e91a38ab5b4d">&#9670;&nbsp;</a></span>GetEof()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> xb::xbDbf::GetEof </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Return true if dbf file empty or positioned to the last record. </p>
+<dl class="section return"><dt>Returns</dt><dd>Returns true if dbf file is empty or positioned on the last record. </dd></dl>
+
+</div>
+</div>
<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
@@ -4092,6 +4112,66 @@ XB_INVALID_DATA </dd></dl>
</div>
</div>
+<a id="ad56be2756b7a9f8318d9ba5cf215dafb" name="ad56be2756b7a9f8318d9ba5cf215dafb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad56be2756b7a9f8318d9ba5cf215dafb">&#9670;&nbsp;</a></span>GetHeaderLen()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual xbUInt16 xb::xbDbf::GetHeaderLen </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="abc9c06c95d71fbad8294e1ae8862cea9" name="abc9c06c95d71fbad8294e1ae8862cea9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc9c06c95d71fbad8294e1ae8862cea9">&#9670;&nbsp;</a></span>GetHomeDir()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void xb::xbSsv::GetHomeDir </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sHomeDirOut</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get home directory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sHomeDirOut</td><td>- Output home directory for current user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
<a id="a49e667f9c8ee55c36444702663fc5964" name="a49e667f9c8ee55c36444702663fc5964"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49e667f9c8ee55c36444702663fc5964">&#9670;&nbsp;</a></span>GetLastRecord() <span class="overload">[1/2]</span></h2>
@@ -4158,6 +4238,56 @@ XB_INVALID_DATA </dd></dl>
</div>
</div>
+<a id="a4822315bded3969b59aeeb683c373051" name="a4822315bded3969b59aeeb683c373051"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4822315bded3969b59aeeb683c373051">&#9670;&nbsp;</a></span>GetLogDirectory()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogDirectory </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afaef09435be73b3111f5edbd7091d861" name="afaef09435be73b3111f5edbd7091d861"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afaef09435be73b3111f5edbd7091d861">&#9670;&nbsp;</a></span>GetLogFileName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogFileName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="a943cea7fde1b06c1a05184193eff8d2d" name="a943cea7fde1b06c1a05184193eff8d2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a943cea7fde1b06c1a05184193eff8d2d">&#9670;&nbsp;</a></span>GetLogicalField() <span class="overload">[1/5]</span></h2>
@@ -6956,32 +7086,6 @@ xbFalse - Record not deleted. </dd></dl>
</div>
</div>
-<a id="a84343b8645790791512d6bc22ee6c8eb" name="a84343b8645790791512d6bc22ee6c8eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a84343b8645790791512d6bc22ee6c8eb">&#9670;&nbsp;</a></span>SetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void xb::xbSsv::SetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sDefaultLogDirectory</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="ae78a85255488bc78964c16946dbaead3" name="ae78a85255488bc78964c16946dbaead3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae78a85255488bc78964c16946dbaead3">&#9670;&nbsp;</a></span>SetDirectory()</h2>
@@ -7116,6 +7220,61 @@ xbFalse - Record not deleted. </dd></dl>
</div>
</div>
+<a id="a060acbfaa8d528f86cb59301814b414a" name="a060acbfaa8d528f86cb59301814b414a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a060acbfaa8d528f86cb59301814b414a">&#9670;&nbsp;</a></span>SetHomeFolders()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">xbInt16 xb::xbFile::SetHomeFolders </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Create Home Folders. </p>
+<p >Create xbase64 log and data folders in the home directory for current usre.</p>
+<dl class="section return"><dt>Returns</dt><dd><a href="xbretcod_8h.html">Return Codes</a> </dd></dl>
+
+</div>
+</div>
+<a id="a7b992ed97281bf25b5b66f5df686225e" name="a7b992ed97281bf25b5b66f5df686225e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b992ed97281bf25b5b66f5df686225e">&#9670;&nbsp;</a></span>SetLogDirectory()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void xb::xbSsv::SetLogDirectory </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sLogDirectory</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="aba6e59512f7172dd55dcf92059e5928c" name="aba6e59512f7172dd55dcf92059e5928c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba6e59512f7172dd55dcf92059e5928c">&#9670;&nbsp;</a></span>SetMultiUser()</h2>
@@ -7961,7 +8120,7 @@ The mode can also include the letter "b" for binary ie; "r+b". The "b" is ignore
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to data to write </td></tr>
<tr><td class="paramname">size</td><td>size of write </td></tr>
- <tr><td class="paramname">nmemb</td><td>Number of times to write it </td></tr>
+ <tr><td class="paramname">nmemb</td><td>Number of times to read it </td></tr>
</table>
</dd>
</dl>
@@ -8950,9 +9109,9 @@ The mode can also include the letter "b" for binary ie; "r+b". The "b" is ignore
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbdbf_8h_source.html">xbdbf.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbdbf_8cpp.html">xbdbf.cpp</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbfields_8cpp.html">xbfields.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbdbf_8h_source.html">xbdbf.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbdbf_8cpp.html">xbdbf.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbfields_8cpp.html">xbfields.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/classxb_1_1xbFile.html b/docs/doxygen/html/classxb_1_1xbFile.html
index b569a52..885e969 100644
--- a/docs/doxygen/html/classxb_1_1xbFile.html
+++ b/docs/doxygen/html/classxb_1_1xbFile.html
@@ -100,6 +100,9 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a491f6c48076e89da2e791a42b2727a90"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbFile.html#a491f6c48076e89da2e791a42b2727a90">~xbFile</a> ()</td></tr>
<tr class="memdesc:a491f6c48076e89da2e791a42b2727a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class Destructor. <a href="classxb_1_1xbFile.html#a491f6c48076e89da2e791a42b2727a90">More...</a><br /></td></tr>
<tr class="separator:a491f6c48076e89da2e791a42b2727a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a060acbfaa8d528f86cb59301814b414a"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a">SetHomeFolders</a> ()</td></tr>
+<tr class="memdesc:a060acbfaa8d528f86cb59301814b414a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create Home Folders. <a href="classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a">More...</a><br /></td></tr>
+<tr class="separator:a060acbfaa8d528f86cb59301814b414a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae9a2ddb0adb8165b4ac2b6a28a932f7"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbFile.html#aae9a2ddb0adb8165b4ac2b6a28a932f7">CreateUniqueFileName</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDirIn, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sExtIn, <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFqnOut)</td></tr>
<tr class="memdesc:aae9a2ddb0adb8165b4ac2b6a28a932f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a unique file name. <a href="classxb_1_1xbFile.html#aae9a2ddb0adb8165b4ac2b6a28a932f7">More...</a><br /></td></tr>
<tr class="separator:aae9a2ddb0adb8165b4ac2b6a28a932f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -343,12 +346,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">SetDefaultAutoCommit</a> (<a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit)</td></tr>
<tr class="memdesc:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the default auto commit. <a href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">More...</a><br /></td></tr>
<tr class="separator:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf3763faf6a8917a963213cd53af529c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">GetDefaultLogDirectory</a> () const</td></tr>
-<tr class="separator:abf3763faf6a8917a963213cd53af529c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">GetDefaultLogFileName</a> () const</td></tr>
-<tr class="separator:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84343b8645790791512d6bc22ee6c8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">SetDefaultLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory)</td></tr>
-<tr class="separator:a84343b8645790791512d6bc22ee6c8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">GetHomeDir</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut)</td></tr>
+<tr class="memdesc:abc9c06c95d71fbad8294e1ae8862cea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get home directory. <a href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">More...</a><br /></td></tr>
+<tr class="separator:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4822315bded3969b59aeeb683c373051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">GetLogDirectory</a> () const</td></tr>
+<tr class="separator:a4822315bded3969b59aeeb683c373051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaef09435be73b3111f5edbd7091d861"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">GetLogFileName</a> () const</td></tr>
+<tr class="separator:afaef09435be73b3111f5edbd7091d861"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b992ed97281bf25b5b66f5df686225e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">SetLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sLogDirectory)</td></tr>
+<tr class="separator:a7b992ed97281bf25b5b66f5df686225e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">GetMultiUser</a> () const</td></tr>
<tr class="memdesc:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multi user setting. <a href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">More...</a><br /></td></tr>
<tr class="separator:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -1321,56 +1327,6 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="abf3763faf6a8917a963213cd53af529c" name="abf3763faf6a8917a963213cd53af529c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abf3763faf6a8917a963213cd53af529c">&#9670;&nbsp;</a></span>GetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="a43878d4dc041f2a5e2398a118ccfaf79" name="a43878d4dc041f2a5e2398a118ccfaf79"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43878d4dc041f2a5e2398a118ccfaf79">&#9670;&nbsp;</a></span>GetDefaultLogFileName()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogFileName </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="acd0fb2166b2bff7e8a1cf65a7bc8be1e" name="acd0fb2166b2bff7e8a1cf65a7bc8be1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd0fb2166b2bff7e8a1cf65a7bc8be1e">&#9670;&nbsp;</a></span>GetDirectory()</h2>
@@ -1772,6 +1728,91 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
+<a id="abc9c06c95d71fbad8294e1ae8862cea9" name="abc9c06c95d71fbad8294e1ae8862cea9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc9c06c95d71fbad8294e1ae8862cea9">&#9670;&nbsp;</a></span>GetHomeDir()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void xb::xbSsv::GetHomeDir </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sHomeDirOut</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get home directory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sHomeDirOut</td><td>- Output home directory for current user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
+<a id="a4822315bded3969b59aeeb683c373051" name="a4822315bded3969b59aeeb683c373051"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4822315bded3969b59aeeb683c373051">&#9670;&nbsp;</a></span>GetLogDirectory()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogDirectory </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afaef09435be73b3111f5edbd7091d861" name="afaef09435be73b3111f5edbd7091d861"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afaef09435be73b3111f5edbd7091d861">&#9670;&nbsp;</a></span>GetLogFileName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogFileName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="abd58031c5f1c3766c24d47a82e6fd9c5" name="abd58031c5f1c3766c24d47a82e6fd9c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd58031c5f1c3766c24d47a82e6fd9c5">&#9670;&nbsp;</a></span>GetMultiUser()</h2>
@@ -2246,32 +2287,6 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="a84343b8645790791512d6bc22ee6c8eb" name="a84343b8645790791512d6bc22ee6c8eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a84343b8645790791512d6bc22ee6c8eb">&#9670;&nbsp;</a></span>SetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void xb::xbSsv::SetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sDefaultLogDirectory</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="ae78a85255488bc78964c16946dbaead3" name="ae78a85255488bc78964c16946dbaead3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae78a85255488bc78964c16946dbaead3">&#9670;&nbsp;</a></span>SetDirectory()</h2>
@@ -2382,6 +2397,53 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
+<a id="a060acbfaa8d528f86cb59301814b414a" name="a060acbfaa8d528f86cb59301814b414a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a060acbfaa8d528f86cb59301814b414a">&#9670;&nbsp;</a></span>SetHomeFolders()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">xbInt16 xb::xbFile::SetHomeFolders </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Create Home Folders. </p>
+<p >Create xbase64 log and data folders in the home directory for current usre.</p>
+<dl class="section return"><dt>Returns</dt><dd><a href="xbretcod_8h.html">Return Codes</a> </dd></dl>
+
+</div>
+</div>
+<a id="a7b992ed97281bf25b5b66f5df686225e" name="a7b992ed97281bf25b5b66f5df686225e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b992ed97281bf25b5b66f5df686225e">&#9670;&nbsp;</a></span>SetLogDirectory()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void xb::xbSsv::SetLogDirectory </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sLogDirectory</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="aba6e59512f7172dd55dcf92059e5928c" name="aba6e59512f7172dd55dcf92059e5928c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba6e59512f7172dd55dcf92059e5928c">&#9670;&nbsp;</a></span>SetMultiUser()</h2>
@@ -2925,7 +2987,7 @@ The mode can also include the letter "b" for binary ie; "r+b". The "b" is ignore
<table class="params">
<tr><td class="paramname">p</td><td>Pointer to data to write </td></tr>
<tr><td class="paramname">size</td><td>size of write </td></tr>
- <tr><td class="paramname">nmemb</td><td>Number of times to write it </td></tr>
+ <tr><td class="paramname">nmemb</td><td>Number of times to read it </td></tr>
</table>
</dd>
</dl>
@@ -3358,8 +3420,8 @@ The mode can also include the letter "b" for binary ie; "r+b". The "b" is ignore
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbfile_8h_source.html">xbfile.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbfile_8cpp.html">xbfile.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbfile_8h_source.html">xbfile.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbfile_8cpp.html">xbfile.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/classxb_1_1xbSsv.html b/docs/doxygen/html/classxb_1_1xbSsv.html
index 9180d1d..96a07d8 100644
--- a/docs/doxygen/html/classxb_1_1xbSsv.html
+++ b/docs/doxygen/html/classxb_1_1xbSsv.html
@@ -133,12 +133,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">SetDefaultAutoCommit</a> (<a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit)</td></tr>
<tr class="memdesc:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the default auto commit. <a href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">More...</a><br /></td></tr>
<tr class="separator:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf3763faf6a8917a963213cd53af529c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">GetDefaultLogDirectory</a> () const</td></tr>
-<tr class="separator:abf3763faf6a8917a963213cd53af529c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">GetDefaultLogFileName</a> () const</td></tr>
-<tr class="separator:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84343b8645790791512d6bc22ee6c8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">SetDefaultLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory)</td></tr>
-<tr class="separator:a84343b8645790791512d6bc22ee6c8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">GetHomeDir</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut)</td></tr>
+<tr class="memdesc:abc9c06c95d71fbad8294e1ae8862cea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get home directory. <a href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">More...</a><br /></td></tr>
+<tr class="separator:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4822315bded3969b59aeeb683c373051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">GetLogDirectory</a> () const</td></tr>
+<tr class="separator:a4822315bded3969b59aeeb683c373051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaef09435be73b3111f5edbd7091d861"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">GetLogFileName</a> () const</td></tr>
+<tr class="separator:afaef09435be73b3111f5edbd7091d861"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b992ed97281bf25b5b66f5df686225e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">SetLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sLogDirectory)</td></tr>
+<tr class="separator:a7b992ed97281bf25b5b66f5df686225e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">GetMultiUser</a> () const</td></tr>
<tr class="memdesc:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multi user setting. <a href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">More...</a><br /></td></tr>
<tr class="separator:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -352,14 +355,14 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="abf3763faf6a8917a963213cd53af529c" name="abf3763faf6a8917a963213cd53af529c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abf3763faf6a8917a963213cd53af529c">&#9670;&nbsp;</a></span>GetDefaultLogDirectory()</h2>
+<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogDirectory </td>
+ <td class="memname">xbInt16 xb::xbSsv::GetEndianType </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@@ -367,71 +370,98 @@ Static Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Get the Endian type. </p>
+<dl class="section return"><dt>Returns</dt><dd>B - Big endian<br />
+ L - Little endian<br />
+ </dd></dl>
+
</div>
</div>
-<a id="a43878d4dc041f2a5e2398a118ccfaf79" name="a43878d4dc041f2a5e2398a118ccfaf79"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43878d4dc041f2a5e2398a118ccfaf79">&#9670;&nbsp;</a></span>GetDefaultLogFileName()</h2>
+<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogFileName </td>
+ <td class="memname">const char * xb::xbSsv::GetErrorMessage </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">xbInt16&#160;</td>
+ <td class="paramname"><em>iErrorCode</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
+<p>Get an error message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">iErrorCode</td><td>ErrorCode is the error number of description to be returned. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a string containing a text description for the error code. </dd></dl>
+
</div>
</div>
-<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
+<a id="abc9c06c95d71fbad8294e1ae8862cea9" name="abc9c06c95d71fbad8294e1ae8862cea9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc9c06c95d71fbad8294e1ae8862cea9">&#9670;&nbsp;</a></span>GetHomeDir()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">xbInt16 xb::xbSsv::GetEndianType </td>
+ <td class="memname">void xb::xbSsv::GetHomeDir </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sHomeDirOut</em></td><td>)</td>
+ <td></td>
</tr>
</table>
</div><div class="memdoc">
-<p>Get the Endian type. </p>
-<dl class="section return"><dt>Returns</dt><dd>B - Big endian<br />
- L - Little endian<br />
- </dd></dl>
+<p>Get home directory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sHomeDirOut</td><td>- Output home directory for current user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
</div>
</div>
-<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
+<a id="a4822315bded3969b59aeeb683c373051" name="a4822315bded3969b59aeeb683c373051"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4822315bded3969b59aeeb683c373051">&#9670;&nbsp;</a></span>GetLogDirectory()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">const char * xb::xbSsv::GetErrorMessage </td>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogDirectory </td>
<td>(</td>
- <td class="paramtype">xbInt16&#160;</td>
- <td class="paramname"><em>iErrorCode</em></td><td>)</td>
+ <td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
-<p>Get an error message. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iErrorCode</td><td>ErrorCode is the error number of description to be returned. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a string containing a text description for the error code. </dd></dl>
+</div>
+</div>
+<a id="afaef09435be73b3111f5edbd7091d861" name="afaef09435be73b3111f5edbd7091d861"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afaef09435be73b3111f5edbd7091d861">&#9670;&nbsp;</a></span>GetLogFileName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogFileName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
</div>
</div>
@@ -538,24 +568,6 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="a84343b8645790791512d6bc22ee6c8eb" name="a84343b8645790791512d6bc22ee6c8eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a84343b8645790791512d6bc22ee6c8eb">&#9670;&nbsp;</a></span>SetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">void xb::xbSsv::SetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sDefaultLogDirectory</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="a904ec348fd029d4a76e72b8fde636108" name="a904ec348fd029d4a76e72b8fde636108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a904ec348fd029d4a76e72b8fde636108">&#9670;&nbsp;</a></span>SetEndianType()</h2>
@@ -584,6 +596,24 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
+<a id="a7b992ed97281bf25b5b66f5df686225e" name="a7b992ed97281bf25b5b66f5df686225e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b992ed97281bf25b5b66f5df686225e">&#9670;&nbsp;</a></span>SetLogDirectory()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void xb::xbSsv::SetLogDirectory </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sLogDirectory</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="aba6e59512f7172dd55dcf92059e5928c" name="aba6e59512f7172dd55dcf92059e5928c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba6e59512f7172dd55dcf92059e5928c">&#9670;&nbsp;</a></span>SetMultiUser()</h2>
@@ -680,8 +710,8 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbssv_8h_source.html">xbssv.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbssv_8cpp.html">xbssv.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbssv_8h_source.html">xbssv.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbssv_8cpp.html">xbssv.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/classxb_1_1xbString.html b/docs/doxygen/html/classxb_1_1xbString.html
index 7d509c9..1cf60fe 100644
--- a/docs/doxygen/html/classxb_1_1xbString.html
+++ b/docs/doxygen/html/classxb_1_1xbString.html
@@ -267,6 +267,9 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:aba13f0c77eb6c4a22996039569fad284"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbString.html#aba13f0c77eb6c4a22996039569fad284">PadRight</a> (char c, xbUInt32 ulLen)</td></tr>
<tr class="memdesc:aba13f0c77eb6c4a22996039569fad284"><td class="mdescLeft">&#160;</td><td class="mdescRight">Right pad string. <a href="classxb_1_1xbString.html#aba13f0c77eb6c4a22996039569fad284">More...</a><br /></td></tr>
<tr class="separator:aba13f0c77eb6c4a22996039569fad284"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b586890138da8bf0e23090bd8b34581"><td class="memItemLeft" align="right" valign="top">xbUInt32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbString.html#a1b586890138da8bf0e23090bd8b34581">Pos</a> (char c, xbUInt32 ulStartPos) const</td></tr>
+<tr class="memdesc:a1b586890138da8bf0e23090bd8b34581"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine position of a given character. <a href="classxb_1_1xbString.html#a1b586890138da8bf0e23090bd8b34581">More...</a><br /></td></tr>
+<tr class="separator:a1b586890138da8bf0e23090bd8b34581"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3baf59d15099589ff631995f129e582b"><td class="memItemLeft" align="right" valign="top">xbUInt32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b">Pos</a> (char c) const</td></tr>
<tr class="memdesc:a3baf59d15099589ff631995f129e582b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine position of a given character. <a href="classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b">More...</a><br /></td></tr>
<tr class="separator:a3baf59d15099589ff631995f129e582b"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -2124,7 +2127,7 @@ Friends</h2></td></tr>
</div>
</div>
<a id="a3baf59d15099589ff631995f129e582b" name="a3baf59d15099589ff631995f129e582b"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a3baf59d15099589ff631995f129e582b">&#9670;&nbsp;</a></span>Pos() <span class="overload">[1/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a3baf59d15099589ff631995f129e582b">&#9670;&nbsp;</a></span>Pos() <span class="overload">[1/3]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -2150,8 +2153,46 @@ Friends</h2></td></tr>
</div>
</div>
+<a id="a1b586890138da8bf0e23090bd8b34581" name="a1b586890138da8bf0e23090bd8b34581"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b586890138da8bf0e23090bd8b34581">&#9670;&nbsp;</a></span>Pos() <span class="overload">[2/3]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">xbUInt32 xb::xbString::Pos </td>
+ <td>(</td>
+ <td class="paramtype">char&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">xbUInt32&#160;</td>
+ <td class="paramname"><em>ulStartPos</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Determine position of a given character. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">c</td><td>Seek character </td></tr>
+ <tr><td class="paramname">ulStartPos</td><td>starting position for search, first position is 1 </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Position within string. Returns 0 if not found. </dd></dl>
+
+</div>
+</div>
<a id="a8705d7277b72f5aa98021e84438914da" name="a8705d7277b72f5aa98021e84438914da"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a8705d7277b72f5aa98021e84438914da">&#9670;&nbsp;</a></span>Pos() <span class="overload">[2/2]</span></h2>
+<h2 class="memtitle"><span class="permalink"><a href="#a8705d7277b72f5aa98021e84438914da">&#9670;&nbsp;</a></span>Pos() <span class="overload">[3/3]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -2835,8 +2876,8 @@ Friends</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbstring_8h_source.html">xbstring.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbstring_8cpp.html">xbstring.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbstring_8h_source.html">xbstring.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbstring_8cpp.html">xbstring.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/classxb_1_1xbTblMgr.html b/docs/doxygen/html/classxb_1_1xbTblMgr.html
index ccd4287..c94fe35 100644
--- a/docs/doxygen/html/classxb_1_1xbTblMgr.html
+++ b/docs/doxygen/html/classxb_1_1xbTblMgr.html
@@ -94,10 +94,10 @@ Public Member Functions</h2></td></tr>
<tr class="separator:aad83f5ecc184ca6cbdfc6f356b598d6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad6be32d7b3378c71d47fa27ebfe6cbf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#aad6be32d7b3378c71d47fa27ebfe6cbf">~xbTblMgr</a> ()</td></tr>
<tr class="separator:aad6be32d7b3378c71d47fa27ebfe6cbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a721f69ccc7893842422a043468ffccea"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a721f69ccc7893842422a043468ffccea">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblName)</td></tr>
-<tr class="separator:a721f69ccc7893842422a043468ffccea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a62f6841849dbe5c1768f7e90f1b7e766"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a62f6841849dbe5c1768f7e90f1b7e766">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblName, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias)</td></tr>
-<tr class="separator:a62f6841849dbe5c1768f7e90f1b7e766"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af16832ff2bfaee09265652e0fc03709a"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#af16832ff2bfaee09265652e0fc03709a">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFqTblName)</td></tr>
+<tr class="separator:af16832ff2bfaee09265652e0fc03709a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2033188e9b08778188a034a6fc90ca85"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a2033188e9b08778188a034a6fc90ca85">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFqTblName, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias)</td></tr>
+<tr class="separator:a2033188e9b08778188a034a6fc90ca85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eebffb9e8cc64141e35c2622045cb50"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a5eebffb9e8cc64141e35c2622045cb50">DisplayTableList</a> () const</td></tr>
<tr class="separator:a5eebffb9e8cc64141e35c2622045cb50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8a5d28a2ee6720a9aa74bcb45662cf5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#ad8a5d28a2ee6720a9aa74bcb45662cf5">GetDbfPtr</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias) const</td></tr>
@@ -146,12 +146,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">SetDefaultAutoCommit</a> (<a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit)</td></tr>
<tr class="memdesc:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the default auto commit. <a href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">More...</a><br /></td></tr>
<tr class="separator:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf3763faf6a8917a963213cd53af529c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">GetDefaultLogDirectory</a> () const</td></tr>
-<tr class="separator:abf3763faf6a8917a963213cd53af529c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">GetDefaultLogFileName</a> () const</td></tr>
-<tr class="separator:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84343b8645790791512d6bc22ee6c8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">SetDefaultLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory)</td></tr>
-<tr class="separator:a84343b8645790791512d6bc22ee6c8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">GetHomeDir</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut)</td></tr>
+<tr class="memdesc:abc9c06c95d71fbad8294e1ae8862cea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get home directory. <a href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">More...</a><br /></td></tr>
+<tr class="separator:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4822315bded3969b59aeeb683c373051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">GetLogDirectory</a> () const</td></tr>
+<tr class="separator:a4822315bded3969b59aeeb683c373051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaef09435be73b3111f5edbd7091d861"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">GetLogFileName</a> () const</td></tr>
+<tr class="separator:afaef09435be73b3111f5edbd7091d861"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7b992ed97281bf25b5b66f5df686225e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">SetLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sLogDirectory)</td></tr>
+<tr class="separator:a7b992ed97281bf25b5b66f5df686225e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">GetMultiUser</a> () const</td></tr>
<tr class="memdesc:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multi user setting. <a href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">More...</a><br /></td></tr>
<tr class="separator:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -213,8 +216,8 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a721f69ccc7893842422a043468ffccea" name="a721f69ccc7893842422a043468ffccea"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a721f69ccc7893842422a043468ffccea">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[1/2]</span></h2>
+<a id="af16832ff2bfaee09265652e0fc03709a" name="af16832ff2bfaee09265652e0fc03709a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af16832ff2bfaee09265652e0fc03709a">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -229,7 +232,7 @@ Static Protected Attributes</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sTblName</em>&#160;</td>
+ <td class="paramname"><em>sFqTblName</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -241,8 +244,8 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="a62f6841849dbe5c1768f7e90f1b7e766" name="a62f6841849dbe5c1768f7e90f1b7e766"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a62f6841849dbe5c1768f7e90f1b7e766">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[2/2]</span></h2>
+<a id="a2033188e9b08778188a034a6fc90ca85" name="a2033188e9b08778188a034a6fc90ca85"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2033188e9b08778188a034a6fc90ca85">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -257,7 +260,7 @@ Static Protected Attributes</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sTblName</em>, </td>
+ <td class="paramname"><em>sFqTblName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -547,8 +550,8 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="abf3763faf6a8917a963213cd53af529c" name="abf3763faf6a8917a963213cd53af529c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abf3763faf6a8917a963213cd53af529c">&#9670;&nbsp;</a></span>GetDefaultLogDirectory()</h2>
+<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
<div class="memitem">
<div class="memproto">
@@ -557,7 +560,7 @@ Static Protected Attributes</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogDirectory </td>
+ <td class="memname">xbInt16 xb::xbSsv::GetEndianType </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
@@ -570,10 +573,15 @@ Static Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Get the Endian type. </p>
+<dl class="section return"><dt>Returns</dt><dd>B - Big endian<br />
+ L - Little endian<br />
+ </dd></dl>
+
</div>
</div>
-<a id="a43878d4dc041f2a5e2398a118ccfaf79" name="a43878d4dc041f2a5e2398a118ccfaf79"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43878d4dc041f2a5e2398a118ccfaf79">&#9670;&nbsp;</a></span>GetDefaultLogFileName()</h2>
+<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
<div class="memitem">
<div class="memproto">
@@ -582,9 +590,10 @@ Static Protected Attributes</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogFileName </td>
+ <td class="memname">const char * xb::xbSsv::GetErrorMessage </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">xbInt16&#160;</td>
+ <td class="paramname"><em>iErrorCode</em></td><td>)</td>
<td> const</td>
</tr>
</table>
@@ -595,10 +604,19 @@ Static Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
+<p>Get an error message. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">iErrorCode</td><td>ErrorCode is the error number of description to be returned. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a string containing a text description for the error code. </dd></dl>
+
</div>
</div>
-<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
+<a id="abc9c06c95d71fbad8294e1ae8862cea9" name="abc9c06c95d71fbad8294e1ae8862cea9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc9c06c95d71fbad8294e1ae8862cea9">&#9670;&nbsp;</a></span>GetHomeDir()</h2>
<div class="memitem">
<div class="memproto">
@@ -607,10 +625,11 @@ Static Protected Attributes</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">xbInt16 xb::xbSsv::GetEndianType </td>
+ <td class="memname">void xb::xbSsv::GetHomeDir </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sHomeDirOut</em></td><td>)</td>
+ <td></td>
</tr>
</table>
</td>
@@ -620,15 +639,19 @@ Static Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Get the Endian type. </p>
-<dl class="section return"><dt>Returns</dt><dd>B - Big endian<br />
- L - Little endian<br />
- </dd></dl>
+<p>Get home directory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sHomeDirOut</td><td>- Output home directory for current user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
</div>
</div>
-<a id="a56961d2a67b8e7470098626ac4dac7e4" name="a56961d2a67b8e7470098626ac4dac7e4"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a56961d2a67b8e7470098626ac4dac7e4">&#9670;&nbsp;</a></span>GetErrorMessage()</h2>
+<a id="a4822315bded3969b59aeeb683c373051" name="a4822315bded3969b59aeeb683c373051"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4822315bded3969b59aeeb683c373051">&#9670;&nbsp;</a></span>GetLogDirectory()</h2>
<div class="memitem">
<div class="memproto">
@@ -637,10 +660,9 @@ Static Protected Attributes</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">const char * xb::xbSsv::GetErrorMessage </td>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogDirectory </td>
<td>(</td>
- <td class="paramtype">xbInt16&#160;</td>
- <td class="paramname"><em>iErrorCode</em></td><td>)</td>
+ <td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
@@ -651,14 +673,30 @@ Static Protected Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
-<p>Get an error message. </p>
-<dl class="params"><dt>Parameters</dt><dd>
- <table class="params">
- <tr><td class="paramname">iErrorCode</td><td>ErrorCode is the error number of description to be returned. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to a string containing a text description for the error code. </dd></dl>
+</div>
+</div>
+<a id="afaef09435be73b3111f5edbd7091d861" name="afaef09435be73b3111f5edbd7091d861"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afaef09435be73b3111f5edbd7091d861">&#9670;&nbsp;</a></span>GetLogFileName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetLogFileName </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
</div>
</div>
@@ -868,8 +906,8 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
-<a id="a84343b8645790791512d6bc22ee6c8eb" name="a84343b8645790791512d6bc22ee6c8eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a84343b8645790791512d6bc22ee6c8eb">&#9670;&nbsp;</a></span>SetDefaultLogDirectory()</h2>
+<a id="a904ec348fd029d4a76e72b8fde636108" name="a904ec348fd029d4a76e72b8fde636108"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a904ec348fd029d4a76e72b8fde636108">&#9670;&nbsp;</a></span>SetEndianType()</h2>
<div class="memitem">
<div class="memproto">
@@ -878,24 +916,26 @@ Static Protected Attributes</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void xb::xbSsv::SetDefaultLogDirectory </td>
+ <td class="memname">void xb::xbSsv::SetEndianType </td>
<td>(</td>
- <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sDefaultLogDirectory</em></td><td>)</td>
+ <td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
+<p>Set the endian type. </p>
+<p >This routine determines the Endian-ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. </p>
+
</div>
</div>
-<a id="a904ec348fd029d4a76e72b8fde636108" name="a904ec348fd029d4a76e72b8fde636108"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a904ec348fd029d4a76e72b8fde636108">&#9670;&nbsp;</a></span>SetEndianType()</h2>
+<a id="a7b992ed97281bf25b5b66f5df686225e" name="a7b992ed97281bf25b5b66f5df686225e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7b992ed97281bf25b5b66f5df686225e">&#9670;&nbsp;</a></span>SetLogDirectory()</h2>
<div class="memitem">
<div class="memproto">
@@ -904,22 +944,20 @@ Static Protected Attributes</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
- <td class="memname">void xb::xbSsv::SetEndianType </td>
+ <td class="memname">void xb::xbSsv::SetLogDirectory </td>
<td>(</td>
- <td class="paramname"></td><td>)</td>
+ <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sLogDirectory</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">inherited</span></span> </td>
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
-<p>Set the endian type. </p>
-<p >This routine determines the Endian-ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. </p>
-
</div>
</div>
<a id="aba6e59512f7172dd55dcf92059e5928c" name="aba6e59512f7172dd55dcf92059e5928c"></a>
@@ -1026,8 +1064,8 @@ Static Protected Attributes</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbtblmgr_8h_source.html">xbtblmgr.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbtblmgr_8cpp.html">xbtblmgr.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbtblmgr_8h_source.html">xbtblmgr.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbtblmgr_8cpp.html">xbtblmgr.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/classxb_1_1xbXBase.html b/docs/doxygen/html/classxb_1_1xbXBase.html
index 7699920..5d4767f 100644
--- a/docs/doxygen/html/classxb_1_1xbXBase.html
+++ b/docs/doxygen/html/classxb_1_1xbXBase.html
@@ -141,10 +141,16 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a0915aff7be4b2dd3e881f3c5d0da4baf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbXBase.html#a0915aff7be4b2dd3e881f3c5d0da4baf">xbSleep</a> (xbInt32 lMillisecs)</td></tr>
<tr class="memdesc:a0915aff7be4b2dd3e881f3c5d0da4baf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cross platform sleep function. <a href="classxb_1_1xbXBase.html#a0915aff7be4b2dd3e881f3c5d0da4baf">More...</a><br /></td></tr>
<tr class="separator:a0915aff7be4b2dd3e881f3c5d0da4baf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a721f69ccc7893842422a043468ffccea"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a721f69ccc7893842422a043468ffccea">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblName)</td></tr>
-<tr class="separator:a721f69ccc7893842422a043468ffccea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a62f6841849dbe5c1768f7e90f1b7e766"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a62f6841849dbe5c1768f7e90f1b7e766">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblName, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias)</td></tr>
-<tr class="separator:a62f6841849dbe5c1768f7e90f1b7e766"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadecb3ac460d8e94b88b2e809e22f48e"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbXBase.html#aadecb3ac460d8e94b88b2e809e22f48e">GetCmdLineOpt</a> (xbInt32 lArgc, char **argv, const char *sOptRqst, <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sParmOut)</td></tr>
+<tr class="memdesc:aadecb3ac460d8e94b88b2e809e22f48e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse commmand line options for a given parm request. <a href="classxb_1_1xbXBase.html#aadecb3ac460d8e94b88b2e809e22f48e">More...</a><br /></td></tr>
+<tr class="separator:aadecb3ac460d8e94b88b2e809e22f48e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8612e0c5334349fbceb9394b47817fd5"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbXBase.html#a8612e0c5334349fbceb9394b47817fd5">GetCmdLineOpt</a> (xbInt32 lArgc, char **argv, <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sOptRqst, <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sParmOut)</td></tr>
+<tr class="memdesc:a8612e0c5334349fbceb9394b47817fd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse commmand line options for a given parm request. <a href="classxb_1_1xbXBase.html#a8612e0c5334349fbceb9394b47817fd5">More...</a><br /></td></tr>
+<tr class="separator:a8612e0c5334349fbceb9394b47817fd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af16832ff2bfaee09265652e0fc03709a"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#af16832ff2bfaee09265652e0fc03709a">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFqTblName)</td></tr>
+<tr class="separator:af16832ff2bfaee09265652e0fc03709a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2033188e9b08778188a034a6fc90ca85"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a2033188e9b08778188a034a6fc90ca85">AddTblToTblList</a> (<a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *d, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sFqTblName, const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias)</td></tr>
+<tr class="separator:a2033188e9b08778188a034a6fc90ca85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eebffb9e8cc64141e35c2622045cb50"><td class="memItemLeft" align="right" valign="top">xbInt16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#a5eebffb9e8cc64141e35c2622045cb50">DisplayTableList</a> () const</td></tr>
<tr class="separator:a5eebffb9e8cc64141e35c2622045cb50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8a5d28a2ee6720a9aa74bcb45662cf5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbDbf.html">xbDbf</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbTblMgr.html#ad8a5d28a2ee6720a9aa74bcb45662cf5">GetDbfPtr</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias) const</td></tr>
@@ -193,12 +199,9 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">SetDefaultAutoCommit</a> (<a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit)</td></tr>
<tr class="memdesc:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the default auto commit. <a href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">More...</a><br /></td></tr>
<tr class="separator:a25542afadaaf39b4fb5a1772a29cc0bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf3763faf6a8917a963213cd53af529c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">GetDefaultLogDirectory</a> () const</td></tr>
-<tr class="separator:abf3763faf6a8917a963213cd53af529c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">GetDefaultLogFileName</a> () const</td></tr>
-<tr class="separator:a43878d4dc041f2a5e2398a118ccfaf79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84343b8645790791512d6bc22ee6c8eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">SetDefaultLogDirectory</a> (const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory)</td></tr>
-<tr class="separator:a84343b8645790791512d6bc22ee6c8eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">GetHomeDir</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut)</td></tr>
+<tr class="memdesc:abc9c06c95d71fbad8294e1ae8862cea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get home directory. <a href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">More...</a><br /></td></tr>
+<tr class="separator:abc9c06c95d71fbad8294e1ae8862cea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">GetMultiUser</a> () const</td></tr>
<tr class="memdesc:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the multi user setting. <a href="classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5">More...</a><br /></td></tr>
<tr class="separator:abd58031c5f1c3766c24d47a82e6fd9c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -282,8 +285,8 @@ Friends</h2></td></tr>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
-<a id="a721f69ccc7893842422a043468ffccea" name="a721f69ccc7893842422a043468ffccea"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a721f69ccc7893842422a043468ffccea">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[1/2]</span></h2>
+<a id="af16832ff2bfaee09265652e0fc03709a" name="af16832ff2bfaee09265652e0fc03709a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af16832ff2bfaee09265652e0fc03709a">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -301,7 +304,7 @@ Friends</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sTblName</em>&#160;</td>
+ <td class="paramname"><em>sFqTblName</em>&#160;</td>
</tr>
<tr>
<td></td>
@@ -318,8 +321,8 @@ Friends</h2></td></tr>
</div>
</div>
-<a id="a62f6841849dbe5c1768f7e90f1b7e766" name="a62f6841849dbe5c1768f7e90f1b7e766"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a62f6841849dbe5c1768f7e90f1b7e766">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[2/2]</span></h2>
+<a id="a2033188e9b08778188a034a6fc90ca85" name="a2033188e9b08778188a034a6fc90ca85"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2033188e9b08778188a034a6fc90ca85">&#9670;&nbsp;</a></span>AddTblToTblList() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@@ -337,7 +340,7 @@ Friends</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sTblName</em>, </td>
+ <td class="paramname"><em>sFqTblName</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
@@ -589,6 +592,112 @@ Friends</h2></td></tr>
</div>
</div>
+<a id="aadecb3ac460d8e94b88b2e809e22f48e" name="aadecb3ac460d8e94b88b2e809e22f48e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aadecb3ac460d8e94b88b2e809e22f48e">&#9670;&nbsp;</a></span>GetCmdLineOpt() <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">xbInt16 xb::xbXBase::GetCmdLineOpt </td>
+ <td>(</td>
+ <td class="paramtype">xbInt32&#160;</td>
+ <td class="paramname"><em>lArgc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&#160;</td>
+ <td class="paramname"><em>sArgv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>sOptRqst</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sParmOut</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Parse commmand line options for a given parm request. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">lArgc</td><td>Value passed from main( argc, argv[] ) </td></tr>
+ <tr><td class="paramname">sArgv</td><td>Valued passed from main </td></tr>
+ <tr><td class="paramname">sOptRqst</td><td>Option to search for in the arguments list </td></tr>
+ <tr><td class="paramname">sParmOut</td><td>String token immediately to the right of the the option request, if found </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 - paramater request not found<br />
+ 1 - Parameter found </dd></dl>
+
+</div>
+</div>
+<a id="a8612e0c5334349fbceb9394b47817fd5" name="a8612e0c5334349fbceb9394b47817fd5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8612e0c5334349fbceb9394b47817fd5">&#9670;&nbsp;</a></span>GetCmdLineOpt() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">xbInt16 xb::xbXBase::GetCmdLineOpt </td>
+ <td>(</td>
+ <td class="paramtype">xbInt32&#160;</td>
+ <td class="paramname"><em>lArgc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&#160;</td>
+ <td class="paramname"><em>sArgv</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sOptRqst</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sParmOut</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+<p>Parse commmand line options for a given parm request. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">lArgc</td><td>Value passed from main( argc, argv[] ) </td></tr>
+ <tr><td class="paramname">sArgv</td><td>Valued passed from main </td></tr>
+ <tr><td class="paramname">sOptRqst</td><td>Option to search for in the arguments list </td></tr>
+ <tr><td class="paramname">sParmOut</td><td>String token immediately to the right of the the option request, if found </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>0 - paramater request not found<br />
+ 1 - Parameter found </dd></dl>
+
+</div>
+</div>
<a id="a1d803a4bfc8ba0561267a0bf9e51f7d9" name="a1d803a4bfc8ba0561267a0bf9e51f7d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d803a4bfc8ba0561267a0bf9e51f7d9">&#9670;&nbsp;</a></span>GetDataDirectory()</h2>
@@ -727,56 +836,6 @@ Friends</h2></td></tr>
</div>
</div>
-<a id="abf3763faf6a8917a963213cd53af529c" name="abf3763faf6a8917a963213cd53af529c"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#abf3763faf6a8917a963213cd53af529c">&#9670;&nbsp;</a></span>GetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
-<a id="a43878d4dc041f2a5e2398a118ccfaf79" name="a43878d4dc041f2a5e2398a118ccfaf79"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a43878d4dc041f2a5e2398a118ccfaf79">&#9670;&nbsp;</a></span>GetDefaultLogFileName()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp; xb::xbSsv::GetDefaultLogFileName </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const</td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="a49cd162f066eef2b829ba7c9f6620243" name="a49cd162f066eef2b829ba7c9f6620243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49cd162f066eef2b829ba7c9f6620243">&#9670;&nbsp;</a></span>GetEndianType()</h2>
@@ -890,6 +949,41 @@ Friends</h2></td></tr>
</div>
</div>
+<a id="abc9c06c95d71fbad8294e1ae8862cea9" name="abc9c06c95d71fbad8294e1ae8862cea9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abc9c06c95d71fbad8294e1ae8862cea9">&#9670;&nbsp;</a></span>GetHomeDir()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void xb::xbSsv::GetHomeDir </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
+ <td class="paramname"><em>sHomeDirOut</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Get home directory. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">sHomeDirOut</td><td>- Output home directory for current user. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
+
+</div>
+</div>
<a id="a51d49b4d699740194b28c6ec0d0ee07b" name="a51d49b4d699740194b28c6ec0d0ee07b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51d49b4d699740194b28c6ec0d0ee07b">&#9670;&nbsp;</a></span>GetLogDirectory()</h2>
@@ -1368,32 +1462,6 @@ Friends</h2></td></tr>
</div>
</div>
-<a id="a84343b8645790791512d6bc22ee6c8eb" name="a84343b8645790791512d6bc22ee6c8eb"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a84343b8645790791512d6bc22ee6c8eb">&#9670;&nbsp;</a></span>SetDefaultLogDirectory()</h2>
-
-<div class="memitem">
-<div class="memproto">
-<table class="mlabels">
- <tr>
- <td class="mlabels-left">
- <table class="memname">
- <tr>
- <td class="memname">void xb::xbSsv::SetDefaultLogDirectory </td>
- <td>(</td>
- <td class="paramtype">const <a class="el" href="classxb_1_1xbString.html">xbString</a> &amp;&#160;</td>
- <td class="paramname"><em>sDefaultLogDirectory</em></td><td>)</td>
- <td></td>
- </tr>
- </table>
- </td>
- <td class="mlabels-right">
-<span class="mlabels"><span class="mlabel">inherited</span></span> </td>
- </tr>
-</table>
-</div><div class="memdoc">
-
-</div>
-</div>
<a id="a904ec348fd029d4a76e72b8fde636108" name="a904ec348fd029d4a76e72b8fde636108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a904ec348fd029d4a76e72b8fde636108">&#9670;&nbsp;</a></span>SetEndianType()</h2>
@@ -1762,8 +1830,8 @@ Friends</h2></td></tr>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbxbase_8h_source.html">xbxbase.h</a></li>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/core/<a class="el" href="xbxbase_8cpp.html">xbxbase.cpp</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbxbase_8h_source.html">xbxbase.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/core/<a class="el" href="xbxbase_8cpp.html">xbxbase.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/dir_25b94c3afce00ed38231227d8141f932.html b/docs/doxygen/html/dir_25b94c3afce00ed38231227d8141f932.html
index 6e22ff0..48adaeb 100644
--- a/docs/doxygen/html/dir_25b94c3afce00ed38231227d8141f932.html
+++ b/docs/doxygen/html/dir_25b94c3afce00ed38231227d8141f932.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -79,6 +79,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbcrtbl_8cpp.html">xbcrtbl.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbcrtbl_8save_8cpp.html">xbcrtbl.save.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbdelete_8cpp.html">xbdelete.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbdrpix_8cpp.html">xbdrpix.cpp</a></td></tr>
@@ -87,10 +89,14 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbinsert_8cpp.html">xbinsert.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbselect_8cpp.html">xbselect.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbset_8cpp.html">xbset.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbsql_8cpp.html">xbsql.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbstmt_8cpp.html">xbstmt.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/dir_313caf1132e152dd9b58bea13a4052ca.html b/docs/doxygen/html/dir_313caf1132e152dd9b58bea13a4052ca.html
index fd2b2f8..0a07b74 100644
--- a/docs/doxygen/html/dir_313caf1132e152dd9b58bea13a4052ca.html
+++ b/docs/doxygen/html/dir_313caf1132e152dd9b58bea13a4052ca.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -83,10 +83,6 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumpdbt_8cpp.html">xb_dumpdbt.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumphdr_8cpp.html">xb_dumphdr.cpp</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumpix_8cpp.html">xb_dumpix.cpp</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumprecs_8cpp.html">xb_dumprecs.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__execsql_8cpp.html">xb_execsql.cpp</a></td></tr>
@@ -97,8 +93,6 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__undelall_8cpp.html">xb_undelall.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__zap_8cpp.html">xb_zap.cpp</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
index 66057d7..82d0f44 100644
--- a/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
+++ b/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html b/docs/doxygen/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html
index bb40dd2..f8b8ebe 100644
--- a/docs/doxygen/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html
+++ b/docs/doxygen/html/dir_aebb8dcc11953d78e620bbef0b9e2183.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -75,6 +75,8 @@ $(function() {
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbbcd_8cpp.html">xbbcd.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbblockread_8cpp.html">xbblockread.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbdate_8cpp.html">xbdate.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbdbf_8cpp.html">xbdbf.cpp</a></td></tr>
diff --git a/docs/doxygen/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html b/docs/doxygen/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html
index 76eb467..7e0bf9d 100644
--- a/docs/doxygen/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html
+++ b/docs/doxygen/html/dir_b0856f6b0d80ccb263b2f415c91f9e17.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -77,6 +77,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbbcd_8h.html">xbbcd.h</a> <a href="xbbcd_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbblkread_8h.html">xbblkread.h</a> <a href="xbblkread_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbdate_8h.html">xbdate.h</a> <a href="xbdate_8h_source.html">[code]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbdbf_8h.html">xbdbf.h</a> <a href="xbdbf_8h_source.html">[code]</a></td></tr>
diff --git a/docs/doxygen/html/dir_d93a1d4020dea85bb71b237545b5e722.html b/docs/doxygen/html/dir_d93a1d4020dea85bb71b237545b5e722.html
index 03dde8a..3345e9b 100644
--- a/docs/doxygen/html/dir_d93a1d4020dea85bb71b237545b5e722.html
+++ b/docs/doxygen/html/dir_d93a1d4020dea85bb71b237545b5e722.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -77,6 +77,8 @@ Files</h2></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__bcd_8cpp.html">xb_test_bcd.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__blockread_8cpp.html">xb_test_blockread.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__date_8cpp.html">xb_test_date.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__dbf__v3__memos_8cpp.html">xb_test_dbf_v3_memos.cpp</a></td></tr>
diff --git a/docs/doxygen/html/dir_e931c1a3f0014e624d0645a271726ad2.html b/docs/doxygen/html/dir_e931c1a3f0014e624d0645a271726ad2.html
index 5553e32..b4eef2e 100644
--- a/docs/doxygen/html/dir_e931c1a3f0014e624d0645a271726ad2.html
+++ b/docs/doxygen/html/dir_e931c1a3f0014e624d0645a271726ad2.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples Directory Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -75,8 +75,12 @@ $(function() {
Files</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__date_8cpp.html">xb_ex_date.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__expression_8cpp.html">xb_ex_expression.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__sql_8cpp.html">xb_ex_sql.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__ssv_8cpp.html">xb_ex_ssv.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__string_8cpp.html">xb_ex_string.cpp</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__v3__create__dbf_8cpp.html">xb_ex_v3_create_dbf.cpp</a></td></tr>
diff --git a/docs/doxygen/html/files.html b/docs/doxygen/html/files.html
index d85fb7b..cbd1de4 100644
--- a/docs/doxygen/html/files.html
+++ b/docs/doxygen/html/files.html
@@ -71,109 +71,114 @@ $(function() {
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9658;</span><span id="img_0_0_" class="iconfclosed" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html" target="_self">core</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbbcd_8cpp.html" target="_self">xbbcd.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdate_8cpp.html" target="_self">xbdate.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdbf_8cpp.html" target="_self">xbdbf.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdbf3_8cpp.html" target="_self">xbdbf3.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdbf4_8cpp.html" target="_self">xbdbf4.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbexp_8cpp.html" target="_self">xbexp.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbexpnode_8cpp.html" target="_self">xbexpnode.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfields_8cpp.html" target="_self">xbfields.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfile_8cpp.html" target="_self">xbfile.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfilter_8cpp.html" target="_self">xbfilter.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfuncs_8cpp.html" target="_self">xbfuncs.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbixbase_8cpp.html" target="_self">xbixbase.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbixmdx_8cpp.html" target="_self">xbixmdx.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbixndx_8cpp.html" target="_self">xbixndx.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xblog_8cpp.html" target="_self">xblog.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbmemo_8cpp.html" target="_self">xbmemo.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbmemo3_8cpp.html" target="_self">xbmemo3.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbmemo4_8cpp.html" target="_self">xbmemo4.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_18_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbssv_8cpp.html" target="_self">xbssv.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_19_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbstring_8cpp.html" target="_self">xbstring.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_20_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbtag_8cpp.html" target="_self">xbtag.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_21_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbtblmgr_8cpp.html" target="_self">xbtblmgr.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_22_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbuda_8cpp.html" target="_self">xbuda.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_23_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbxbase_8cpp.html" target="_self">xbxbase.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbblockread_8cpp.html" target="_self">xbblockread.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdate_8cpp.html" target="_self">xbdate.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdbf_8cpp.html" target="_self">xbdbf.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdbf3_8cpp.html" target="_self">xbdbf3.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdbf4_8cpp.html" target="_self">xbdbf4.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbexp_8cpp.html" target="_self">xbexp.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbexpnode_8cpp.html" target="_self">xbexpnode.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfields_8cpp.html" target="_self">xbfields.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfile_8cpp.html" target="_self">xbfile.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfilter_8cpp.html" target="_self">xbfilter.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbfuncs_8cpp.html" target="_self">xbfuncs.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbixbase_8cpp.html" target="_self">xbixbase.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbixmdx_8cpp.html" target="_self">xbixmdx.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbixndx_8cpp.html" target="_self">xbixndx.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xblog_8cpp.html" target="_self">xblog.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbmemo_8cpp.html" target="_self">xbmemo.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbmemo3_8cpp.html" target="_self">xbmemo3.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_18_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbmemo4_8cpp.html" target="_self">xbmemo4.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_19_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbssv_8cpp.html" target="_self">xbssv.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_20_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbstring_8cpp.html" target="_self">xbstring.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_21_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbtag_8cpp.html" target="_self">xbtag.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_22_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbtblmgr_8cpp.html" target="_self">xbtblmgr.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_23_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbuda_8cpp.html" target="_self">xbuda.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_24_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbxbase_8cpp.html" target="_self">xbxbase.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9658;</span><span id="img_0_1_" class="iconfclosed" onclick="toggleFolder('0_1_')">&#160;</span><a class="el" href="dir_e931c1a3f0014e624d0645a271726ad2.html" target="_self">examples</a></td><td class="desc"></td></tr>
<tr id="row_0_1_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__date_8cpp.html" target="_self">xb_ex_date.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__sql_8cpp.html" target="_self">xb_ex_sql.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__string_8cpp.html" target="_self">xb_ex_string.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v3__create__dbf_8cpp.html" target="_self">xb_ex_v3_create_dbf.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v3__upd__dbf_8cpp.html" target="_self">xb_ex_v3_upd_dbf.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v4__create__dbf_8cpp.html" target="_self">xb_ex_v4_create_dbf.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v4__upd__dbf_8cpp.html" target="_self">xb_ex_v4_upd_dbf.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__expression_8cpp.html" target="_self">xb_ex_expression.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__sql_8cpp.html" target="_self">xb_ex_sql.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__ssv_8cpp.html" target="_self">xb_ex_ssv.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__string_8cpp.html" target="_self">xb_ex_string.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v3__create__dbf_8cpp.html" target="_self">xb_ex_v3_create_dbf.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v3__upd__dbf_8cpp.html" target="_self">xb_ex_v3_upd_dbf.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v4__create__dbf_8cpp.html" target="_self">xb_ex_v4_create_dbf.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__ex__v4__upd__dbf_8cpp.html" target="_self">xb_ex_v4_upd_dbf.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_2_" class="arrow" onclick="toggleFolder('0_2_')">&#9658;</span><span id="img_0_2_" class="iconfclosed" onclick="toggleFolder('0_2_')">&#160;</span><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html" target="_self">include</a></td><td class="desc"></td></tr>
<tr id="row_0_2_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbase_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbase_8h.html" target="_self">xbase.h</a></td><td class="desc"></td></tr>
<tr id="row_0_2_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbbcd_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbbcd_8h.html" target="_self">xbbcd.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbdate_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbdate_8h.html" target="_self">xbdate.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbdbf_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbdbf_8h.html" target="_self">xbdbf.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbexp_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbexp_8h.html" target="_self">xbexp.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbexpnode_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbexpnode_8h.html" target="_self">xbexpnode.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbfile_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbfile_8h.html" target="_self">xbfile.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbfilter_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbfilter_8h.html" target="_self">xbfilter.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbindex_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbindex_8h.html" target="_self">xbindex.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblnklst_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblnklst_8h.html" target="_self">xblnklst.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblnklstord_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblnklstord_8h.html" target="_self">xblnklstord.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblnknod_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblnknod_8h.html" target="_self">xblnknod.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblog_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblog_8h.html" target="_self">xblog.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbmemo_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbmemo_8h.html" target="_self">xbmemo.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbretcod_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbretcod_8h.html" target="_self">xbretcod.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbsql_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbsql_8h.html" target="_self">xbsql.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbssv_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbssv_8h.html" target="_self">xbssv.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbstring_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbstring_8h.html" target="_self">xbstring.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_18_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbtag_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbtag_8h.html" target="_self">xbtag.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_19_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbtblmgr_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbtblmgr_8h.html" target="_self">xbtblmgr.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_20_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbtypes_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbtypes_8h.html" target="_self">xbtypes.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_21_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbuda_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbuda_8h.html" target="_self">xbuda.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_22_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbxbase_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbxbase_8h.html" target="_self">xbxbase.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbblkread_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbblkread_8h.html" target="_self">xbblkread.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbdate_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbdate_8h.html" target="_self">xbdate.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbdbf_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbdbf_8h.html" target="_self">xbdbf.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbexp_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbexp_8h.html" target="_self">xbexp.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbexpnode_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbexpnode_8h.html" target="_self">xbexpnode.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbfile_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbfile_8h.html" target="_self">xbfile.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbfilter_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbfilter_8h.html" target="_self">xbfilter.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbindex_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbindex_8h.html" target="_self">xbindex.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblnklst_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblnklst_8h.html" target="_self">xblnklst.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblnklstord_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblnklstord_8h.html" target="_self">xblnklstord.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblnknod_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblnknod_8h.html" target="_self">xblnknod.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xblog_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xblog_8h.html" target="_self">xblog.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbmemo_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbmemo_8h.html" target="_self">xbmemo.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbretcod_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbretcod_8h.html" target="_self">xbretcod.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbsql_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbsql_8h.html" target="_self">xbsql.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbssv_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbssv_8h.html" target="_self">xbssv.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_18_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbstring_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbstring_8h.html" target="_self">xbstring.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_19_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbtag_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbtag_8h.html" target="_self">xbtag.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_20_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbtblmgr_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbtblmgr_8h.html" target="_self">xbtblmgr.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_21_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbtypes_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbtypes_8h.html" target="_self">xbtypes.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_22_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbuda_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbuda_8h.html" target="_self">xbuda.h</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_23_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="xbxbase_8h_source.html"><span class="icondoc"></span></a><a class="el" href="xbxbase_8h.html" target="_self">xbxbase.h</a></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_3_" class="arrow" onclick="toggleFolder('0_3_')">&#9658;</span><span id="img_0_3_" class="iconfclosed" onclick="toggleFolder('0_3_')">&#160;</span><a class="el" href="dir_25b94c3afce00ed38231227d8141f932.html" target="_self">sql</a></td><td class="desc"></td></tr>
<tr id="row_0_3_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbalttbl_8cpp.html" target="_self">xbalttbl.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_3_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbcrix_8cpp.html" target="_self">xbcrix.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_3_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbcrtbl_8cpp.html" target="_self">xbcrtbl.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdelete_8cpp.html" target="_self">xbdelete.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdrpix_8cpp.html" target="_self">xbdrpix.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdrptbl_8cpp.html" target="_self">xbdrptbl.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbinsert_8cpp.html" target="_self">xbinsert.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbset_8cpp.html" target="_self">xbset.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbsql_8cpp.html" target="_self">xbsql.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbcrtbl_8save_8cpp.html" target="_self">xbcrtbl.save.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdelete_8cpp.html" target="_self">xbdelete.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdrpix_8cpp.html" target="_self">xbdrpix.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbdrptbl_8cpp.html" target="_self">xbdrptbl.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbinsert_8cpp.html" target="_self">xbinsert.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbselect_8cpp.html" target="_self">xbselect.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbset_8cpp.html" target="_self">xbset.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbsql_8cpp.html" target="_self">xbsql.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_11_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xbstmt_8cpp.html" target="_self">xbstmt.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_4_" class="arrow" onclick="toggleFolder('0_4_')">&#9658;</span><span id="img_0_4_" class="iconfclosed" onclick="toggleFolder('0_4_')">&#160;</span><a class="el" href="dir_d93a1d4020dea85bb71b237545b5e722.html" target="_self">tests</a></td><td class="desc"></td></tr>
<tr id="row_0_4_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="tstfuncs_8cpp.html" target="_self">tstfuncs.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_4_1_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__bcd_8cpp.html" target="_self">xb_test_bcd.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__date_8cpp.html" target="_self">xb_test_date.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v3__memos_8cpp.html" target="_self">xb_test_dbf_v3_memos.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v3__nomemos_8cpp.html" target="_self">xb_test_dbf_v3_nomemos.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v4__memos_8cpp.html" target="_self">xb_test_dbf_v4_memos.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v4__nomemos_8cpp.html" target="_self">xb_test_dbf_v4_nomemos.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__expnode_8cpp.html" target="_self">xb_test_expnode.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__expression_8cpp.html" target="_self">xb_test_expression.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__file_8cpp.html" target="_self">xb_test_file.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__filter_8cpp.html" target="_self">xb_test_filter.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__funcs_8cpp.html" target="_self">xb_test_funcs.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__linklist_8cpp.html" target="_self">xb_test_linklist.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__lock_8cpp.html" target="_self">xb_test_lock.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__lock2_8cpp.html" target="_self">xb_test_lock2.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__log_8cpp.html" target="_self">xb_test_log.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__mdx_8cpp.html" target="_self">xb_test_mdx.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__ndx_8cpp.html" target="_self">xb_test_ndx.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_18_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__sql_8cpp.html" target="_self">xb_test_sql.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_19_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__string_8cpp.html" target="_self">xb_test_string.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_20_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__tblmgr_8cpp.html" target="_self">xb_test_tblmgr.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_21_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__uda_8cpp.html" target="_self">xb_test_uda.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_22_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__xbase_8cpp.html" target="_self">xb_test_xbase.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_2_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__blockread_8cpp.html" target="_self">xb_test_blockread.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_3_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__date_8cpp.html" target="_self">xb_test_date.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_4_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v3__memos_8cpp.html" target="_self">xb_test_dbf_v3_memos.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_5_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v3__nomemos_8cpp.html" target="_self">xb_test_dbf_v3_nomemos.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_6_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v4__memos_8cpp.html" target="_self">xb_test_dbf_v4_memos.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_7_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__dbf__v4__nomemos_8cpp.html" target="_self">xb_test_dbf_v4_nomemos.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_8_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__expnode_8cpp.html" target="_self">xb_test_expnode.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_9_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__expression_8cpp.html" target="_self">xb_test_expression.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_10_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__file_8cpp.html" target="_self">xb_test_file.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_11_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__filter_8cpp.html" target="_self">xb_test_filter.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_12_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__funcs_8cpp.html" target="_self">xb_test_funcs.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_13_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__linklist_8cpp.html" target="_self">xb_test_linklist.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_14_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__lock_8cpp.html" target="_self">xb_test_lock.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_15_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__lock2_8cpp.html" target="_self">xb_test_lock2.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_16_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__log_8cpp.html" target="_self">xb_test_log.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_17_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__mdx_8cpp.html" target="_self">xb_test_mdx.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_18_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__ndx_8cpp.html" target="_self">xb_test_ndx.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_19_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__sql_8cpp.html" target="_self">xb_test_sql.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_20_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__string_8cpp.html" target="_self">xb_test_string.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_21_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__tblmgr_8cpp.html" target="_self">xb_test_tblmgr.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_22_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__uda_8cpp.html" target="_self">xb_test_uda.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_23_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__test__xbase_8cpp.html" target="_self">xb_test_xbase.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_5_" class="arrow" onclick="toggleFolder('0_5_')">&#9658;</span><span id="img_0_5_" class="iconfclosed" onclick="toggleFolder('0_5_')">&#160;</span><a class="el" href="dir_313caf1132e152dd9b58bea13a4052ca.html" target="_self">utils</a></td><td class="desc"></td></tr>
<tr id="row_0_5_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__cfg__check_8cpp.html" target="_self">xb_cfg_check.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_5_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__copydbf_8cpp.html" target="_self">xb_copydbf.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_5_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__dbfutil_8cpp.html" target="_self">xb_dbfutil.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_5_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__deletall_8cpp.html" target="_self">xb_deletall.cpp</a></td><td class="desc"></td></tr>
<tr id="row_0_5_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__dumpdbt_8cpp.html" target="_self">xb_dumpdbt.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__dumphdr_8cpp.html" target="_self">xb_dumphdr.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__dumpix_8cpp.html" target="_self">xb_dumpix.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__dumprecs_8cpp.html" target="_self">xb_dumprecs.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__execsql_8cpp.html" target="_self">xb_execsql.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__pack_8cpp.html" target="_self">xb_pack.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_10_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__tblinfo_8cpp.html" target="_self">xb_tblinfo.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_11_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__undelall_8cpp.html" target="_self">xb_undelall.cpp</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_12_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__zap_8cpp.html" target="_self">xb_zap.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__dumprecs_8cpp.html" target="_self">xb_dumprecs.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__execsql_8cpp.html" target="_self">xb_execsql.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__pack_8cpp.html" target="_self">xb_pack.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__tblinfo_8cpp.html" target="_self">xb_tblinfo.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="xb__undelall_8cpp.html" target="_self">xb_undelall.cpp</a></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/docs/doxygen/html/functions.html b/docs/doxygen/html/functions.html
index 4332e69..6e4da8b 100644
--- a/docs/doxygen/html/functions.html
+++ b/docs/doxygen/html/functions.html
@@ -68,7 +68,7 @@ $(function() {
<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
<li>Abort()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a4edcf31390fbdc8c3558004770fd9f2f">xb::xbDbf</a></li>
<li>AddBackSlash()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a6c4fdb689d27a9d19a0b5b4236e1ca62">xb::xbString</a></li>
-<li>AddTblToTblList()&#160;:&#160;<a class="el" href="classxb_1_1xbTblMgr.html#a721f69ccc7893842422a043468ffccea">xb::xbTblMgr</a></li>
+<li>AddTblToTblList()&#160;:&#160;<a class="el" href="classxb_1_1xbTblMgr.html#af16832ff2bfaee09265652e0fc03709a">xb::xbTblMgr</a></li>
<li>Append()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a8f202e4798491f2ae9ce51ff58dd5815">xb::xbString</a></li>
<li>AppendRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a5b412dd796241673eb1aa2c93513d69b">xb::xbDbf</a></li>
<li>Assign()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a85bef82dfa22122a1ab8dfe58a107d96">xb::xbString</a></li>
diff --git a/docs/doxygen/html/functions_func.html b/docs/doxygen/html/functions_func.html
index e26f40d..47e8f65 100644
--- a/docs/doxygen/html/functions_func.html
+++ b/docs/doxygen/html/functions_func.html
@@ -68,7 +68,7 @@ $(function() {
<h3><a id="index_a" name="index_a"></a>- a -</h3><ul>
<li>Abort()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a4edcf31390fbdc8c3558004770fd9f2f">xb::xbDbf</a></li>
<li>AddBackSlash()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a6c4fdb689d27a9d19a0b5b4236e1ca62">xb::xbString</a></li>
-<li>AddTblToTblList()&#160;:&#160;<a class="el" href="classxb_1_1xbTblMgr.html#a721f69ccc7893842422a043468ffccea">xb::xbTblMgr</a></li>
+<li>AddTblToTblList()&#160;:&#160;<a class="el" href="classxb_1_1xbTblMgr.html#af16832ff2bfaee09265652e0fc03709a">xb::xbTblMgr</a></li>
<li>Append()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a8f202e4798491f2ae9ce51ff58dd5815">xb::xbString</a></li>
<li>AppendRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a5b412dd796241673eb1aa2c93513d69b">xb::xbDbf</a></li>
<li>Assign()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a85bef82dfa22122a1ab8dfe58a107d96">xb::xbString</a></li>
diff --git a/docs/doxygen/html/functions_func_g.html b/docs/doxygen/html/functions_func_g.html
index 736af49..18ab1bc 100644
--- a/docs/doxygen/html/functions_func_g.html
+++ b/docs/doxygen/html/functions_func_g.html
@@ -68,7 +68,9 @@ $(function() {
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>GetAutoCommit()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ae0c00226fd2ea7a67f101e795467ed68">xb::xbDbf</a></li>
<li>GetBlockSize()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a638e14262410a1627819f016a16cdce2">xb::xbFile</a></li>
+<li>GetBof()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ad0827a43c025c1184ffebab74cc9e779">xb::xbDbf</a></li>
<li>GetCharacter()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a685187a5f8401b322fc61f3fbe56330d">xb::xbString</a></li>
+<li>GetCmdLineOpt()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#aadecb3ac460d8e94b88b2e809e22f48e">xb::xbXBase</a></li>
<li>GetCurRecNo()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503">xb::xbDbf</a></li>
<li>GetDataDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a1d803a4bfc8ba0561267a0bf9e51f7d9">xb::xbSsv</a></li>
<li>GetDateField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#af78ef1fba949463ff7f829d3cffc4555">xb::xbDbf</a></li>
@@ -76,11 +78,10 @@ $(function() {
<li>GetDbfStatus()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6">xb::xbDbf</a></li>
<li>GetDefaultAutoCommit()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a6982f973e81587b04916f4509746aaf5">xb::xbSsv</a></li>
<li>GetDefaultDateFormat()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a6fbb9c3a550ab0b3378f9586a57791d2">xb::xbSsv</a></li>
-<li>GetDefaultLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">xb::xbSsv</a></li>
-<li>GetDefaultLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">xb::xbSsv</a></li>
<li>GetDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#acd0fb2166b2bff7e8a1cf65a7bc8be1e">xb::xbFile</a></li>
<li>GetDoubleField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a4556041a7ff2f6b6f986729901c11f08">xb::xbDbf</a></li>
<li>GetEndianType()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a49cd162f066eef2b829ba7c9f6620243">xb::xbSsv</a></li>
+<li>GetEof()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a256dc1f98626fa77da24e91a38ab5b4d">xb::xbDbf</a></li>
<li>GetErrorMessage()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a56961d2a67b8e7470098626ac4dac7e4">xb::xbSsv</a></li>
<li>GetField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a9a0fcf7e2040ab483e3807927833cb26">xb::xbDbf</a></li>
<li>GetFieldCnt()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e">xb::xbDbf</a></li>
@@ -88,7 +89,7 @@ $(function() {
<li>GetFieldLen()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#adda4302b58cc6109b048f19d9b68bbd4">xb::xbDbf</a></li>
<li>GetFieldName()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a5e3e4368bfba1724c016b8859023e34c">xb::xbDbf</a></li>
<li>GetFieldNo()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#aed9113b5095c6df1b9c854cbd0d8047b">xb::xbDbf</a></li>
-<li>GetFieldType()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a181db879f1a75f93a34c03513a0b2fea">xb::xbDbf</a></li>
+<li>GetFieldType()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a5143973e4f165651152aa13c8fd45f84">xb::xbDbf</a></li>
<li>GetFileDirPart()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a60c53998e3d1b694134b20a87bc9bf5a">xb::xbFile</a></li>
<li>GetFileExtPart()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a57a9222e5cbb51019d4eeb2c3ac89fa2">xb::xbFile</a></li>
<li>GetFileMtime()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a02df78f4c90313243f508fc56b95aba8">xb::xbFile</a></li>
@@ -96,14 +97,16 @@ $(function() {
<li>GetFileNamePart()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a81422b3dd52763d2cc6c77237ec9af0a">xb::xbFile</a></li>
<li>GetFileSize()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a50b63c39e49d44e52078038027b24cc5">xb::xbFile</a></li>
<li>GetFileType()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a5548236d38d43b89ae29b9a015b1f678">xb::xbFile</a></li>
-<li>GetFirstRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a">xb::xbDbf</a></li>
+<li>GetFirstRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a6fc5b8a3e2f177d5ceaf9d975cbb5226">xb::xbDbf</a></li>
<li>GetFloatField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a3443f646038ced14425f067a59c0f2da">xb::xbDbf</a></li>
<li>GetFqFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a31b4e641f93206ba23e2a5a27491dcd4">xb::xbFile</a></li>
<li>GetFunctionInfo()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1">xb::xbXBase</a></li>
+<li>GetHeaderLen()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb">xb::xbDbf</a></li>
+<li>GetHomeDir()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">xb::xbSsv</a></li>
<li>GetLastPos()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#ac7698665f44413a5e99a5b5bc573c6df">xb::xbString</a></li>
<li>GetLastRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964">xb::xbDbf</a></li>
-<li>GetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b">xb::xbXBase</a></li>
-<li>GetLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af">xb::xbXBase</a></li>
+<li>GetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">xb::xbSsv</a>, <a class="el" href="classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b">xb::xbXBase</a></li>
+<li>GetLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">xb::xbSsv</a>, <a class="el" href="classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af">xb::xbXBase</a></li>
<li>GetLogFqFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ab5d63cd7d9137eba8a1d4d9c3df522b7">xb::xbXBase</a></li>
<li>GetLogicalField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a3254f091fc4a1404abed3dd2bcdd6ce6">xb::xbDbf</a></li>
<li>GetLogStatus()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ade34cd72c2a7e70fb55429a8a6f6c028">xb::xbXBase</a></li>
diff --git a/docs/doxygen/html/functions_func_p.html b/docs/doxygen/html/functions_func_p.html
index 06b46c1..3985e96 100644
--- a/docs/doxygen/html/functions_func_p.html
+++ b/docs/doxygen/html/functions_func_p.html
@@ -69,7 +69,7 @@ $(function() {
<li>Pack()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a93bb14ad0451355bfa3379128120988a">xb::xbDbf</a></li>
<li>PadLeft()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a6a09cfed22066b0c72432f26960f9e7b">xb::xbString</a></li>
<li>PadRight()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#aba13f0c77eb6c4a22996039569fad284">xb::xbString</a></li>
-<li>Pos()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b">xb::xbString</a></li>
+<li>Pos()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a1b586890138da8bf0e23090bd8b34581">xb::xbString</a></li>
<li>PutAt()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a1bae6fa8f608261f6e889616482f6e39">xb::xbString</a></li>
<li>PutDateField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a873f04af528a9d81e6a367a59d998ec5">xb::xbDbf</a></li>
<li>PutDoubleField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a4f34842d7e8ff1f16992c2ece2fc38a5">xb::xbDbf</a></li>
diff --git a/docs/doxygen/html/functions_func_s.html b/docs/doxygen/html/functions_func_s.html
index 2068078..99e6b3c 100644
--- a/docs/doxygen/html/functions_func_s.html
+++ b/docs/doxygen/html/functions_func_s.html
@@ -72,12 +72,12 @@ $(function() {
<li>SetDataDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a57caaaadfbd089d9a58ecfcb50c88a6c">xb::xbSsv</a></li>
<li>SetDefaultAutoCommit()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">xb::xbSsv</a></li>
<li>SetDefaultDateFormat()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a5f74db23f8902846d581935c7db73f9c">xb::xbSsv</a></li>
-<li>SetDefaultLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">xb::xbSsv</a></li>
<li>SetDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#ae78a85255488bc78964c16946dbaead3">xb::xbFile</a></li>
<li>SetEndianType()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a904ec348fd029d4a76e72b8fde636108">xb::xbSsv</a></li>
<li>SetFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a5419eb27e56822f828b2b88a9502a636">xb::xbFile</a></li>
<li>SetFqFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#aee832fa11db2077a532f49e1329bd05a">xb::xbFile</a></li>
-<li>SetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292">xb::xbXBase</a></li>
+<li>SetHomeFolders()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a">xb::xbFile</a></li>
+<li>SetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">xb::xbSsv</a>, <a class="el" href="classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292">xb::xbXBase</a></li>
<li>SetLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a94010b88a309315ef980715eb581336c">xb::xbXBase</a></li>
<li>SetLogSize()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a666a0cb5b76ec7a9a3677d339e0c6b42">xb::xbXBase</a></li>
<li>SetMultiUser()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#aba6e59512f7172dd55dcf92059e5928c">xb::xbSsv</a></li>
diff --git a/docs/doxygen/html/functions_g.html b/docs/doxygen/html/functions_g.html
index 601e48d..d67e26c 100644
--- a/docs/doxygen/html/functions_g.html
+++ b/docs/doxygen/html/functions_g.html
@@ -68,7 +68,9 @@ $(function() {
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>GetAutoCommit()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ae0c00226fd2ea7a67f101e795467ed68">xb::xbDbf</a></li>
<li>GetBlockSize()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a638e14262410a1627819f016a16cdce2">xb::xbFile</a></li>
+<li>GetBof()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ad0827a43c025c1184ffebab74cc9e779">xb::xbDbf</a></li>
<li>GetCharacter()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a685187a5f8401b322fc61f3fbe56330d">xb::xbString</a></li>
+<li>GetCmdLineOpt()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#aadecb3ac460d8e94b88b2e809e22f48e">xb::xbXBase</a></li>
<li>GetCurRecNo()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503">xb::xbDbf</a></li>
<li>GetDataDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a1d803a4bfc8ba0561267a0bf9e51f7d9">xb::xbSsv</a></li>
<li>GetDateField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#af78ef1fba949463ff7f829d3cffc4555">xb::xbDbf</a></li>
@@ -76,11 +78,10 @@ $(function() {
<li>GetDbfStatus()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6">xb::xbDbf</a></li>
<li>GetDefaultAutoCommit()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a6982f973e81587b04916f4509746aaf5">xb::xbSsv</a></li>
<li>GetDefaultDateFormat()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a6fbb9c3a550ab0b3378f9586a57791d2">xb::xbSsv</a></li>
-<li>GetDefaultLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c">xb::xbSsv</a></li>
-<li>GetDefaultLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79">xb::xbSsv</a></li>
<li>GetDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#acd0fb2166b2bff7e8a1cf65a7bc8be1e">xb::xbFile</a></li>
<li>GetDoubleField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a4556041a7ff2f6b6f986729901c11f08">xb::xbDbf</a></li>
<li>GetEndianType()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a49cd162f066eef2b829ba7c9f6620243">xb::xbSsv</a></li>
+<li>GetEof()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a256dc1f98626fa77da24e91a38ab5b4d">xb::xbDbf</a></li>
<li>GetErrorMessage()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a56961d2a67b8e7470098626ac4dac7e4">xb::xbSsv</a></li>
<li>GetField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a9a0fcf7e2040ab483e3807927833cb26">xb::xbDbf</a></li>
<li>GetFieldCnt()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e">xb::xbDbf</a></li>
@@ -88,7 +89,7 @@ $(function() {
<li>GetFieldLen()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#adda4302b58cc6109b048f19d9b68bbd4">xb::xbDbf</a></li>
<li>GetFieldName()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a5e3e4368bfba1724c016b8859023e34c">xb::xbDbf</a></li>
<li>GetFieldNo()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#aed9113b5095c6df1b9c854cbd0d8047b">xb::xbDbf</a></li>
-<li>GetFieldType()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a181db879f1a75f93a34c03513a0b2fea">xb::xbDbf</a></li>
+<li>GetFieldType()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a5143973e4f165651152aa13c8fd45f84">xb::xbDbf</a></li>
<li>GetFileDirPart()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a60c53998e3d1b694134b20a87bc9bf5a">xb::xbFile</a></li>
<li>GetFileExtPart()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a57a9222e5cbb51019d4eeb2c3ac89fa2">xb::xbFile</a></li>
<li>GetFileMtime()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a02df78f4c90313243f508fc56b95aba8">xb::xbFile</a></li>
@@ -96,14 +97,16 @@ $(function() {
<li>GetFileNamePart()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a81422b3dd52763d2cc6c77237ec9af0a">xb::xbFile</a></li>
<li>GetFileSize()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a50b63c39e49d44e52078038027b24cc5">xb::xbFile</a></li>
<li>GetFileType()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a5548236d38d43b89ae29b9a015b1f678">xb::xbFile</a></li>
-<li>GetFirstRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a">xb::xbDbf</a></li>
+<li>GetFirstRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a6fc5b8a3e2f177d5ceaf9d975cbb5226">xb::xbDbf</a></li>
<li>GetFloatField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a3443f646038ced14425f067a59c0f2da">xb::xbDbf</a></li>
<li>GetFqFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a31b4e641f93206ba23e2a5a27491dcd4">xb::xbFile</a></li>
<li>GetFunctionInfo()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1">xb::xbXBase</a></li>
+<li>GetHeaderLen()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb">xb::xbDbf</a></li>
+<li>GetHomeDir()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9">xb::xbSsv</a></li>
<li>GetLastPos()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#ac7698665f44413a5e99a5b5bc573c6df">xb::xbString</a></li>
<li>GetLastRecord()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964">xb::xbDbf</a></li>
-<li>GetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b">xb::xbXBase</a></li>
-<li>GetLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af">xb::xbXBase</a></li>
+<li>GetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051">xb::xbSsv</a>, <a class="el" href="classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b">xb::xbXBase</a></li>
+<li>GetLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861">xb::xbSsv</a>, <a class="el" href="classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af">xb::xbXBase</a></li>
<li>GetLogFqFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ab5d63cd7d9137eba8a1d4d9c3df522b7">xb::xbXBase</a></li>
<li>GetLogicalField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a3254f091fc4a1404abed3dd2bcdd6ce6">xb::xbDbf</a></li>
<li>GetLogStatus()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#ade34cd72c2a7e70fb55429a8a6f6c028">xb::xbXBase</a></li>
diff --git a/docs/doxygen/html/functions_p.html b/docs/doxygen/html/functions_p.html
index b86c965..a2d9678 100644
--- a/docs/doxygen/html/functions_p.html
+++ b/docs/doxygen/html/functions_p.html
@@ -71,12 +71,13 @@ $(function() {
<li>PadRight()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#aba13f0c77eb6c4a22996039569fad284">xb::xbString</a></li>
<li>pDbf&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6">xb::xbTblList</a></li>
<li>pNext&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c">xb::xbTblList</a></li>
-<li>Pos()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b">xb::xbString</a></li>
+<li>Pos()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a1b586890138da8bf0e23090bd8b34581">xb::xbString</a></li>
+<li>psFqTblName&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d">xb::xbTblList</a></li>
<li>psTblAlias&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">xb::xbTblList</a></li>
<li>psTblName&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">xb::xbTblList</a></li>
<li>PutAt()&#160;:&#160;<a class="el" href="classxb_1_1xbString.html#a1bae6fa8f608261f6e889616482f6e39">xb::xbString</a></li>
<li>PutDateField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a873f04af528a9d81e6a367a59d998ec5">xb::xbDbf</a></li>
-<li>PutDoubleField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ae695bbc71c19abc71c0c5f2ff2e1f971">xb::xbDbf</a></li>
+<li>PutDoubleField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a4f34842d7e8ff1f16992c2ece2fc38a5">xb::xbDbf</a></li>
<li>PutField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a7862215dd2f83a1c488e539cd1f9aec0">xb::xbDbf</a></li>
<li>PutFloatField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#a64161eb50d72e424b11bf3732657ebd8">xb::xbDbf</a></li>
<li>PutLogicalField()&#160;:&#160;<a class="el" href="classxb_1_1xbDbf.html#ab39ac4269ac63bc7ea4f638733bb17f0">xb::xbDbf</a></li>
diff --git a/docs/doxygen/html/functions_s.html b/docs/doxygen/html/functions_s.html
index 23c3f57..c0cb82b 100644
--- a/docs/doxygen/html/functions_s.html
+++ b/docs/doxygen/html/functions_s.html
@@ -74,12 +74,12 @@ $(function() {
<li>SetDataDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a57caaaadfbd089d9a58ecfcb50c88a6c">xb::xbSsv</a></li>
<li>SetDefaultAutoCommit()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd">xb::xbSsv</a></li>
<li>SetDefaultDateFormat()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a5f74db23f8902846d581935c7db73f9c">xb::xbSsv</a></li>
-<li>SetDefaultLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb">xb::xbSsv</a></li>
<li>SetDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#ae78a85255488bc78964c16946dbaead3">xb::xbFile</a></li>
<li>SetEndianType()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a904ec348fd029d4a76e72b8fde636108">xb::xbSsv</a></li>
<li>SetFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a5419eb27e56822f828b2b88a9502a636">xb::xbFile</a></li>
<li>SetFqFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#aee832fa11db2077a532f49e1329bd05a">xb::xbFile</a></li>
-<li>SetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292">xb::xbXBase</a></li>
+<li>SetHomeFolders()&#160;:&#160;<a class="el" href="classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a">xb::xbFile</a></li>
+<li>SetLogDirectory()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e">xb::xbSsv</a>, <a class="el" href="classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292">xb::xbXBase</a></li>
<li>SetLogFileName()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a94010b88a309315ef980715eb581336c">xb::xbXBase</a></li>
<li>SetLogSize()&#160;:&#160;<a class="el" href="classxb_1_1xbXBase.html#a666a0cb5b76ec7a9a3677d339e0c6b42">xb::xbXBase</a></li>
<li>SetMultiUser()&#160;:&#160;<a class="el" href="classxb_1_1xbSsv.html#aba6e59512f7172dd55dcf92059e5928c">xb::xbSsv</a></li>
diff --git a/docs/doxygen/html/functions_vars.html b/docs/doxygen/html/functions_vars.html
index 36172a1..557c2b3 100644
--- a/docs/doxygen/html/functions_vars.html
+++ b/docs/doxygen/html/functions_vars.html
@@ -98,6 +98,7 @@ $(function() {
<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>pDbf&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6">xb::xbTblList</a></li>
<li>pNext&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c">xb::xbTblList</a></li>
+<li>psFqTblName&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d">xb::xbTblList</a></li>
<li>psTblAlias&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">xb::xbTblList</a></li>
<li>psTblName&#160;:&#160;<a class="el" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">xb::xbTblList</a></li>
</ul>
diff --git a/docs/doxygen/html/globals.html b/docs/doxygen/html/globals.html
index bae955d..b12ae53 100644
--- a/docs/doxygen/html/globals.html
+++ b/docs/doxygen/html/globals.html
@@ -102,7 +102,16 @@ $(function() {
<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
-<li>main()&#160;:&#160;<a class="el" href="xb__deletall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_deletall.cpp</a>, <a class="el" href="xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_mdx.cpp</a>, <a class="el" href="xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_ndx.cpp</a>, <a class="el" href="xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_sql.cpp</a>, <a class="el" href="xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f">xb_test_string.cpp</a>, <a class="el" href="xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_tblmgr.cpp</a>, <a class="el" href="xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_uda.cpp</a>, <a class="el" href="xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_xbase.cpp</a>, <a class="el" href="xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_cfg_check.cpp</a>, <a class="el" href="xb__copydbf_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_copydbf.cpp</a>, <a class="el" href="xb__dbfutil_8cpp.html#a57e6ea63b6f0a962708db29159629a6d">xb_dbfutil.cpp</a>, <a class="el" href="xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_log.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumphdr_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumphdr.cpp</a>, <a class="el" href="xb__dumpix_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumpix.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumprecs.cpp</a>, <a class="el" href="xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_execsql.cpp</a>, <a class="el" href="xb__pack_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_undelall.cpp</a>, <a class="el" href="xb__zap_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_zap.cpp</a>, <a class="el" href="xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_memos.cpp</a>, <a class="el" href="xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_ex_sql.cpp</a>, <a class="el" href="xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_string.cpp</a>, <a class="el" href="xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_create_dbf.cpp</a>, <a class="el" href="xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_upd_dbf.cpp</a>, <a class="el" href="xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_create_dbf.cpp</a>, <a class="el" href="xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_upd_dbf.cpp</a>, <a class="el" href="xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_bcd.cpp</a>, <a class="el" href="xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_date.cpp</a>, <a class="el" href="xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_memos.cpp</a>, <a class="el" href="xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_nomemos.cpp</a>, <a class="el" href="xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_date.cpp</a>, <a class="el" href="xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_nomemos.cpp</a>, <a class="el" href="xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expnode.cpp</a>, <a class="el" href="xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expression.cpp</a>, <a class="el" href="xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_file.cpp</a>, <a class="el" href="xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_filter.cpp</a>, <a class="el" href="xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_funcs.cpp</a>, <a class="el" href="xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_linklist.cpp</a>, <a class="el" href="xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock.cpp</a>, <a class="el" href="xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock2.cpp</a></li>
+<li>main()&#160;:&#160;<a class="el" href="xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_cfg_check.cpp</a>, <a class="el" href="xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock.cpp</a>, <a class="el" href="xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock2.cpp</a>, <a class="el" href="xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_log.cpp</a>, <a class="el" href="xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_mdx.cpp</a>, <a class="el" href="xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_ndx.cpp</a>, <a class="el" href="xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_sql.cpp</a>, <a class="el" href="xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f">xb_test_string.cpp</a>, <a class="el" href="xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_tblmgr.cpp</a>, <a class="el" href="xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_uda.cpp</a>, <a class="el" href="xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_xbase.cpp</a>, <a class="el" href="xb__ex__expression_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_expression.cpp</a>, <a class="el" href="xb__copydbf_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_copydbf.cpp</a>, <a class="el" href="xb__dbfutil_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_dbfutil.cpp</a>, <a class="el" href="xb__deletall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_deletall.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_dumprecs.cpp</a>, <a class="el" href="xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_execsql.cpp</a>, <a class="el" href="xb__pack_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_undelall.cpp</a>, <a class="el" href="xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_funcs.cpp</a>, <a class="el" href="xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_date.cpp</a>, <a class="el" href="xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_ex_sql.cpp</a>, <a class="el" href="xb__ex__ssv_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_ex_ssv.cpp</a>, <a class="el" href="xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_string.cpp</a>, <a class="el" href="xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_create_dbf.cpp</a>, <a class="el" href="xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_upd_dbf.cpp</a>, <a class="el" href="xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_create_dbf.cpp</a>, <a class="el" href="xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_upd_dbf.cpp</a>, <a class="el" href="xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_bcd.cpp</a>, <a class="el" href="xb__test__blockread_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_blockread.cpp</a>, <a class="el" href="xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_date.cpp</a>, <a class="el" href="xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_memos.cpp</a>, <a class="el" href="xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_nomemos.cpp</a>, <a class="el" href="xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_memos.cpp</a>, <a class="el" href="xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_nomemos.cpp</a>, <a class="el" href="xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expnode.cpp</a>, <a class="el" href="xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expression.cpp</a>, <a class="el" href="xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_file.cpp</a>, <a class="el" href="xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_filter.cpp</a>, <a class="el" href="xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_linklist.cpp</a></li>
+<li>MyDbfRec&#160;:&#160;<a class="el" href="xb__test__blockread_8cpp.html#af68c3291a63fdf20ffa0e477460d148e">xb_test_blockread.cpp</a></li>
+<li>MyV4Record&#160;:&#160;<a class="el" href="xb__ex__expression_8cpp.html#a2122b9562802e2fd799b20454000dc99">xb_ex_expression.cpp</a></li>
+</ul>
+
+
+<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
+<li>PrintHelp()&#160;:&#160;<a class="el" href="xb__dbfutil_8cpp.html#a9c55a055e1cd4249c7f47e19dc7ac564">xb_dbfutil.cpp</a>, <a class="el" href="xb__deletall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_deletall.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_dumprecs.cpp</a>, <a class="el" href="xb__pack_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_undelall.cpp</a>, <a class="el" href="xb__copydbf_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_copydbf.cpp</a></li>
+<li>PrintResult()&#160;:&#160;<a class="el" href="xb__ex__expression_8cpp.html#a3234afc912211aec54c10d363d28cbda">xb_ex_expression.cpp</a></li>
+<li>PrintVersion()&#160;:&#160;<a class="el" href="xb__copydbf_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_copydbf.cpp</a>, <a class="el" href="xb__dbfutil_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_dbfutil.cpp</a>, <a class="el" href="xb__deletall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_deletall.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_dumprecs.cpp</a>, <a class="el" href="xb__pack_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_undelall.cpp</a></li>
</ul>
@@ -123,6 +132,7 @@ $(function() {
<li>XB_ACTIVE_RECS&#160;:&#160;<a class="el" href="xbdbf_8h.html#a1c44bb25bf2e23a3a9d3d2312df0b592">xbdbf.h</a></li>
<li>XB_ALL_RECS&#160;:&#160;<a class="el" href="xbdbf_8h.html#a8bd17730da3ba5c55a6a07bc482dd0e4">xbdbf.h</a></li>
<li>XB_ALREADY_OPEN&#160;:&#160;<a class="el" href="xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f">xbretcod.h</a></li>
+<li>XB_BLOCKREAD_NOT_ENABLED&#160;:&#160;<a class="el" href="xbretcod_8h.html#aae9241d91cfb37f5d236128b3bce0a4a">xbretcod.h</a></li>
<li>XB_BOF&#160;:&#160;<a class="el" href="xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f">xbretcod.h</a></li>
<li>XB_CHAR_FLD&#160;:&#160;<a class="el" href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">xbdbf.h</a></li>
<li>XB_CHAREOF&#160;:&#160;<a class="el" href="xbdbf_8h.html#ada1115f596131888c04df61546b198c4">xbdbf.h</a></li>
@@ -133,6 +143,7 @@ $(function() {
<li>XB_DBF_FILE_NOT_OPEN&#160;:&#160;<a class="el" href="xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2">xbretcod.h</a></li>
<li>XB_DELETE_FAILED&#160;:&#160;<a class="el" href="xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2">xbretcod.h</a></li>
<li>XB_DELETED_RECS&#160;:&#160;<a class="el" href="xbdbf_8h.html#acc0a441854ed92b9d65d1181a97cad43">xbdbf.h</a></li>
+<li>XB_DIRECTORY_ERROR&#160;:&#160;<a class="el" href="xbretcod_8h.html#af532df74147ce2d872f61abfee49c53e">xbretcod.h</a></li>
<li>XB_DONTOVERLAY&#160;:&#160;<a class="el" href="xbdbf_8h.html#a7b797840abdb3291373d15978103a778">xbdbf.h</a></li>
<li>XB_DUP_TABLE_OR_ALIAS&#160;:&#160;<a class="el" href="xbretcod_8h.html#ac18036408d10e5eee1bf76cf92352b95">xbretcod.h</a></li>
<li>XB_EMPTY&#160;:&#160;<a class="el" href="xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29">xbretcod.h</a></li>
@@ -175,6 +186,7 @@ $(function() {
<li>XB_LOCK_FAILED&#160;:&#160;<a class="el" href="xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1">xbretcod.h</a></li>
<li>XB_LOGICAL_FLD&#160;:&#160;<a class="el" href="xbdbf_8h.html#a2f6d5073af761bc1a806a2c7b1c1d886">xbdbf.h</a></li>
<li>XB_MAX_ERROR_NO&#160;:&#160;<a class="el" href="xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d">xbretcod.h</a></li>
+<li>XB_MEMCPY_ERROR&#160;:&#160;<a class="el" href="xbretcod_8h.html#aa2925f035e3b186d7efa14648ea0e86d">xbretcod.h</a></li>
<li>XB_MEMO_FLD&#160;:&#160;<a class="el" href="xbdbf_8h.html#a23fa19b19cb43bd6dcc59a5a3f6c30ad">xbdbf.h</a></li>
<li>XB_MULTI_USER&#160;:&#160;<a class="el" href="xbfile_8h.html#a05c0fc99ba71cf953d046d12f3f874bc">xbfile.h</a></li>
<li>XB_NO_ERROR&#160;:&#160;<a class="el" href="xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23">xbretcod.h</a></li>
diff --git a/docs/doxygen/html/globals_defs.html b/docs/doxygen/html/globals_defs.html
index 9667a69..7857849 100644
--- a/docs/doxygen/html/globals_defs.html
+++ b/docs/doxygen/html/globals_defs.html
@@ -87,6 +87,7 @@ $(function() {
<li>XB_ACTIVE_RECS&#160;:&#160;<a class="el" href="xbdbf_8h.html#a1c44bb25bf2e23a3a9d3d2312df0b592">xbdbf.h</a></li>
<li>XB_ALL_RECS&#160;:&#160;<a class="el" href="xbdbf_8h.html#a8bd17730da3ba5c55a6a07bc482dd0e4">xbdbf.h</a></li>
<li>XB_ALREADY_OPEN&#160;:&#160;<a class="el" href="xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f">xbretcod.h</a></li>
+<li>XB_BLOCKREAD_NOT_ENABLED&#160;:&#160;<a class="el" href="xbretcod_8h.html#aae9241d91cfb37f5d236128b3bce0a4a">xbretcod.h</a></li>
<li>XB_BOF&#160;:&#160;<a class="el" href="xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f">xbretcod.h</a></li>
<li>XB_CHAR_FLD&#160;:&#160;<a class="el" href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">xbdbf.h</a></li>
<li>XB_CHAREOF&#160;:&#160;<a class="el" href="xbdbf_8h.html#ada1115f596131888c04df61546b198c4">xbdbf.h</a></li>
@@ -97,6 +98,7 @@ $(function() {
<li>XB_DBF_FILE_NOT_OPEN&#160;:&#160;<a class="el" href="xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2">xbretcod.h</a></li>
<li>XB_DELETE_FAILED&#160;:&#160;<a class="el" href="xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2">xbretcod.h</a></li>
<li>XB_DELETED_RECS&#160;:&#160;<a class="el" href="xbdbf_8h.html#acc0a441854ed92b9d65d1181a97cad43">xbdbf.h</a></li>
+<li>XB_DIRECTORY_ERROR&#160;:&#160;<a class="el" href="xbretcod_8h.html#af532df74147ce2d872f61abfee49c53e">xbretcod.h</a></li>
<li>XB_DONTOVERLAY&#160;:&#160;<a class="el" href="xbdbf_8h.html#a7b797840abdb3291373d15978103a778">xbdbf.h</a></li>
<li>XB_DUP_TABLE_OR_ALIAS&#160;:&#160;<a class="el" href="xbretcod_8h.html#ac18036408d10e5eee1bf76cf92352b95">xbretcod.h</a></li>
<li>XB_EMPTY&#160;:&#160;<a class="el" href="xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29">xbretcod.h</a></li>
@@ -139,6 +141,7 @@ $(function() {
<li>XB_LOCK_FAILED&#160;:&#160;<a class="el" href="xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1">xbretcod.h</a></li>
<li>XB_LOGICAL_FLD&#160;:&#160;<a class="el" href="xbdbf_8h.html#a2f6d5073af761bc1a806a2c7b1c1d886">xbdbf.h</a></li>
<li>XB_MAX_ERROR_NO&#160;:&#160;<a class="el" href="xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d">xbretcod.h</a></li>
+<li>XB_MEMCPY_ERROR&#160;:&#160;<a class="el" href="xbretcod_8h.html#aa2925f035e3b186d7efa14648ea0e86d">xbretcod.h</a></li>
<li>XB_MEMO_FLD&#160;:&#160;<a class="el" href="xbdbf_8h.html#a23fa19b19cb43bd6dcc59a5a3f6c30ad">xbdbf.h</a></li>
<li>XB_MULTI_USER&#160;:&#160;<a class="el" href="xbfile_8h.html#a05c0fc99ba71cf953d046d12f3f874bc">xbfile.h</a></li>
<li>XB_NO_ERROR&#160;:&#160;<a class="el" href="xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23">xbretcod.h</a></li>
diff --git a/docs/doxygen/html/globals_func.html b/docs/doxygen/html/globals_func.html
index c273ac7..601295d 100644
--- a/docs/doxygen/html/globals_func.html
+++ b/docs/doxygen/html/globals_func.html
@@ -89,7 +89,14 @@ $(function() {
<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
-<li>main()&#160;:&#160;<a class="el" href="xb__deletall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_deletall.cpp</a>, <a class="el" href="xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_mdx.cpp</a>, <a class="el" href="xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_ndx.cpp</a>, <a class="el" href="xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_sql.cpp</a>, <a class="el" href="xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f">xb_test_string.cpp</a>, <a class="el" href="xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_tblmgr.cpp</a>, <a class="el" href="xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_uda.cpp</a>, <a class="el" href="xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_xbase.cpp</a>, <a class="el" href="xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_cfg_check.cpp</a>, <a class="el" href="xb__copydbf_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_copydbf.cpp</a>, <a class="el" href="xb__dbfutil_8cpp.html#a57e6ea63b6f0a962708db29159629a6d">xb_dbfutil.cpp</a>, <a class="el" href="xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_log.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumphdr_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumphdr.cpp</a>, <a class="el" href="xb__dumpix_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumpix.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_dumprecs.cpp</a>, <a class="el" href="xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_execsql.cpp</a>, <a class="el" href="xb__pack_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_undelall.cpp</a>, <a class="el" href="xb__zap_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_zap.cpp</a>, <a class="el" href="xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_memos.cpp</a>, <a class="el" href="xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_ex_sql.cpp</a>, <a class="el" href="xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_string.cpp</a>, <a class="el" href="xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_create_dbf.cpp</a>, <a class="el" href="xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_upd_dbf.cpp</a>, <a class="el" href="xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_create_dbf.cpp</a>, <a class="el" href="xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_upd_dbf.cpp</a>, <a class="el" href="xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_bcd.cpp</a>, <a class="el" href="xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_date.cpp</a>, <a class="el" href="xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_memos.cpp</a>, <a class="el" href="xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_nomemos.cpp</a>, <a class="el" href="xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_date.cpp</a>, <a class="el" href="xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_nomemos.cpp</a>, <a class="el" href="xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expnode.cpp</a>, <a class="el" href="xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expression.cpp</a>, <a class="el" href="xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_file.cpp</a>, <a class="el" href="xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_filter.cpp</a>, <a class="el" href="xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_funcs.cpp</a>, <a class="el" href="xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_linklist.cpp</a>, <a class="el" href="xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock.cpp</a>, <a class="el" href="xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock2.cpp</a></li>
+<li>main()&#160;:&#160;<a class="el" href="xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_cfg_check.cpp</a>, <a class="el" href="xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock.cpp</a>, <a class="el" href="xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_lock2.cpp</a>, <a class="el" href="xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_log.cpp</a>, <a class="el" href="xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_mdx.cpp</a>, <a class="el" href="xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_ndx.cpp</a>, <a class="el" href="xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_sql.cpp</a>, <a class="el" href="xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f">xb_test_string.cpp</a>, <a class="el" href="xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_tblmgr.cpp</a>, <a class="el" href="xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_uda.cpp</a>, <a class="el" href="xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_xbase.cpp</a>, <a class="el" href="xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_linklist.cpp</a>, <a class="el" href="xb__copydbf_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_copydbf.cpp</a>, <a class="el" href="xb__dbfutil_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_dbfutil.cpp</a>, <a class="el" href="xb__deletall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_deletall.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_dumprecs.cpp</a>, <a class="el" href="xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_execsql.cpp</a>, <a class="el" href="xb__pack_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">xb_undelall.cpp</a>, <a class="el" href="xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_date.cpp</a>, <a class="el" href="xb__ex__expression_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_expression.cpp</a>, <a class="el" href="xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_ex_sql.cpp</a>, <a class="el" href="xb__ex__ssv_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">xb_ex_ssv.cpp</a>, <a class="el" href="xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_string.cpp</a>, <a class="el" href="xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_create_dbf.cpp</a>, <a class="el" href="xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v3_upd_dbf.cpp</a>, <a class="el" href="xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_create_dbf.cpp</a>, <a class="el" href="xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_v4_upd_dbf.cpp</a>, <a class="el" href="xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_bcd.cpp</a>, <a class="el" href="xb__test__blockread_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_blockread.cpp</a>, <a class="el" href="xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">xb_ex_date.cpp</a>, <a class="el" href="xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_memos.cpp</a>, <a class="el" href="xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v3_nomemos.cpp</a>, <a class="el" href="xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_memos.cpp</a>, <a class="el" href="xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_dbf_v4_nomemos.cpp</a>, <a class="el" href="xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expnode.cpp</a>, <a class="el" href="xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_expression.cpp</a>, <a class="el" href="xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_file.cpp</a>, <a class="el" href="xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_filter.cpp</a>, <a class="el" href="xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a">xb_test_funcs.cpp</a></li>
+</ul>
+
+
+<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
+<li>PrintHelp()&#160;:&#160;<a class="el" href="xb__dbfutil_8cpp.html#a9c55a055e1cd4249c7f47e19dc7ac564">xb_dbfutil.cpp</a>, <a class="el" href="xb__deletall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_deletall.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_dumprecs.cpp</a>, <a class="el" href="xb__pack_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_undelall.cpp</a>, <a class="el" href="xb__copydbf_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">xb_copydbf.cpp</a></li>
+<li>PrintResult()&#160;:&#160;<a class="el" href="xb__ex__expression_8cpp.html#a3234afc912211aec54c10d363d28cbda">xb_ex_expression.cpp</a></li>
+<li>PrintVersion()&#160;:&#160;<a class="el" href="xb__copydbf_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_copydbf.cpp</a>, <a class="el" href="xb__dbfutil_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_dbfutil.cpp</a>, <a class="el" href="xb__deletall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_deletall.cpp</a>, <a class="el" href="xb__dumpdbt_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_dumpdbt.cpp</a>, <a class="el" href="xb__dumprecs_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_dumprecs.cpp</a>, <a class="el" href="xb__pack_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_pack.cpp</a>, <a class="el" href="xb__tblinfo_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_tblinfo.cpp</a>, <a class="el" href="xb__undelall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">xb_undelall.cpp</a></li>
</ul>
diff --git a/docs/doxygen/html/globals_vars.html b/docs/doxygen/html/globals_vars.html
index 568ea5b..ae4118a 100644
--- a/docs/doxygen/html/globals_vars.html
+++ b/docs/doxygen/html/globals_vars.html
@@ -64,6 +64,8 @@ $(function() {
<div class="contents">
&#160;<ul>
+<li>MyDbfRec&#160;:&#160;<a class="el" href="xb__test__blockread_8cpp.html#af68c3291a63fdf20ffa0e477460d148e">xb_test_blockread.cpp</a></li>
+<li>MyV4Record&#160;:&#160;<a class="el" href="xb__ex__expression_8cpp.html#a2122b9562802e2fd799b20454000dc99">xb_ex_expression.cpp</a></li>
<li>timer&#160;:&#160;<a class="el" href="tstfuncs_8cpp.html#ae2281da6157495d69406c35f69a61f9f">tstfuncs.cpp</a></li>
</ul>
</div><!-- contents -->
diff --git a/docs/doxygen/html/menudata.js b/docs/doxygen/html/menudata.js
index 7930315..2959441 100644
--- a/docs/doxygen/html/menudata.js
+++ b/docs/doxygen/html/menudata.js
@@ -109,6 +109,7 @@ var menudata={children:[
{text:"j",url:"globals.html#index_j"},
{text:"l",url:"globals.html#index_l"},
{text:"m",url:"globals.html#index_m"},
+{text:"p",url:"globals.html#index_p"},
{text:"t",url:"globals.html#index_t"},
{text:"v",url:"globals.html#index_v"},
{text:"x",url:"globals.html#index_x"}]},
@@ -118,6 +119,7 @@ var menudata={children:[
{text:"g",url:"globals_func.html#index_g"},
{text:"i",url:"globals_func.html#index_i"},
{text:"m",url:"globals_func.html#index_m"},
+{text:"p",url:"globals_func.html#index_p"},
{text:"t",url:"globals_func.html#index_t"}]},
{text:"Variables",url:"globals_vars.html"},
{text:"Macros",url:"globals_defs.html",children:[
diff --git a/docs/doxygen/html/search/all_0.js b/docs/doxygen/html/search/all_0.js
index 25f7a4e..1e4e72c 100644
--- a/docs/doxygen/html/search/all_0.js
+++ b/docs/doxygen/html/search/all_0.js
@@ -2,7 +2,7 @@ var searchData=
[
['abort_0',['Abort',['../classxb_1_1xbDbf.html#a4edcf31390fbdc8c3558004770fd9f2f',1,'xb::xbDbf']]],
['addbackslash_1',['AddBackSlash',['../classxb_1_1xbString.html#a6c4fdb689d27a9d19a0b5b4236e1ca62',1,'xb::xbString']]],
- ['addtbltotbllist_2',['AddTblToTblList',['../classxb_1_1xbTblMgr.html#a721f69ccc7893842422a043468ffccea',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sTblName)'],['../classxb_1_1xbTblMgr.html#a62f6841849dbe5c1768f7e90f1b7e766',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sTblName, const xbString &amp;sTblAlias)']]],
+ ['addtbltotbllist_2',['AddTblToTblList',['../classxb_1_1xbTblMgr.html#af16832ff2bfaee09265652e0fc03709a',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sFqTblName)'],['../classxb_1_1xbTblMgr.html#a2033188e9b08778188a034a6fc90ca85',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sFqTblName, const xbString &amp;sTblAlias)']]],
['append_3',['Append',['../classxb_1_1xbString.html#a8f202e4798491f2ae9ce51ff58dd5815',1,'xb::xbString::Append(const xbString &amp;s)'],['../classxb_1_1xbString.html#a1922319303feb6da1f40b5994c5e8240',1,'xb::xbString::Append(const char *s)'],['../classxb_1_1xbString.html#a097453cb71fbf0b5511cf1259ddce4fb',1,'xb::xbString::Append(const char *s, xbUInt32 iByteCount)'],['../classxb_1_1xbString.html#a093c6ab5df375a2589755bb8f48fa5c7',1,'xb::xbString::Append(char c)']]],
['appendrecord_4',['AppendRecord',['../classxb_1_1xbDbf.html#a5b412dd796241673eb1aa2c93513d69b',1,'xb::xbDbf']]],
['assign_5',['Assign',['../classxb_1_1xbString.html#a85bef82dfa22122a1ab8dfe58a107d96',1,'xb::xbString::Assign(const char *srcStr, xbUInt32 lStartPos, xbUInt32 lCopyLen)'],['../classxb_1_1xbString.html#a08eb7ca6740423acab4e8bd7a6c8043d',1,'xb::xbString::Assign(const char *srcStr, xbUInt32 lStartPos)'],['../classxb_1_1xbString.html#ac6afd224dfbe439ce083c8dd1ad3246c',1,'xb::xbString::Assign(const xbString &amp;s, xbUInt32 pos, xbUInt32 lCopyLen)'],['../classxb_1_1xbString.html#a4f1d709d9f6c56959e8549157b4ee68c',1,'xb::xbString::Assign(const xbString &amp;s, xbUInt32 lCopyLen)']]]
diff --git a/docs/doxygen/html/search/all_10.js b/docs/doxygen/html/search/all_10.js
index aefc8ee..8645b5c 100644
--- a/docs/doxygen/html/search/all_10.js
+++ b/docs/doxygen/html/search/all_10.js
@@ -8,12 +8,12 @@ var searchData=
['setdatadirectory_5',['SetDataDirectory',['../classxb_1_1xbSsv.html#a57caaaadfbd089d9a58ecfcb50c88a6c',1,'xb::xbSsv']]],
['setdefaultautocommit_6',['SetDefaultAutoCommit',['../classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd',1,'xb::xbSsv']]],
['setdefaultdateformat_7',['SetDefaultDateFormat',['../classxb_1_1xbSsv.html#a5f74db23f8902846d581935c7db73f9c',1,'xb::xbSsv']]],
- ['setdefaultlogdirectory_8',['SetDefaultLogDirectory',['../classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb',1,'xb::xbSsv']]],
- ['setdirectory_9',['SetDirectory',['../classxb_1_1xbFile.html#ae78a85255488bc78964c16946dbaead3',1,'xb::xbFile']]],
- ['setendiantype_10',['SetEndianType',['../classxb_1_1xbSsv.html#a904ec348fd029d4a76e72b8fde636108',1,'xb::xbSsv']]],
- ['setfilename_11',['SetFileName',['../classxb_1_1xbFile.html#a5419eb27e56822f828b2b88a9502a636',1,'xb::xbFile']]],
- ['setfqfilename_12',['SetFqFileName',['../classxb_1_1xbFile.html#aee832fa11db2077a532f49e1329bd05a',1,'xb::xbFile']]],
- ['setlogdirectory_13',['SetLogDirectory',['../classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292',1,'xb::xbXBase']]],
+ ['setdirectory_8',['SetDirectory',['../classxb_1_1xbFile.html#ae78a85255488bc78964c16946dbaead3',1,'xb::xbFile']]],
+ ['setendiantype_9',['SetEndianType',['../classxb_1_1xbSsv.html#a904ec348fd029d4a76e72b8fde636108',1,'xb::xbSsv']]],
+ ['setfilename_10',['SetFileName',['../classxb_1_1xbFile.html#a5419eb27e56822f828b2b88a9502a636',1,'xb::xbFile']]],
+ ['setfqfilename_11',['SetFqFileName',['../classxb_1_1xbFile.html#aee832fa11db2077a532f49e1329bd05a',1,'xb::xbFile']]],
+ ['sethomefolders_12',['SetHomeFolders',['../classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a',1,'xb::xbFile']]],
+ ['setlogdirectory_13',['SetLogDirectory',['../classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e',1,'xb::xbSsv::SetLogDirectory()'],['../classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292',1,'xb::xbXBase::SetLogDirectory(const xbString &amp;sLogFileDirectory)']]],
['setlogfilename_14',['SetLogFileName',['../classxb_1_1xbXBase.html#a94010b88a309315ef980715eb581336c',1,'xb::xbXBase']]],
['setlogsize_15',['SetLogSize',['../classxb_1_1xbXBase.html#a666a0cb5b76ec7a9a3677d339e0c6b42',1,'xb::xbXBase']]],
['setmultiuser_16',['SetMultiUser',['../classxb_1_1xbSsv.html#aba6e59512f7172dd55dcf92059e5928c',1,'xb::xbSsv']]],
diff --git a/docs/doxygen/html/search/all_15.js b/docs/doxygen/html/search/all_15.js
index 08832b8..d8f30c5 100644
--- a/docs/doxygen/html/search/all_15.js
+++ b/docs/doxygen/html/search/all_15.js
@@ -4,220 +4,228 @@ var searchData=
['xb_5factive_5frecs_1',['XB_ACTIVE_RECS',['../xbdbf_8h.html#a1c44bb25bf2e23a3a9d3d2312df0b592',1,'xbdbf.h']]],
['xb_5fall_5frecs_2',['XB_ALL_RECS',['../xbdbf_8h.html#a8bd17730da3ba5c55a6a07bc482dd0e4',1,'xbdbf.h']]],
['xb_5falready_5fopen_3',['XB_ALREADY_OPEN',['../xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f',1,'xbretcod.h']]],
- ['xb_5fbof_4',['XB_BOF',['../xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f',1,'xbretcod.h']]],
- ['xb_5fcfg_5fcheck_2ecpp_5',['xb_cfg_check.cpp',['../xb__cfg__check_8cpp.html',1,'']]],
- ['xb_5fchar_5ffld_6',['XB_CHAR_FLD',['../xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa',1,'xbdbf.h']]],
- ['xb_5fchareof_7',['XB_CHAREOF',['../xbdbf_8h.html#ada1115f596131888c04df61546b198c4',1,'xbdbf.h']]],
- ['xb_5fcharhdr_8',['XB_CHARHDR',['../xbdbf_8h.html#a35d56cac7959c1e5c761684ced3f1e17',1,'xbdbf.h']]],
- ['xb_5fclose_5ferror_9',['XB_CLOSE_ERROR',['../xbretcod_8h.html#a030684d5541cf6127a76d81b0684b235',1,'xbretcod.h']]],
- ['xb_5fclosed_10',['XB_CLOSED',['../xbdbf_8h.html#a843ca4569326dbd1d0647899b0eb512f',1,'xbdbf.h']]],
- ['xb_5fcopydbf_2ecpp_11',['xb_copydbf.cpp',['../xb__copydbf_8cpp.html',1,'']]],
- ['xb_5fdate_5ffld_12',['XB_DATE_FLD',['../xbdbf_8h.html#a7f685e6f5fe804b2174725a27ce73adc',1,'xbdbf.h']]],
- ['xb_5fdbf_5ffile_5fnot_5fopen_13',['XB_DBF_FILE_NOT_OPEN',['../xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2',1,'xbretcod.h']]],
- ['xb_5fdbfutil_2ecpp_14',['xb_dbfutil.cpp',['../xb__dbfutil_8cpp.html',1,'']]],
- ['xb_5fdeletall_2ecpp_15',['xb_deletall.cpp',['../xb__deletall_8cpp.html',1,'']]],
- ['xb_5fdelete_5ffailed_16',['XB_DELETE_FAILED',['../xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2',1,'xbretcod.h']]],
- ['xb_5fdeleted_5frecs_17',['XB_DELETED_RECS',['../xbdbf_8h.html#acc0a441854ed92b9d65d1181a97cad43',1,'xbdbf.h']]],
- ['xb_5fdontoverlay_18',['XB_DONTOVERLAY',['../xbdbf_8h.html#a7b797840abdb3291373d15978103a778',1,'xbdbf.h']]],
- ['xb_5fdumpdbt_2ecpp_19',['xb_dumpdbt.cpp',['../xb__dumpdbt_8cpp.html',1,'']]],
- ['xb_5fdumphdr_2ecpp_20',['xb_dumphdr.cpp',['../xb__dumphdr_8cpp.html',1,'']]],
- ['xb_5fdumpix_2ecpp_21',['xb_dumpix.cpp',['../xb__dumpix_8cpp.html',1,'']]],
+ ['xb_5fblockread_5fnot_5fenabled_4',['XB_BLOCKREAD_NOT_ENABLED',['../xbretcod_8h.html#aae9241d91cfb37f5d236128b3bce0a4a',1,'xbretcod.h']]],
+ ['xb_5fbof_5',['XB_BOF',['../xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f',1,'xbretcod.h']]],
+ ['xb_5fcfg_5fcheck_2ecpp_6',['xb_cfg_check.cpp',['../xb__cfg__check_8cpp.html',1,'']]],
+ ['xb_5fchar_5ffld_7',['XB_CHAR_FLD',['../xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa',1,'xbdbf.h']]],
+ ['xb_5fchareof_8',['XB_CHAREOF',['../xbdbf_8h.html#ada1115f596131888c04df61546b198c4',1,'xbdbf.h']]],
+ ['xb_5fcharhdr_9',['XB_CHARHDR',['../xbdbf_8h.html#a35d56cac7959c1e5c761684ced3f1e17',1,'xbdbf.h']]],
+ ['xb_5fclose_5ferror_10',['XB_CLOSE_ERROR',['../xbretcod_8h.html#a030684d5541cf6127a76d81b0684b235',1,'xbretcod.h']]],
+ ['xb_5fclosed_11',['XB_CLOSED',['../xbdbf_8h.html#a843ca4569326dbd1d0647899b0eb512f',1,'xbdbf.h']]],
+ ['xb_5fcopydbf_2ecpp_12',['xb_copydbf.cpp',['../xb__copydbf_8cpp.html',1,'']]],
+ ['xb_5fdate_5ffld_13',['XB_DATE_FLD',['../xbdbf_8h.html#a7f685e6f5fe804b2174725a27ce73adc',1,'xbdbf.h']]],
+ ['xb_5fdbf_5ffile_5fnot_5fopen_14',['XB_DBF_FILE_NOT_OPEN',['../xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2',1,'xbretcod.h']]],
+ ['xb_5fdbfutil_2ecpp_15',['xb_dbfutil.cpp',['../xb__dbfutil_8cpp.html',1,'']]],
+ ['xb_5fdeletall_2ecpp_16',['xb_deletall.cpp',['../xb__deletall_8cpp.html',1,'']]],
+ ['xb_5fdelete_5ffailed_17',['XB_DELETE_FAILED',['../xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2',1,'xbretcod.h']]],
+ ['xb_5fdeleted_5frecs_18',['XB_DELETED_RECS',['../xbdbf_8h.html#acc0a441854ed92b9d65d1181a97cad43',1,'xbdbf.h']]],
+ ['xb_5fdirectory_5ferror_19',['XB_DIRECTORY_ERROR',['../xbretcod_8h.html#af532df74147ce2d872f61abfee49c53e',1,'xbretcod.h']]],
+ ['xb_5fdontoverlay_20',['XB_DONTOVERLAY',['../xbdbf_8h.html#a7b797840abdb3291373d15978103a778',1,'xbdbf.h']]],
+ ['xb_5fdumpdbt_2ecpp_21',['xb_dumpdbt.cpp',['../xb__dumpdbt_8cpp.html',1,'']]],
['xb_5fdumprecs_2ecpp_22',['xb_dumprecs.cpp',['../xb__dumprecs_8cpp.html',1,'']]],
['xb_5fdup_5ftable_5for_5falias_23',['XB_DUP_TABLE_OR_ALIAS',['../xbretcod_8h.html#ac18036408d10e5eee1bf76cf92352b95',1,'xbretcod.h']]],
['xb_5fempty_24',['XB_EMPTY',['../xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29',1,'xbretcod.h']]],
['xb_5feof_25',['XB_EOF',['../xbretcod_8h.html#a8b47031e90c3f86306c7058e4490d3b7',1,'xbretcod.h']]],
['xb_5fex_5fdate_2ecpp_26',['xb_ex_date.cpp',['../xb__ex__date_8cpp.html',1,'']]],
- ['xb_5fex_5fsql_2ecpp_27',['xb_ex_sql.cpp',['../xb__ex__sql_8cpp.html',1,'']]],
- ['xb_5fex_5fstring_2ecpp_28',['xb_ex_string.cpp',['../xb__ex__string_8cpp.html',1,'']]],
- ['xb_5fex_5fv3_5fcreate_5fdbf_2ecpp_29',['xb_ex_v3_create_dbf.cpp',['../xb__ex__v3__create__dbf_8cpp.html',1,'']]],
- ['xb_5fex_5fv3_5fupd_5fdbf_2ecpp_30',['xb_ex_v3_upd_dbf.cpp',['../xb__ex__v3__upd__dbf_8cpp.html',1,'']]],
- ['xb_5fex_5fv4_5fcreate_5fdbf_2ecpp_31',['xb_ex_v4_create_dbf.cpp',['../xb__ex__v4__create__dbf_8cpp.html',1,'']]],
- ['xb_5fex_5fv4_5fupd_5fdbf_2ecpp_32',['xb_ex_v4_upd_dbf.cpp',['../xb__ex__v4__upd__dbf_8cpp.html',1,'']]],
- ['xb_5fexecsql_2ecpp_33',['xb_execsql.cpp',['../xb__execsql_8cpp.html',1,'']]],
- ['xb_5ffile_5fexists_34',['XB_FILE_EXISTS',['../xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0',1,'xbretcod.h']]],
- ['xb_5ffile_5fnot_5ffound_35',['XB_FILE_NOT_FOUND',['../xbretcod_8h.html#ad090af330c93111d12f6de35dbb065bc',1,'xbretcod.h']]],
- ['xb_5ffile_5ftype_5fnot_5fsupported_36',['XB_FILE_TYPE_NOT_SUPPORTED',['../xbretcod_8h.html#ab7b9130a5f1df9975cfeaf6241933596',1,'xbretcod.h']]],
- ['xb_5ffloat_5ffld_37',['XB_FLOAT_FLD',['../xbdbf_8h.html#a96ab4218d70ab603b4866354ce8c18cd',1,'xbdbf.h']]],
- ['xb_5ffmt_5fmonth_38',['XB_FMT_MONTH',['../xbdate_8h.html#aeacf2f7cc897ab5bd64781c0fb52b75d',1,'xbdate.h']]],
- ['xb_5ffmt_5fweek_39',['XB_FMT_WEEK',['../xbdate_8h.html#a8f22704d3fd93fa85dd93b6c699e8178',1,'xbdate.h']]],
- ['xb_5ffmt_5fyear_40',['XB_FMT_YEAR',['../xbdate_8h.html#aa29d78982a9e007874af1c4f4e4d1aa4',1,'xbdate.h']]],
- ['xb_5fincompatible_5foperands_41',['XB_INCOMPATIBLE_OPERANDS',['../xbretcod_8h.html#af141ec58b7ca7360e0be6c61d015ea74',1,'xbretcod.h']]],
- ['xb_5finconsistent_5fparm_5flens_42',['XB_INCONSISTENT_PARM_LENS',['../xbretcod_8h.html#adc4b24bfffa202f8df25409894e547b9',1,'xbretcod.h']]],
- ['xb_5finvalid_5fblock_5fno_43',['XB_INVALID_BLOCK_NO',['../xbretcod_8h.html#a4e13b529b486c43ca600ce7d8ddbf3c2',1,'xbretcod.h']]],
- ['xb_5finvalid_5fblock_5fsize_44',['XB_INVALID_BLOCK_SIZE',['../xbretcod_8h.html#a1bd22921612389c37f6b2eac438c62c5',1,'xbretcod.h']]],
- ['xb_5finvalid_5fdata_45',['XB_INVALID_DATA',['../xbretcod_8h.html#afb40bbed323ecb369dd430a2e1242f9a',1,'xbretcod.h']]],
- ['xb_5finvalid_5fdate_46',['XB_INVALID_DATE',['../xbretcod_8h.html#a702475500357a27b8a34463be3e11925',1,'xbretcod.h']]],
- ['xb_5finvalid_5fexpression_47',['XB_INVALID_EXPRESSION',['../xbretcod_8h.html#a54db562c3cae97581812b4fccd52b71a',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_48',['XB_INVALID_FIELD',['../xbretcod_8h.html#a34180b2e2bd350ba2ebcdd1335e15d7e',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5flen_49',['XB_INVALID_FIELD_LEN',['../xbretcod_8h.html#a7bd322c0efbba17f68ccccd6cf624411',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5fname_50',['XB_INVALID_FIELD_NAME',['../xbretcod_8h.html#a59403978784130834cf39434cb73f96e',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5fno_51',['XB_INVALID_FIELD_NO',['../xbretcod_8h.html#a09d6c08a44316f551108a74003efd381',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5ftype_52',['XB_INVALID_FIELD_TYPE',['../xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffunction_53',['XB_INVALID_FUNCTION',['../xbretcod_8h.html#a2b7e5e440dbcf5e6dc885b24dbe28742',1,'xbretcod.h']]],
- ['xb_5finvalid_5findex_54',['XB_INVALID_INDEX',['../xbretcod_8h.html#acd175ef0541e2cad424791bd87619dd4',1,'xbretcod.h']]],
- ['xb_5finvalid_5fkeyno_55',['XB_INVALID_KEYNO',['../xbretcod_8h.html#aec2c0ac2bd62e0329ef130e4fbda39f8',1,'xbretcod.h']]],
- ['xb_5finvalid_5flock_5foption_56',['XB_INVALID_LOCK_OPTION',['../xbretcod_8h.html#ab45735e63c208eb7e6d6df31fd527aec',1,'xbretcod.h']]],
- ['xb_5finvalid_5fmemo_5ffield_57',['XB_INVALID_MEMO_FIELD',['../xbretcod_8h.html#a187c50745f51bfe4aa6f70a92f16c59f',1,'xbretcod.h']]],
- ['xb_5finvalid_5fnodelink_58',['XB_INVALID_NODELINK',['../xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb',1,'xbretcod.h']]],
- ['xb_5finvalid_5fobject_59',['XB_INVALID_OBJECT',['../xbretcod_8h.html#a418c047353bc683d0fd6ecbbdd5b7885',1,'xbretcod.h']]],
- ['xb_5finvalid_5foption_60',['XB_INVALID_OPTION',['../xbretcod_8h.html#af1cd0baf346cad686fa4dd11f700012a',1,'xbretcod.h']]],
- ['xb_5finvalid_5fpage_61',['XB_INVALID_PAGE',['../xbretcod_8h.html#ad0aba12b5ae2137f8d6abd28b47f95f0',1,'xbretcod.h']]],
- ['xb_5finvalid_5fparm_62',['XB_INVALID_PARM',['../xbretcod_8h.html#a4cedf96581c9cbc9c14d07494143702d',1,'xbretcod.h']]],
- ['xb_5finvalid_5frecord_63',['XB_INVALID_RECORD',['../xbretcod_8h.html#a0fd212f912b2e62700a66bae95bd73a1',1,'xbretcod.h']]],
- ['xb_5finvalid_5ftable_5fname_64',['XB_INVALID_TABLE_NAME',['../xbretcod_8h.html#a53891c95a78483704d2a8e14c4499f92',1,'xbretcod.h']]],
- ['xb_5finvalid_5ftag_65',['XB_INVALID_TAG',['../xbretcod_8h.html#a176d917912d3433f065483f905a4c50a',1,'xbretcod.h']]],
- ['xb_5fkey_5fnot_5funique_66',['XB_KEY_NOT_UNIQUE',['../xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34',1,'xbretcod.h']]],
- ['xb_5flimit_5freached_67',['XB_LIMIT_REACHED',['../xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850',1,'xbretcod.h']]],
- ['xb_5flock_68',['XB_LOCK',['../xbdbf_8h.html#a395a2e101a793bacabf6bc079d178e29',1,'xbdbf.h']]],
- ['xb_5flock_5ffailed_69',['XB_LOCK_FAILED',['../xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1',1,'xbretcod.h']]],
- ['xb_5flogical_5ffld_70',['XB_LOGICAL_FLD',['../xbdbf_8h.html#a2f6d5073af761bc1a806a2c7b1c1d886',1,'xbdbf.h']]],
- ['xb_5fmax_5ferror_5fno_71',['XB_MAX_ERROR_NO',['../xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d',1,'xbretcod.h']]],
- ['xb_5fmemo_5ffld_72',['XB_MEMO_FLD',['../xbdbf_8h.html#a23fa19b19cb43bd6dcc59a5a3f6c30ad',1,'xbdbf.h']]],
- ['xb_5fmulti_5fuser_73',['XB_MULTI_USER',['../xbfile_8h.html#a05c0fc99ba71cf953d046d12f3f874bc',1,'xbfile.h']]],
- ['xb_5fno_5ferror_74',['XB_NO_ERROR',['../xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23',1,'xbretcod.h']]],
- ['xb_5fno_5fmemory_75',['XB_NO_MEMORY',['../xbretcod_8h.html#ae687fc7d872ba0475a8477e4447f9b54',1,'xbretcod.h']]],
- ['xb_5fnot_5ffound_76',['XB_NOT_FOUND',['../xbretcod_8h.html#ac2606659a54111334f5b02861e533700',1,'xbretcod.h']]],
- ['xb_5fnot_5fopen_77',['XB_NOT_OPEN',['../xbretcod_8h.html#a9474b400f647bdefbbb07e5177e8d7a1',1,'xbretcod.h']]],
- ['xb_5fnumeric_5ffld_78',['XB_NUMERIC_FLD',['../xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6',1,'xbdbf.h']]],
- ['xb_5fopen_79',['XB_OPEN',['../xbdbf_8h.html#a9a6dafbb07cac744eb14094efa739409',1,'xbdbf.h']]],
- ['xb_5fopen_5ferror_80',['XB_OPEN_ERROR',['../xbretcod_8h.html#aaab55236993a1d3acb29206252a904c8',1,'xbretcod.h']]],
- ['xb_5foverlay_81',['XB_OVERLAY',['../xbdbf_8h.html#a6fe10b307878b4612b04c2c876a4a592',1,'xbdbf.h']]],
- ['xb_5fpack_2ecpp_82',['xb_pack.cpp',['../xb__pack_8cpp.html',1,'']]],
- ['xb_5fparse_5ferror_83',['XB_PARSE_ERROR',['../xbretcod_8h.html#aec713cac2b03a0d536a2d16336ae7c0b',1,'xbretcod.h']]],
- ['xb_5fread_84',['XB_READ',['../xbfile_8h.html#ae58c73e0ba237fcf67ee20feea6c2743',1,'xbfile.h']]],
- ['xb_5fread_5ferror_85',['XB_READ_ERROR',['../xbretcod_8h.html#adbd40585db8bb748d191f94a33bac710',1,'xbretcod.h']]],
- ['xb_5fread_5fwrite_86',['XB_READ_WRITE',['../xbfile_8h.html#af991a288c327f6857e90156ea734a633',1,'xbfile.h']]],
- ['xb_5frename_5ferror_87',['XB_RENAME_ERROR',['../xbretcod_8h.html#a373f30b2efcbbab9f6d060fb3fe8cba3',1,'xbretcod.h']]],
- ['xb_5fseek_5ferror_88',['XB_SEEK_ERROR',['../xbretcod_8h.html#a0455ad8719e153b08ec68b10c81e9f41',1,'xbretcod.h']]],
- ['xb_5fsingle_5fuser_89',['XB_SINGLE_USER',['../xbfile_8h.html#a9ec4d60a008c667d9861e3b3814f0232',1,'xbfile.h']]],
- ['xb_5fsyntax_5ferror_90',['XB_SYNTAX_ERROR',['../xbretcod_8h.html#a5db3a90f215534143bdde81253729c7f',1,'xbretcod.h']]],
- ['xb_5ftable_5fnot_5flocked_91',['XB_TABLE_NOT_LOCKED',['../xbretcod_8h.html#af6aaf779fddecca521d785666f6dc56b',1,'xbretcod.h']]],
- ['xb_5ftblinfo_2ecpp_92',['xb_tblinfo.cpp',['../xb__tblinfo_8cpp.html',1,'']]],
- ['xb_5ftest_5fbcd_2ecpp_93',['xb_test_bcd.cpp',['../xb__test__bcd_8cpp.html',1,'']]],
- ['xb_5ftest_5fdate_2ecpp_94',['xb_test_date.cpp',['../xb__test__date_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv3_5fmemos_2ecpp_95',['xb_test_dbf_v3_memos.cpp',['../xb__test__dbf__v3__memos_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv3_5fnomemos_2ecpp_96',['xb_test_dbf_v3_nomemos.cpp',['../xb__test__dbf__v3__nomemos_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv4_5fmemos_2ecpp_97',['xb_test_dbf_v4_memos.cpp',['../xb__test__dbf__v4__memos_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv4_5fnomemos_2ecpp_98',['xb_test_dbf_v4_nomemos.cpp',['../xb__test__dbf__v4__nomemos_8cpp.html',1,'']]],
- ['xb_5ftest_5fexpnode_2ecpp_99',['xb_test_expnode.cpp',['../xb__test__expnode_8cpp.html',1,'']]],
- ['xb_5ftest_5fexpression_2ecpp_100',['xb_test_expression.cpp',['../xb__test__expression_8cpp.html',1,'']]],
- ['xb_5ftest_5ffile_2ecpp_101',['xb_test_file.cpp',['../xb__test__file_8cpp.html',1,'']]],
- ['xb_5ftest_5ffilter_2ecpp_102',['xb_test_filter.cpp',['../xb__test__filter_8cpp.html',1,'']]],
- ['xb_5ftest_5ffuncs_2ecpp_103',['xb_test_funcs.cpp',['../xb__test__funcs_8cpp.html',1,'']]],
- ['xb_5ftest_5flinklist_2ecpp_104',['xb_test_linklist.cpp',['../xb__test__linklist_8cpp.html',1,'']]],
- ['xb_5ftest_5flock_2ecpp_105',['xb_test_lock.cpp',['../xb__test__lock_8cpp.html',1,'']]],
- ['xb_5ftest_5flock2_2ecpp_106',['xb_test_lock2.cpp',['../xb__test__lock2_8cpp.html',1,'']]],
- ['xb_5ftest_5flog_2ecpp_107',['xb_test_log.cpp',['../xb__test__log_8cpp.html',1,'']]],
- ['xb_5ftest_5fmdx_2ecpp_108',['xb_test_mdx.cpp',['../xb__test__mdx_8cpp.html',1,'']]],
- ['xb_5ftest_5fndx_2ecpp_109',['xb_test_ndx.cpp',['../xb__test__ndx_8cpp.html',1,'']]],
- ['xb_5ftest_5fsql_2ecpp_110',['xb_test_sql.cpp',['../xb__test__sql_8cpp.html',1,'']]],
- ['xb_5ftest_5fstring_2ecpp_111',['xb_test_string.cpp',['../xb__test__string_8cpp.html',1,'']]],
- ['xb_5ftest_5ftblmgr_2ecpp_112',['xb_test_tblmgr.cpp',['../xb__test__tblmgr_8cpp.html',1,'']]],
- ['xb_5ftest_5fuda_2ecpp_113',['xb_test_uda.cpp',['../xb__test__uda_8cpp.html',1,'']]],
- ['xb_5ftest_5fxbase_2ecpp_114',['xb_test_xbase.cpp',['../xb__test__xbase_8cpp.html',1,'']]],
- ['xb_5funbalanced_5fparens_115',['XB_UNBALANCED_PARENS',['../xbretcod_8h.html#aff5646a6b0884ff81004de6961473ea6',1,'xbretcod.h']]],
- ['xb_5funbalanced_5fquotes_116',['XB_UNBALANCED_QUOTES',['../xbretcod_8h.html#aedfa20a6c4eb9ba3063ba56be8280eac',1,'xbretcod.h']]],
- ['xb_5fundelall_2ecpp_117',['xb_undelall.cpp',['../xb__undelall_8cpp.html',1,'']]],
- ['xb_5funlock_118',['XB_UNLOCK',['../xbdbf_8h.html#a21389b73e7b4e7e185fa635b9e354c2e',1,'xbdbf.h']]],
- ['xb_5fupdated_119',['XB_UPDATED',['../xbdbf_8h.html#a26e7eeda69f32bc88b08a208ca9e7991',1,'xbdbf.h']]],
- ['xb_5fwrite_120',['XB_WRITE',['../xbfile_8h.html#abbf99e259c2f31572c886da6d85b1359',1,'xbfile.h']]],
- ['xb_5fwrite_5ferror_121',['XB_WRITE_ERROR',['../xbretcod_8h.html#aef34ebe6726057f805d6063130280549',1,'xbretcod.h']]],
- ['xb_5fzap_2ecpp_122',['xb_zap.cpp',['../xb__zap_8cpp.html',1,'']]],
- ['xbalttbl_2ecpp_123',['xbalttbl.cpp',['../xbalttbl_8cpp.html',1,'']]],
- ['xbase_124',['xbase',['../classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004',1,'xb::xbFile']]],
- ['xbase_2eh_125',['xbase.h',['../xbase_8h.html',1,'']]],
- ['xbbcd_126',['xbBcd',['../classxb_1_1xbXBase.html#a86a53ce3efbf910996df0f853f1c0add',1,'xb::xbXBase']]],
- ['xbbcd_2ecpp_127',['xbbcd.cpp',['../xbbcd_8cpp.html',1,'']]],
- ['xbbcd_2eh_128',['xbbcd.h',['../xbbcd_8h.html',1,'']]],
- ['xbbool_129',['xbBool',['../namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f',1,'xb']]],
- ['xbcrix_2ecpp_130',['xbcrix.cpp',['../xbcrix_8cpp.html',1,'']]],
- ['xbcrtbl_2ecpp_131',['xbcrtbl.cpp',['../xbcrtbl_8cpp.html',1,'']]],
- ['xbdate_132',['xbDate',['../classxb_1_1xbDate.html',1,'xb::xbDate'],['../classxb_1_1xbDate.html#a7ab727a7ec184a086ad36ef83b948170',1,'xb::xbDate::xbDate(xbInt32 lJulDate)'],['../classxb_1_1xbDate.html#acf4546f5681735ede18210f60bab68d4',1,'xb::xbDate::xbDate(const xbString &amp;Date8)'],['../classxb_1_1xbDate.html#ac8a4d9330221a3daee21b3c28c1d9719',1,'xb::xbDate::xbDate(const char *Date8)'],['../classxb_1_1xbDate.html#ab3150e7db0ab5db10a07d748b55465eb',1,'xb::xbDate::xbDate()']]],
- ['xbdate_2ecpp_133',['xbdate.cpp',['../xbdate_8cpp.html',1,'']]],
- ['xbdate_2eh_134',['xbdate.h',['../xbdate_8h.html',1,'']]],
- ['xbdbf_135',['xbDbf',['../classxb_1_1xbDbf.html',1,'xb::xbDbf'],['../classxb_1_1xbDbf.html#a84a75f80bc0e9b8a22b728767949c204',1,'xb::xbDbf::xbDbf()'],['../namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b',1,'xb::xbDbf()']]],
- ['xbdbf_2ecpp_136',['xbdbf.cpp',['../xbdbf_8cpp.html',1,'']]],
- ['xbdbf_2eh_137',['xbdbf.h',['../xbdbf_8h.html',1,'']]],
- ['xbdbf3_2ecpp_138',['xbdbf3.cpp',['../xbdbf3_8cpp.html',1,'']]],
- ['xbdbf4_2ecpp_139',['xbdbf4.cpp',['../xbdbf4_8cpp.html',1,'']]],
- ['xbdelete_2ecpp_140',['xbdelete.cpp',['../xbdelete_8cpp.html',1,'']]],
- ['xbdouble_141',['xbDouble',['../namespacexb.html#a25f47b226ce924a5c78f97989b0744a2',1,'xb']]],
- ['xbdrpix_2ecpp_142',['xbdrpix.cpp',['../xbdrpix_8cpp.html',1,'']]],
- ['xbdrptbl_2ecpp_143',['xbdrptbl.cpp',['../xbdrptbl_8cpp.html',1,'']]],
- ['xberrormessages_144',['xbErrorMessages',['../namespacexb.html#a04be228a037d220dd5564f5ef618adcc',1,'xb']]],
- ['xbexp_145',['xbExp',['../classxb_1_1xbXBase.html#a3c3e5617be811d732472fe2cc8fb18cc',1,'xb::xbXBase']]],
- ['xbexp_2ecpp_146',['xbexp.cpp',['../xbexp_8cpp.html',1,'']]],
- ['xbexp_2eh_147',['xbexp.h',['../xbexp_8h.html',1,'']]],
- ['xbexpnode_2ecpp_148',['xbexpnode.cpp',['../xbexpnode_8cpp.html',1,'']]],
- ['xbexpnode_2eh_149',['xbexpnode.h',['../xbexpnode_8h.html',1,'']]],
- ['xbfalse_150',['xbFalse',['../xbtypes_8h.html#adc4b6ca5ad299f63675136d9e03938cc',1,'xbtypes.h']]],
- ['xbfclose_151',['xbFclose',['../classxb_1_1xbFile.html#a18830b5755d74818f60d9c7ce38ddf2d',1,'xb::xbFile']]],
- ['xbfeof_152',['xbFeof',['../classxb_1_1xbFile.html#af5b6356832d2a67212070a1aa605f170',1,'xb::xbFile']]],
- ['xbfflush_153',['xbFflush',['../classxb_1_1xbFile.html#ad205184d43409f04216540ae22f15009',1,'xb::xbFile']]],
- ['xbfgetc_154',['xbFgetc',['../classxb_1_1xbFile.html#afb1c584d2895ffb7834df80aea7eb1e4',1,'xb::xbFile::xbFgetc(xbInt32 &amp;c)'],['../classxb_1_1xbFile.html#a5ee229bda4d7d6695e122200e581e7a6',1,'xb::xbFile::xbFgetc(char &amp;c)']]],
- ['xbfgets_155',['xbFgets',['../classxb_1_1xbFile.html#ad245955ace26e5dde85fd4373b30d026',1,'xb::xbFile']]],
- ['xbfields_2ecpp_156',['xbfields.cpp',['../xbfields_8cpp.html',1,'']]],
- ['xbfile_157',['xbFile',['../classxb_1_1xbFile.html',1,'xb::xbFile'],['../classxb_1_1xbFile.html#a869eedd74c6eddc308852eb546c87176',1,'xb::xbFile::xbFile()']]],
- ['xbfile_2ecpp_158',['xbfile.cpp',['../xbfile_8cpp.html',1,'']]],
- ['xbfile_2eh_159',['xbfile.h',['../xbfile_8h.html',1,'']]],
- ['xbfileno_160',['xbFileNo',['../xbtypes_8h.html#a2c65f692ac861990861575e18f72f6eb',1,'xbtypes.h']]],
- ['xbfilter_2ecpp_161',['xbfilter.cpp',['../xbfilter_8cpp.html',1,'']]],
- ['xbfilter_2eh_162',['xbfilter.h',['../xbfilter_8h.html',1,'']]],
- ['xbfloat_163',['xbFloat',['../namespacexb.html#a83aa6a550398db55973aa9fb4257e66e',1,'xb']]],
- ['xbfopen_164',['xbFopen',['../classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c',1,'xb::xbFile::xbFopen(xbInt16 iOpenMode)'],['../classxb_1_1xbFile.html#a0548cedf0f26b7d8ac221f75b0cd048c',1,'xb::xbFile::xbFopen(const xbString &amp;sOpenMode, xbInt16 iShareMode)'],['../classxb_1_1xbFile.html#aabd113333b49c36cad23244b392baab4',1,'xb::xbFile::xbFopen(xbInt16 iOpenMode, xbInt16 iShareMode)'],['../classxb_1_1xbFile.html#ab0fa19686ca8953ff4b556fb5b249135',1,'xb::xbFile::xbFopen(const xbString &amp;sMode, const xbString &amp;sFileName, xbInt16 iShareMode)']]],
- ['xbfputc_165',['xbFputc',['../classxb_1_1xbFile.html#a863f74cf17df8186d88586b4d2a6441a',1,'xb::xbFile::xbFputc(xbInt32 c, xbInt32 iNoTimes)'],['../classxb_1_1xbFile.html#af2e940c78956e5cb6824f9a1bc404896',1,'xb::xbFile::xbFputc(xbInt32 c)']]],
- ['xbfputs_166',['xbFputs',['../classxb_1_1xbFile.html#a698f3b40216778562e639e6ca1a47573',1,'xb::xbFile']]],
- ['xbfread_167',['xbFread',['../classxb_1_1xbFile.html#ab4f6afaa1f77539f27a4f05c26e54e2f',1,'xb::xbFile']]],
- ['xbfseek_168',['xbFseek',['../classxb_1_1xbFile.html#a5337ab8918df240910c0d19b4f298e3d',1,'xb::xbFile']]],
- ['xbftell_169',['xbFtell',['../classxb_1_1xbFile.html#a0e1c06aedfa7fbcb92e117f891edd13b',1,'xb::xbFile']]],
- ['xbfturnofffilebuffering_170',['xbFTurnOffFileBuffering',['../classxb_1_1xbFile.html#a9891b792f585a696f38a5cf959e30918',1,'xb::xbFile']]],
- ['xbfuncs_2ecpp_171',['xbfuncs.cpp',['../xbfuncs_8cpp.html',1,'']]],
- ['xbfwrite_172',['xbFwrite',['../classxb_1_1xbFile.html#a6aadd871d1782944703fed773d44b85f',1,'xb::xbFile']]],
- ['xbindex_2eh_173',['xbindex.h',['../xbindex_8h.html',1,'']]],
- ['xbinsert_2ecpp_174',['xbinsert.cpp',['../xbinsert_8cpp.html',1,'']]],
- ['xbixbase_2ecpp_175',['xbixbase.cpp',['../xbixbase_8cpp.html',1,'']]],
- ['xbixmdx_2ecpp_176',['xbixmdx.cpp',['../xbixmdx_8cpp.html',1,'']]],
- ['xbixndx_2ecpp_177',['xbixndx.cpp',['../xbixndx_8cpp.html',1,'']]],
- ['xblnklst_2eh_178',['xblnklst.h',['../xblnklst_8h.html',1,'']]],
- ['xblnklstord_2eh_179',['xblnklstord.h',['../xblnklstord_8h.html',1,'']]],
- ['xblnknod_2eh_180',['xblnknod.h',['../xblnknod_8h.html',1,'']]],
- ['xblog_181',['xbLog',['../namespacexb.html#a4a31fbe9110c9e55495ce71e642d785c',1,'xb']]],
- ['xblog_2ecpp_182',['xblog.cpp',['../xblog_8cpp.html',1,'']]],
- ['xblog_2eh_183',['xblog.h',['../xblog_8h.html',1,'']]],
- ['xbmemcmp_184',['xbMemcmp',['../classxb_1_1xbXBase.html#a1b239c021358476382942522911b5c66',1,'xb::xbXBase']]],
- ['xbmemo_2ecpp_185',['xbmemo.cpp',['../xbmemo_8cpp.html',1,'']]],
- ['xbmemo_2eh_186',['xbmemo.h',['../xbmemo_8h.html',1,'']]],
- ['xbmemo3_2ecpp_187',['xbmemo3.cpp',['../xbmemo3_8cpp.html',1,'']]],
- ['xbmemo4_2ecpp_188',['xbmemo4.cpp',['../xbmemo4_8cpp.html',1,'']]],
- ['xbofft_189',['xbOffT',['../namespacexb.html#ac963d9fde6debb416303cfbed35fb793',1,'xb']]],
- ['xbreaduntil_190',['xbReadUntil',['../classxb_1_1xbFile.html#a08463f506f425c2385acbe1a561506e9',1,'xb::xbFile']]],
- ['xbremove_191',['xbRemove',['../classxb_1_1xbFile.html#a6d919366c2ec95e529906bf8842cbf07',1,'xb::xbFile::xbRemove(const xbString &amp;sFileName, xbInt16 iOption)'],['../classxb_1_1xbFile.html#a58f6a6751fdf7e9549c273bb75d93eb5',1,'xb::xbFile::xbRemove(const xbString &amp;sFileName)'],['../classxb_1_1xbFile.html#ab3c668a8570433188382d31d7c60bd48',1,'xb::xbFile::xbRemove()']]],
- ['xbrename_192',['xbRename',['../classxb_1_1xbFile.html#afc8ce113aa72611a278233f9bb170012',1,'xb::xbFile']]],
- ['xbretcod_2eh_193',['xbretcod.h',['../xbretcod_8h.html',1,'']]],
- ['xbrewind_194',['xbRewind',['../classxb_1_1xbFile.html#a7996b6e084665c37c3892faea64b3505',1,'xb::xbFile']]],
- ['xbschema_195',['xbSchema',['../structxb_1_1xbSchema.html',1,'xb']]],
- ['xbset_2ecpp_196',['xbset.cpp',['../xbset_8cpp.html',1,'']]],
- ['xbsleep_197',['xbSleep',['../classxb_1_1xbXBase.html#a0915aff7be4b2dd3e881f3c5d0da4baf',1,'xb::xbXBase']]],
- ['xbsql_2ecpp_198',['xbsql.cpp',['../xbsql_8cpp.html',1,'']]],
- ['xbsql_2eh_199',['xbsql.h',['../xbsql_8h.html',1,'']]],
- ['xbssv_200',['xbSsv',['../classxb_1_1xbSsv.html',1,'xb::xbSsv'],['../classxb_1_1xbSsv.html#a58f85692c3167af20b1a7c17c621523b',1,'xb::xbSsv::xbSsv()']]],
- ['xbssv_2ecpp_201',['xbssv.cpp',['../xbssv_8cpp.html',1,'']]],
- ['xbssv_2eh_202',['xbssv.h',['../xbssv_8h.html',1,'']]],
- ['xbstring_203',['xbString',['../classxb_1_1xbString.html',1,'xb::xbString'],['../classxb_1_1xbString.html#ad865b55e3b08dffd527afee8e7e8e3fe',1,'xb::xbString::xbString(xbDouble d)'],['../classxb_1_1xbString.html#a25856311106c5fb15d39017b63f0ddc7',1,'xb::xbString::xbString(const char *=&quot;&quot;)'],['../classxb_1_1xbString.html#a0d81016b93fc36ebbbafacf35c677f07',1,'xb::xbString::xbString(const xbString &amp;s)'],['../classxb_1_1xbString.html#a18f3598dcdf2ec5692274fc8ee769ad7',1,'xb::xbString::xbString(const char *s, xbUInt32 lMaxLen)'],['../classxb_1_1xbString.html#a14bbaa293c8d40dd6c64332f2668a92e',1,'xb::xbString::xbString(char c)'],['../classxb_1_1xbString.html#a63f9313217e0ff3c9789ec59316216a1',1,'xb::xbString::xbString(xbUInt32 size)']]],
- ['xbstring_2ecpp_204',['xbstring.cpp',['../xbstring_8cpp.html',1,'']]],
- ['xbstring_2eh_205',['xbstring.h',['../xbstring_8h.html',1,'']]],
- ['xbtag_2ecpp_206',['xbtag.cpp',['../xbtag_8cpp.html',1,'']]],
- ['xbtag_2eh_207',['xbtag.h',['../xbtag_8h.html',1,'']]],
- ['xbtbllist_208',['xbTblList',['../structxb_1_1xbTblList.html',1,'xb']]],
- ['xbtblmgr_209',['xbTblMgr',['../classxb_1_1xbTblMgr.html',1,'xb::xbTblMgr'],['../classxb_1_1xbTblMgr.html#aad83f5ecc184ca6cbdfc6f356b598d6c',1,'xb::xbTblMgr::xbTblMgr()']]],
- ['xbtblmgr_2ecpp_210',['xbtblmgr.cpp',['../xbtblmgr_8cpp.html',1,'']]],
- ['xbtblmgr_2eh_211',['xbtblmgr.h',['../xbtblmgr_8h.html',1,'']]],
- ['xbtrue_212',['xbTrue',['../xbtypes_8h.html#ab0ae00665298fe7f5292691cb98ec2d9',1,'xbtypes.h']]],
- ['xbtruncate_213',['xbTruncate',['../classxb_1_1xbFile.html#a518bfcbfa3699d883cf89affee383296',1,'xb::xbFile']]],
- ['xbtypes_2eh_214',['xbtypes.h',['../xbtypes_8h.html',1,'']]],
- ['xbuda_2ecpp_215',['xbuda.cpp',['../xbuda_8cpp.html',1,'']]],
- ['xbuda_2eh_216',['xbuda.h',['../xbuda_8h.html',1,'']]],
- ['xbxbase_217',['xbXBase',['../classxb_1_1xbXBase.html',1,'xb::xbXBase'],['../classxb_1_1xbXBase.html#a6c68588e33946fb5416af3f86fe83224',1,'xb::xbXBase::xbXBase()'],['../namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0',1,'xb::xbXBase()']]],
- ['xbxbase_2ecpp_218',['xbxbase.cpp',['../xbxbase_8cpp.html',1,'']]],
- ['xbxbase_2eh_219',['xbxbase.h',['../xbxbase_8h.html',1,'']]]
+ ['xb_5fex_5fexpression_2ecpp_27',['xb_ex_expression.cpp',['../xb__ex__expression_8cpp.html',1,'']]],
+ ['xb_5fex_5fsql_2ecpp_28',['xb_ex_sql.cpp',['../xb__ex__sql_8cpp.html',1,'']]],
+ ['xb_5fex_5fssv_2ecpp_29',['xb_ex_ssv.cpp',['../xb__ex__ssv_8cpp.html',1,'']]],
+ ['xb_5fex_5fstring_2ecpp_30',['xb_ex_string.cpp',['../xb__ex__string_8cpp.html',1,'']]],
+ ['xb_5fex_5fv3_5fcreate_5fdbf_2ecpp_31',['xb_ex_v3_create_dbf.cpp',['../xb__ex__v3__create__dbf_8cpp.html',1,'']]],
+ ['xb_5fex_5fv3_5fupd_5fdbf_2ecpp_32',['xb_ex_v3_upd_dbf.cpp',['../xb__ex__v3__upd__dbf_8cpp.html',1,'']]],
+ ['xb_5fex_5fv4_5fcreate_5fdbf_2ecpp_33',['xb_ex_v4_create_dbf.cpp',['../xb__ex__v4__create__dbf_8cpp.html',1,'']]],
+ ['xb_5fex_5fv4_5fupd_5fdbf_2ecpp_34',['xb_ex_v4_upd_dbf.cpp',['../xb__ex__v4__upd__dbf_8cpp.html',1,'']]],
+ ['xb_5fexecsql_2ecpp_35',['xb_execsql.cpp',['../xb__execsql_8cpp.html',1,'']]],
+ ['xb_5ffile_5fexists_36',['XB_FILE_EXISTS',['../xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0',1,'xbretcod.h']]],
+ ['xb_5ffile_5fnot_5ffound_37',['XB_FILE_NOT_FOUND',['../xbretcod_8h.html#ad090af330c93111d12f6de35dbb065bc',1,'xbretcod.h']]],
+ ['xb_5ffile_5ftype_5fnot_5fsupported_38',['XB_FILE_TYPE_NOT_SUPPORTED',['../xbretcod_8h.html#ab7b9130a5f1df9975cfeaf6241933596',1,'xbretcod.h']]],
+ ['xb_5ffloat_5ffld_39',['XB_FLOAT_FLD',['../xbdbf_8h.html#a96ab4218d70ab603b4866354ce8c18cd',1,'xbdbf.h']]],
+ ['xb_5ffmt_5fmonth_40',['XB_FMT_MONTH',['../xbdate_8h.html#aeacf2f7cc897ab5bd64781c0fb52b75d',1,'xbdate.h']]],
+ ['xb_5ffmt_5fweek_41',['XB_FMT_WEEK',['../xbdate_8h.html#a8f22704d3fd93fa85dd93b6c699e8178',1,'xbdate.h']]],
+ ['xb_5ffmt_5fyear_42',['XB_FMT_YEAR',['../xbdate_8h.html#aa29d78982a9e007874af1c4f4e4d1aa4',1,'xbdate.h']]],
+ ['xb_5fincompatible_5foperands_43',['XB_INCOMPATIBLE_OPERANDS',['../xbretcod_8h.html#af141ec58b7ca7360e0be6c61d015ea74',1,'xbretcod.h']]],
+ ['xb_5finconsistent_5fparm_5flens_44',['XB_INCONSISTENT_PARM_LENS',['../xbretcod_8h.html#adc4b24bfffa202f8df25409894e547b9',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fblock_5fno_45',['XB_INVALID_BLOCK_NO',['../xbretcod_8h.html#a4e13b529b486c43ca600ce7d8ddbf3c2',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fblock_5fsize_46',['XB_INVALID_BLOCK_SIZE',['../xbretcod_8h.html#a1bd22921612389c37f6b2eac438c62c5',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fdata_47',['XB_INVALID_DATA',['../xbretcod_8h.html#afb40bbed323ecb369dd430a2e1242f9a',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fdate_48',['XB_INVALID_DATE',['../xbretcod_8h.html#a702475500357a27b8a34463be3e11925',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fexpression_49',['XB_INVALID_EXPRESSION',['../xbretcod_8h.html#a54db562c3cae97581812b4fccd52b71a',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_50',['XB_INVALID_FIELD',['../xbretcod_8h.html#a34180b2e2bd350ba2ebcdd1335e15d7e',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5flen_51',['XB_INVALID_FIELD_LEN',['../xbretcod_8h.html#a7bd322c0efbba17f68ccccd6cf624411',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5fname_52',['XB_INVALID_FIELD_NAME',['../xbretcod_8h.html#a59403978784130834cf39434cb73f96e',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5fno_53',['XB_INVALID_FIELD_NO',['../xbretcod_8h.html#a09d6c08a44316f551108a74003efd381',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5ftype_54',['XB_INVALID_FIELD_TYPE',['../xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffunction_55',['XB_INVALID_FUNCTION',['../xbretcod_8h.html#a2b7e5e440dbcf5e6dc885b24dbe28742',1,'xbretcod.h']]],
+ ['xb_5finvalid_5findex_56',['XB_INVALID_INDEX',['../xbretcod_8h.html#acd175ef0541e2cad424791bd87619dd4',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fkeyno_57',['XB_INVALID_KEYNO',['../xbretcod_8h.html#aec2c0ac2bd62e0329ef130e4fbda39f8',1,'xbretcod.h']]],
+ ['xb_5finvalid_5flock_5foption_58',['XB_INVALID_LOCK_OPTION',['../xbretcod_8h.html#ab45735e63c208eb7e6d6df31fd527aec',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fmemo_5ffield_59',['XB_INVALID_MEMO_FIELD',['../xbretcod_8h.html#a187c50745f51bfe4aa6f70a92f16c59f',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fnodelink_60',['XB_INVALID_NODELINK',['../xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fobject_61',['XB_INVALID_OBJECT',['../xbretcod_8h.html#a418c047353bc683d0fd6ecbbdd5b7885',1,'xbretcod.h']]],
+ ['xb_5finvalid_5foption_62',['XB_INVALID_OPTION',['../xbretcod_8h.html#af1cd0baf346cad686fa4dd11f700012a',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fpage_63',['XB_INVALID_PAGE',['../xbretcod_8h.html#ad0aba12b5ae2137f8d6abd28b47f95f0',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fparm_64',['XB_INVALID_PARM',['../xbretcod_8h.html#a4cedf96581c9cbc9c14d07494143702d',1,'xbretcod.h']]],
+ ['xb_5finvalid_5frecord_65',['XB_INVALID_RECORD',['../xbretcod_8h.html#a0fd212f912b2e62700a66bae95bd73a1',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ftable_5fname_66',['XB_INVALID_TABLE_NAME',['../xbretcod_8h.html#a53891c95a78483704d2a8e14c4499f92',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ftag_67',['XB_INVALID_TAG',['../xbretcod_8h.html#a176d917912d3433f065483f905a4c50a',1,'xbretcod.h']]],
+ ['xb_5fkey_5fnot_5funique_68',['XB_KEY_NOT_UNIQUE',['../xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34',1,'xbretcod.h']]],
+ ['xb_5flimit_5freached_69',['XB_LIMIT_REACHED',['../xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850',1,'xbretcod.h']]],
+ ['xb_5flock_70',['XB_LOCK',['../xbdbf_8h.html#a395a2e101a793bacabf6bc079d178e29',1,'xbdbf.h']]],
+ ['xb_5flock_5ffailed_71',['XB_LOCK_FAILED',['../xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1',1,'xbretcod.h']]],
+ ['xb_5flogical_5ffld_72',['XB_LOGICAL_FLD',['../xbdbf_8h.html#a2f6d5073af761bc1a806a2c7b1c1d886',1,'xbdbf.h']]],
+ ['xb_5fmax_5ferror_5fno_73',['XB_MAX_ERROR_NO',['../xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d',1,'xbretcod.h']]],
+ ['xb_5fmemcpy_5ferror_74',['XB_MEMCPY_ERROR',['../xbretcod_8h.html#aa2925f035e3b186d7efa14648ea0e86d',1,'xbretcod.h']]],
+ ['xb_5fmemo_5ffld_75',['XB_MEMO_FLD',['../xbdbf_8h.html#a23fa19b19cb43bd6dcc59a5a3f6c30ad',1,'xbdbf.h']]],
+ ['xb_5fmulti_5fuser_76',['XB_MULTI_USER',['../xbfile_8h.html#a05c0fc99ba71cf953d046d12f3f874bc',1,'xbfile.h']]],
+ ['xb_5fno_5ferror_77',['XB_NO_ERROR',['../xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23',1,'xbretcod.h']]],
+ ['xb_5fno_5fmemory_78',['XB_NO_MEMORY',['../xbretcod_8h.html#ae687fc7d872ba0475a8477e4447f9b54',1,'xbretcod.h']]],
+ ['xb_5fnot_5ffound_79',['XB_NOT_FOUND',['../xbretcod_8h.html#ac2606659a54111334f5b02861e533700',1,'xbretcod.h']]],
+ ['xb_5fnot_5fopen_80',['XB_NOT_OPEN',['../xbretcod_8h.html#a9474b400f647bdefbbb07e5177e8d7a1',1,'xbretcod.h']]],
+ ['xb_5fnumeric_5ffld_81',['XB_NUMERIC_FLD',['../xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6',1,'xbdbf.h']]],
+ ['xb_5fopen_82',['XB_OPEN',['../xbdbf_8h.html#a9a6dafbb07cac744eb14094efa739409',1,'xbdbf.h']]],
+ ['xb_5fopen_5ferror_83',['XB_OPEN_ERROR',['../xbretcod_8h.html#aaab55236993a1d3acb29206252a904c8',1,'xbretcod.h']]],
+ ['xb_5foverlay_84',['XB_OVERLAY',['../xbdbf_8h.html#a6fe10b307878b4612b04c2c876a4a592',1,'xbdbf.h']]],
+ ['xb_5fpack_2ecpp_85',['xb_pack.cpp',['../xb__pack_8cpp.html',1,'']]],
+ ['xb_5fparse_5ferror_86',['XB_PARSE_ERROR',['../xbretcod_8h.html#aec713cac2b03a0d536a2d16336ae7c0b',1,'xbretcod.h']]],
+ ['xb_5fread_87',['XB_READ',['../xbfile_8h.html#ae58c73e0ba237fcf67ee20feea6c2743',1,'xbfile.h']]],
+ ['xb_5fread_5ferror_88',['XB_READ_ERROR',['../xbretcod_8h.html#adbd40585db8bb748d191f94a33bac710',1,'xbretcod.h']]],
+ ['xb_5fread_5fwrite_89',['XB_READ_WRITE',['../xbfile_8h.html#af991a288c327f6857e90156ea734a633',1,'xbfile.h']]],
+ ['xb_5frename_5ferror_90',['XB_RENAME_ERROR',['../xbretcod_8h.html#a373f30b2efcbbab9f6d060fb3fe8cba3',1,'xbretcod.h']]],
+ ['xb_5fseek_5ferror_91',['XB_SEEK_ERROR',['../xbretcod_8h.html#a0455ad8719e153b08ec68b10c81e9f41',1,'xbretcod.h']]],
+ ['xb_5fsingle_5fuser_92',['XB_SINGLE_USER',['../xbfile_8h.html#a9ec4d60a008c667d9861e3b3814f0232',1,'xbfile.h']]],
+ ['xb_5fsyntax_5ferror_93',['XB_SYNTAX_ERROR',['../xbretcod_8h.html#a5db3a90f215534143bdde81253729c7f',1,'xbretcod.h']]],
+ ['xb_5ftable_5fnot_5flocked_94',['XB_TABLE_NOT_LOCKED',['../xbretcod_8h.html#af6aaf779fddecca521d785666f6dc56b',1,'xbretcod.h']]],
+ ['xb_5ftblinfo_2ecpp_95',['xb_tblinfo.cpp',['../xb__tblinfo_8cpp.html',1,'']]],
+ ['xb_5ftest_5fbcd_2ecpp_96',['xb_test_bcd.cpp',['../xb__test__bcd_8cpp.html',1,'']]],
+ ['xb_5ftest_5fblockread_2ecpp_97',['xb_test_blockread.cpp',['../xb__test__blockread_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdate_2ecpp_98',['xb_test_date.cpp',['../xb__test__date_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv3_5fmemos_2ecpp_99',['xb_test_dbf_v3_memos.cpp',['../xb__test__dbf__v3__memos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv3_5fnomemos_2ecpp_100',['xb_test_dbf_v3_nomemos.cpp',['../xb__test__dbf__v3__nomemos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv4_5fmemos_2ecpp_101',['xb_test_dbf_v4_memos.cpp',['../xb__test__dbf__v4__memos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv4_5fnomemos_2ecpp_102',['xb_test_dbf_v4_nomemos.cpp',['../xb__test__dbf__v4__nomemos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fexpnode_2ecpp_103',['xb_test_expnode.cpp',['../xb__test__expnode_8cpp.html',1,'']]],
+ ['xb_5ftest_5fexpression_2ecpp_104',['xb_test_expression.cpp',['../xb__test__expression_8cpp.html',1,'']]],
+ ['xb_5ftest_5ffile_2ecpp_105',['xb_test_file.cpp',['../xb__test__file_8cpp.html',1,'']]],
+ ['xb_5ftest_5ffilter_2ecpp_106',['xb_test_filter.cpp',['../xb__test__filter_8cpp.html',1,'']]],
+ ['xb_5ftest_5ffuncs_2ecpp_107',['xb_test_funcs.cpp',['../xb__test__funcs_8cpp.html',1,'']]],
+ ['xb_5ftest_5flinklist_2ecpp_108',['xb_test_linklist.cpp',['../xb__test__linklist_8cpp.html',1,'']]],
+ ['xb_5ftest_5flock_2ecpp_109',['xb_test_lock.cpp',['../xb__test__lock_8cpp.html',1,'']]],
+ ['xb_5ftest_5flock2_2ecpp_110',['xb_test_lock2.cpp',['../xb__test__lock2_8cpp.html',1,'']]],
+ ['xb_5ftest_5flog_2ecpp_111',['xb_test_log.cpp',['../xb__test__log_8cpp.html',1,'']]],
+ ['xb_5ftest_5fmdx_2ecpp_112',['xb_test_mdx.cpp',['../xb__test__mdx_8cpp.html',1,'']]],
+ ['xb_5ftest_5fndx_2ecpp_113',['xb_test_ndx.cpp',['../xb__test__ndx_8cpp.html',1,'']]],
+ ['xb_5ftest_5fsql_2ecpp_114',['xb_test_sql.cpp',['../xb__test__sql_8cpp.html',1,'']]],
+ ['xb_5ftest_5fstring_2ecpp_115',['xb_test_string.cpp',['../xb__test__string_8cpp.html',1,'']]],
+ ['xb_5ftest_5ftblmgr_2ecpp_116',['xb_test_tblmgr.cpp',['../xb__test__tblmgr_8cpp.html',1,'']]],
+ ['xb_5ftest_5fuda_2ecpp_117',['xb_test_uda.cpp',['../xb__test__uda_8cpp.html',1,'']]],
+ ['xb_5ftest_5fxbase_2ecpp_118',['xb_test_xbase.cpp',['../xb__test__xbase_8cpp.html',1,'']]],
+ ['xb_5funbalanced_5fparens_119',['XB_UNBALANCED_PARENS',['../xbretcod_8h.html#aff5646a6b0884ff81004de6961473ea6',1,'xbretcod.h']]],
+ ['xb_5funbalanced_5fquotes_120',['XB_UNBALANCED_QUOTES',['../xbretcod_8h.html#aedfa20a6c4eb9ba3063ba56be8280eac',1,'xbretcod.h']]],
+ ['xb_5fundelall_2ecpp_121',['xb_undelall.cpp',['../xb__undelall_8cpp.html',1,'']]],
+ ['xb_5funlock_122',['XB_UNLOCK',['../xbdbf_8h.html#a21389b73e7b4e7e185fa635b9e354c2e',1,'xbdbf.h']]],
+ ['xb_5fupdated_123',['XB_UPDATED',['../xbdbf_8h.html#a26e7eeda69f32bc88b08a208ca9e7991',1,'xbdbf.h']]],
+ ['xb_5fwrite_124',['XB_WRITE',['../xbfile_8h.html#abbf99e259c2f31572c886da6d85b1359',1,'xbfile.h']]],
+ ['xb_5fwrite_5ferror_125',['XB_WRITE_ERROR',['../xbretcod_8h.html#aef34ebe6726057f805d6063130280549',1,'xbretcod.h']]],
+ ['xbalttbl_2ecpp_126',['xbalttbl.cpp',['../xbalttbl_8cpp.html',1,'']]],
+ ['xbase_127',['xbase',['../classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004',1,'xb::xbFile']]],
+ ['xbase_2eh_128',['xbase.h',['../xbase_8h.html',1,'']]],
+ ['xbbcd_129',['xbBcd',['../classxb_1_1xbXBase.html#a86a53ce3efbf910996df0f853f1c0add',1,'xb::xbXBase']]],
+ ['xbbcd_2ecpp_130',['xbbcd.cpp',['../xbbcd_8cpp.html',1,'']]],
+ ['xbbcd_2eh_131',['xbbcd.h',['../xbbcd_8h.html',1,'']]],
+ ['xbblkread_2eh_132',['xbblkread.h',['../xbblkread_8h.html',1,'']]],
+ ['xbblockread_2ecpp_133',['xbblockread.cpp',['../xbblockread_8cpp.html',1,'']]],
+ ['xbbool_134',['xbBool',['../namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f',1,'xb']]],
+ ['xbcrix_2ecpp_135',['xbcrix.cpp',['../xbcrix_8cpp.html',1,'']]],
+ ['xbcrtbl_2ecpp_136',['xbcrtbl.cpp',['../xbcrtbl_8cpp.html',1,'']]],
+ ['xbcrtbl_2esave_2ecpp_137',['xbcrtbl.save.cpp',['../xbcrtbl_8save_8cpp.html',1,'']]],
+ ['xbdate_138',['xbDate',['../classxb_1_1xbDate.html',1,'xb::xbDate'],['../classxb_1_1xbDate.html#a7ab727a7ec184a086ad36ef83b948170',1,'xb::xbDate::xbDate(xbInt32 lJulDate)'],['../classxb_1_1xbDate.html#acf4546f5681735ede18210f60bab68d4',1,'xb::xbDate::xbDate(const xbString &amp;Date8)'],['../classxb_1_1xbDate.html#ac8a4d9330221a3daee21b3c28c1d9719',1,'xb::xbDate::xbDate(const char *Date8)'],['../classxb_1_1xbDate.html#ab3150e7db0ab5db10a07d748b55465eb',1,'xb::xbDate::xbDate()']]],
+ ['xbdate_2ecpp_139',['xbdate.cpp',['../xbdate_8cpp.html',1,'']]],
+ ['xbdate_2eh_140',['xbdate.h',['../xbdate_8h.html',1,'']]],
+ ['xbdbf_141',['xbDbf',['../classxb_1_1xbDbf.html',1,'xb::xbDbf'],['../classxb_1_1xbDbf.html#a84a75f80bc0e9b8a22b728767949c204',1,'xb::xbDbf::xbDbf()'],['../namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b',1,'xb::xbDbf()']]],
+ ['xbdbf_2ecpp_142',['xbdbf.cpp',['../xbdbf_8cpp.html',1,'']]],
+ ['xbdbf_2eh_143',['xbdbf.h',['../xbdbf_8h.html',1,'']]],
+ ['xbdbf3_2ecpp_144',['xbdbf3.cpp',['../xbdbf3_8cpp.html',1,'']]],
+ ['xbdbf4_2ecpp_145',['xbdbf4.cpp',['../xbdbf4_8cpp.html',1,'']]],
+ ['xbdelete_2ecpp_146',['xbdelete.cpp',['../xbdelete_8cpp.html',1,'']]],
+ ['xbdouble_147',['xbDouble',['../namespacexb.html#a25f47b226ce924a5c78f97989b0744a2',1,'xb']]],
+ ['xbdrpix_2ecpp_148',['xbdrpix.cpp',['../xbdrpix_8cpp.html',1,'']]],
+ ['xbdrptbl_2ecpp_149',['xbdrptbl.cpp',['../xbdrptbl_8cpp.html',1,'']]],
+ ['xberrormessages_150',['xbErrorMessages',['../namespacexb.html#a04be228a037d220dd5564f5ef618adcc',1,'xb']]],
+ ['xbexp_151',['xbExp',['../classxb_1_1xbXBase.html#a3c3e5617be811d732472fe2cc8fb18cc',1,'xb::xbXBase']]],
+ ['xbexp_2ecpp_152',['xbexp.cpp',['../xbexp_8cpp.html',1,'']]],
+ ['xbexp_2eh_153',['xbexp.h',['../xbexp_8h.html',1,'']]],
+ ['xbexpnode_2ecpp_154',['xbexpnode.cpp',['../xbexpnode_8cpp.html',1,'']]],
+ ['xbexpnode_2eh_155',['xbexpnode.h',['../xbexpnode_8h.html',1,'']]],
+ ['xbfalse_156',['xbFalse',['../xbtypes_8h.html#adc4b6ca5ad299f63675136d9e03938cc',1,'xbtypes.h']]],
+ ['xbfclose_157',['xbFclose',['../classxb_1_1xbFile.html#a18830b5755d74818f60d9c7ce38ddf2d',1,'xb::xbFile']]],
+ ['xbfeof_158',['xbFeof',['../classxb_1_1xbFile.html#af5b6356832d2a67212070a1aa605f170',1,'xb::xbFile']]],
+ ['xbfflush_159',['xbFflush',['../classxb_1_1xbFile.html#ad205184d43409f04216540ae22f15009',1,'xb::xbFile']]],
+ ['xbfgetc_160',['xbFgetc',['../classxb_1_1xbFile.html#afb1c584d2895ffb7834df80aea7eb1e4',1,'xb::xbFile::xbFgetc(xbInt32 &amp;c)'],['../classxb_1_1xbFile.html#a5ee229bda4d7d6695e122200e581e7a6',1,'xb::xbFile::xbFgetc(char &amp;c)']]],
+ ['xbfgets_161',['xbFgets',['../classxb_1_1xbFile.html#ad245955ace26e5dde85fd4373b30d026',1,'xb::xbFile']]],
+ ['xbfields_2ecpp_162',['xbfields.cpp',['../xbfields_8cpp.html',1,'']]],
+ ['xbfile_163',['xbFile',['../classxb_1_1xbFile.html',1,'xb::xbFile'],['../classxb_1_1xbFile.html#a869eedd74c6eddc308852eb546c87176',1,'xb::xbFile::xbFile()']]],
+ ['xbfile_2ecpp_164',['xbfile.cpp',['../xbfile_8cpp.html',1,'']]],
+ ['xbfile_2eh_165',['xbfile.h',['../xbfile_8h.html',1,'']]],
+ ['xbfileno_166',['xbFileNo',['../xbtypes_8h.html#a2c65f692ac861990861575e18f72f6eb',1,'xbtypes.h']]],
+ ['xbfilter_2ecpp_167',['xbfilter.cpp',['../xbfilter_8cpp.html',1,'']]],
+ ['xbfilter_2eh_168',['xbfilter.h',['../xbfilter_8h.html',1,'']]],
+ ['xbfloat_169',['xbFloat',['../namespacexb.html#a83aa6a550398db55973aa9fb4257e66e',1,'xb']]],
+ ['xbfopen_170',['xbFopen',['../classxb_1_1xbFile.html#ab0fa19686ca8953ff4b556fb5b249135',1,'xb::xbFile::xbFopen(const xbString &amp;sMode, const xbString &amp;sFileName, xbInt16 iShareMode)'],['../classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c',1,'xb::xbFile::xbFopen(xbInt16 iOpenMode)'],['../classxb_1_1xbFile.html#a0548cedf0f26b7d8ac221f75b0cd048c',1,'xb::xbFile::xbFopen(const xbString &amp;sOpenMode, xbInt16 iShareMode)'],['../classxb_1_1xbFile.html#aabd113333b49c36cad23244b392baab4',1,'xb::xbFile::xbFopen(xbInt16 iOpenMode, xbInt16 iShareMode)']]],
+ ['xbfputc_171',['xbFputc',['../classxb_1_1xbFile.html#af2e940c78956e5cb6824f9a1bc404896',1,'xb::xbFile::xbFputc(xbInt32 c)'],['../classxb_1_1xbFile.html#a863f74cf17df8186d88586b4d2a6441a',1,'xb::xbFile::xbFputc(xbInt32 c, xbInt32 iNoTimes)']]],
+ ['xbfputs_172',['xbFputs',['../classxb_1_1xbFile.html#a698f3b40216778562e639e6ca1a47573',1,'xb::xbFile']]],
+ ['xbfread_173',['xbFread',['../classxb_1_1xbFile.html#ab4f6afaa1f77539f27a4f05c26e54e2f',1,'xb::xbFile']]],
+ ['xbfseek_174',['xbFseek',['../classxb_1_1xbFile.html#a5337ab8918df240910c0d19b4f298e3d',1,'xb::xbFile']]],
+ ['xbftell_175',['xbFtell',['../classxb_1_1xbFile.html#a0e1c06aedfa7fbcb92e117f891edd13b',1,'xb::xbFile']]],
+ ['xbfturnofffilebuffering_176',['xbFTurnOffFileBuffering',['../classxb_1_1xbFile.html#a9891b792f585a696f38a5cf959e30918',1,'xb::xbFile']]],
+ ['xbfuncs_2ecpp_177',['xbfuncs.cpp',['../xbfuncs_8cpp.html',1,'']]],
+ ['xbfwrite_178',['xbFwrite',['../classxb_1_1xbFile.html#a6aadd871d1782944703fed773d44b85f',1,'xb::xbFile']]],
+ ['xbindex_2eh_179',['xbindex.h',['../xbindex_8h.html',1,'']]],
+ ['xbinsert_2ecpp_180',['xbinsert.cpp',['../xbinsert_8cpp.html',1,'']]],
+ ['xbixbase_2ecpp_181',['xbixbase.cpp',['../xbixbase_8cpp.html',1,'']]],
+ ['xbixmdx_2ecpp_182',['xbixmdx.cpp',['../xbixmdx_8cpp.html',1,'']]],
+ ['xbixndx_2ecpp_183',['xbixndx.cpp',['../xbixndx_8cpp.html',1,'']]],
+ ['xblnklst_2eh_184',['xblnklst.h',['../xblnklst_8h.html',1,'']]],
+ ['xblnklstord_2eh_185',['xblnklstord.h',['../xblnklstord_8h.html',1,'']]],
+ ['xblnknod_2eh_186',['xblnknod.h',['../xblnknod_8h.html',1,'']]],
+ ['xblog_187',['xbLog',['../namespacexb.html#a4a31fbe9110c9e55495ce71e642d785c',1,'xb']]],
+ ['xblog_2ecpp_188',['xblog.cpp',['../xblog_8cpp.html',1,'']]],
+ ['xblog_2eh_189',['xblog.h',['../xblog_8h.html',1,'']]],
+ ['xbmemcmp_190',['xbMemcmp',['../classxb_1_1xbXBase.html#a1b239c021358476382942522911b5c66',1,'xb::xbXBase']]],
+ ['xbmemo_2ecpp_191',['xbmemo.cpp',['../xbmemo_8cpp.html',1,'']]],
+ ['xbmemo_2eh_192',['xbmemo.h',['../xbmemo_8h.html',1,'']]],
+ ['xbmemo3_2ecpp_193',['xbmemo3.cpp',['../xbmemo3_8cpp.html',1,'']]],
+ ['xbmemo4_2ecpp_194',['xbmemo4.cpp',['../xbmemo4_8cpp.html',1,'']]],
+ ['xbofft_195',['xbOffT',['../namespacexb.html#ac963d9fde6debb416303cfbed35fb793',1,'xb']]],
+ ['xbreaduntil_196',['xbReadUntil',['../classxb_1_1xbFile.html#a08463f506f425c2385acbe1a561506e9',1,'xb::xbFile']]],
+ ['xbremove_197',['xbRemove',['../classxb_1_1xbFile.html#ab3c668a8570433188382d31d7c60bd48',1,'xb::xbFile::xbRemove()'],['../classxb_1_1xbFile.html#a6d919366c2ec95e529906bf8842cbf07',1,'xb::xbFile::xbRemove(const xbString &amp;sFileName, xbInt16 iOption)'],['../classxb_1_1xbFile.html#a58f6a6751fdf7e9549c273bb75d93eb5',1,'xb::xbFile::xbRemove(const xbString &amp;sFileName)']]],
+ ['xbrename_198',['xbRename',['../classxb_1_1xbFile.html#afc8ce113aa72611a278233f9bb170012',1,'xb::xbFile']]],
+ ['xbretcod_2eh_199',['xbretcod.h',['../xbretcod_8h.html',1,'']]],
+ ['xbrewind_200',['xbRewind',['../classxb_1_1xbFile.html#a7996b6e084665c37c3892faea64b3505',1,'xb::xbFile']]],
+ ['xbschema_201',['xbSchema',['../structxb_1_1xbSchema.html',1,'xb']]],
+ ['xbselect_2ecpp_202',['xbselect.cpp',['../xbselect_8cpp.html',1,'']]],
+ ['xbset_2ecpp_203',['xbset.cpp',['../xbset_8cpp.html',1,'']]],
+ ['xbsleep_204',['xbSleep',['../classxb_1_1xbXBase.html#a0915aff7be4b2dd3e881f3c5d0da4baf',1,'xb::xbXBase']]],
+ ['xbsql_2ecpp_205',['xbsql.cpp',['../xbsql_8cpp.html',1,'']]],
+ ['xbsql_2eh_206',['xbsql.h',['../xbsql_8h.html',1,'']]],
+ ['xbssv_207',['xbSsv',['../classxb_1_1xbSsv.html',1,'xb::xbSsv'],['../classxb_1_1xbSsv.html#a58f85692c3167af20b1a7c17c621523b',1,'xb::xbSsv::xbSsv()']]],
+ ['xbssv_2ecpp_208',['xbssv.cpp',['../xbssv_8cpp.html',1,'']]],
+ ['xbssv_2eh_209',['xbssv.h',['../xbssv_8h.html',1,'']]],
+ ['xbstmt_2ecpp_210',['xbstmt.cpp',['../xbstmt_8cpp.html',1,'']]],
+ ['xbstring_211',['xbString',['../classxb_1_1xbString.html',1,'xb::xbString'],['../classxb_1_1xbString.html#ad865b55e3b08dffd527afee8e7e8e3fe',1,'xb::xbString::xbString(xbDouble d)'],['../classxb_1_1xbString.html#a25856311106c5fb15d39017b63f0ddc7',1,'xb::xbString::xbString(const char *=&quot;&quot;)'],['../classxb_1_1xbString.html#a0d81016b93fc36ebbbafacf35c677f07',1,'xb::xbString::xbString(const xbString &amp;s)'],['../classxb_1_1xbString.html#a63f9313217e0ff3c9789ec59316216a1',1,'xb::xbString::xbString(xbUInt32 size)'],['../classxb_1_1xbString.html#a14bbaa293c8d40dd6c64332f2668a92e',1,'xb::xbString::xbString(char c)'],['../classxb_1_1xbString.html#a18f3598dcdf2ec5692274fc8ee769ad7',1,'xb::xbString::xbString(const char *s, xbUInt32 lMaxLen)']]],
+ ['xbstring_2ecpp_212',['xbstring.cpp',['../xbstring_8cpp.html',1,'']]],
+ ['xbstring_2eh_213',['xbstring.h',['../xbstring_8h.html',1,'']]],
+ ['xbtag_2ecpp_214',['xbtag.cpp',['../xbtag_8cpp.html',1,'']]],
+ ['xbtag_2eh_215',['xbtag.h',['../xbtag_8h.html',1,'']]],
+ ['xbtbllist_216',['xbTblList',['../structxb_1_1xbTblList.html',1,'xb']]],
+ ['xbtblmgr_217',['xbTblMgr',['../classxb_1_1xbTblMgr.html',1,'xb::xbTblMgr'],['../classxb_1_1xbTblMgr.html#aad83f5ecc184ca6cbdfc6f356b598d6c',1,'xb::xbTblMgr::xbTblMgr()']]],
+ ['xbtblmgr_2ecpp_218',['xbtblmgr.cpp',['../xbtblmgr_8cpp.html',1,'']]],
+ ['xbtblmgr_2eh_219',['xbtblmgr.h',['../xbtblmgr_8h.html',1,'']]],
+ ['xbtrue_220',['xbTrue',['../xbtypes_8h.html#ab0ae00665298fe7f5292691cb98ec2d9',1,'xbtypes.h']]],
+ ['xbtruncate_221',['xbTruncate',['../classxb_1_1xbFile.html#a518bfcbfa3699d883cf89affee383296',1,'xb::xbFile']]],
+ ['xbtypes_2eh_222',['xbtypes.h',['../xbtypes_8h.html',1,'']]],
+ ['xbuda_2ecpp_223',['xbuda.cpp',['../xbuda_8cpp.html',1,'']]],
+ ['xbuda_2eh_224',['xbuda.h',['../xbuda_8h.html',1,'']]],
+ ['xbxbase_225',['xbXBase',['../classxb_1_1xbXBase.html',1,'xb::xbXBase'],['../classxb_1_1xbXBase.html#a6c68588e33946fb5416af3f86fe83224',1,'xb::xbXBase::xbXBase()'],['../namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0',1,'xb::xbXBase()']]],
+ ['xbxbase_2ecpp_226',['xbxbase.cpp',['../xbxbase_8cpp.html',1,'']]],
+ ['xbxbase_2eh_227',['xbxbase.h',['../xbxbase_8h.html',1,'']]]
];
diff --git a/docs/doxygen/html/search/all_6.js b/docs/doxygen/html/search/all_6.js
index 580f3f8..1cedf85 100644
--- a/docs/doxygen/html/search/all_6.js
+++ b/docs/doxygen/html/search/all_6.js
@@ -2,65 +2,68 @@ var searchData=
[
['getautocommit_0',['GetAutoCommit',['../classxb_1_1xbDbf.html#ae0c00226fd2ea7a67f101e795467ed68',1,'xb::xbDbf::GetAutoCommit(xbInt16 iOption) const'],['../classxb_1_1xbDbf.html#abb9e20c5efacd4fea80f1515abbc6b55',1,'xb::xbDbf::GetAutoCommit() const']]],
['getblocksize_1',['GetBlockSize',['../classxb_1_1xbFile.html#a638e14262410a1627819f016a16cdce2',1,'xb::xbFile']]],
- ['getcharacter_2',['GetCharacter',['../classxb_1_1xbString.html#a685187a5f8401b322fc61f3fbe56330d',1,'xb::xbString']]],
- ['getcurrecno_3',['GetCurRecNo',['../classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503',1,'xb::xbDbf']]],
- ['getdatadirectory_4',['GetDataDirectory',['../classxb_1_1xbSsv.html#a1d803a4bfc8ba0561267a0bf9e51f7d9',1,'xb::xbSsv']]],
- ['getdatefield_5',['GetDateField',['../classxb_1_1xbDbf.html#af78ef1fba949463ff7f829d3cffc4555',1,'xb::xbDbf::GetDateField(xbInt16 iFieldNo, xbDate &amp;dt) const'],['../classxb_1_1xbDbf.html#ac624e06a97666bfd64b4f252b4548b36',1,'xb::xbDbf::GetDateField(const xbString &amp;sFieldName, xbDate &amp;dt) const']]],
- ['getdbfptr_6',['GetDbfPtr',['../classxb_1_1xbTblMgr.html#ad8a5d28a2ee6720a9aa74bcb45662cf5',1,'xb::xbTblMgr::GetDbfPtr(const xbString &amp;sTblAlias) const'],['../classxb_1_1xbTblMgr.html#a801dfecf7fc216954b4197b2c31b25d6',1,'xb::xbTblMgr::GetDbfPtr(xbInt16 sItemNo) const']]],
- ['getdbfstatus_7',['GetDbfStatus',['../classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6',1,'xb::xbDbf']]],
- ['getdefaultautocommit_8',['GetDefaultAutoCommit',['../classxb_1_1xbSsv.html#a6982f973e81587b04916f4509746aaf5',1,'xb::xbSsv']]],
- ['getdefaultdateformat_9',['GetDefaultDateFormat',['../classxb_1_1xbSsv.html#a6fbb9c3a550ab0b3378f9586a57791d2',1,'xb::xbSsv']]],
- ['getdefaultlogdirectory_10',['GetDefaultLogDirectory',['../classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c',1,'xb::xbSsv']]],
- ['getdefaultlogfilename_11',['GetDefaultLogFileName',['../classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79',1,'xb::xbSsv']]],
+ ['getbof_2',['GetBof',['../classxb_1_1xbDbf.html#ad0827a43c025c1184ffebab74cc9e779',1,'xb::xbDbf']]],
+ ['getcharacter_3',['GetCharacter',['../classxb_1_1xbString.html#a685187a5f8401b322fc61f3fbe56330d',1,'xb::xbString']]],
+ ['getcmdlineopt_4',['GetCmdLineOpt',['../classxb_1_1xbXBase.html#aadecb3ac460d8e94b88b2e809e22f48e',1,'xb::xbXBase::GetCmdLineOpt(xbInt32 lArgc, char **argv, const char *sOptRqst, xbString &amp;sParmOut)'],['../classxb_1_1xbXBase.html#a8612e0c5334349fbceb9394b47817fd5',1,'xb::xbXBase::GetCmdLineOpt(xbInt32 lArgc, char **argv, xbString &amp;sOptRqst, xbString &amp;sParmOut)']]],
+ ['getcurrecno_5',['GetCurRecNo',['../classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503',1,'xb::xbDbf']]],
+ ['getdatadirectory_6',['GetDataDirectory',['../classxb_1_1xbSsv.html#a1d803a4bfc8ba0561267a0bf9e51f7d9',1,'xb::xbSsv']]],
+ ['getdatefield_7',['GetDateField',['../classxb_1_1xbDbf.html#af78ef1fba949463ff7f829d3cffc4555',1,'xb::xbDbf::GetDateField(xbInt16 iFieldNo, xbDate &amp;dt) const'],['../classxb_1_1xbDbf.html#ac624e06a97666bfd64b4f252b4548b36',1,'xb::xbDbf::GetDateField(const xbString &amp;sFieldName, xbDate &amp;dt) const']]],
+ ['getdbfptr_8',['GetDbfPtr',['../classxb_1_1xbTblMgr.html#ad8a5d28a2ee6720a9aa74bcb45662cf5',1,'xb::xbTblMgr::GetDbfPtr(const xbString &amp;sTblAlias) const'],['../classxb_1_1xbTblMgr.html#a801dfecf7fc216954b4197b2c31b25d6',1,'xb::xbTblMgr::GetDbfPtr(xbInt16 sItemNo) const']]],
+ ['getdbfstatus_9',['GetDbfStatus',['../classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6',1,'xb::xbDbf']]],
+ ['getdefaultautocommit_10',['GetDefaultAutoCommit',['../classxb_1_1xbSsv.html#a6982f973e81587b04916f4509746aaf5',1,'xb::xbSsv']]],
+ ['getdefaultdateformat_11',['GetDefaultDateFormat',['../classxb_1_1xbSsv.html#a6fbb9c3a550ab0b3378f9586a57791d2',1,'xb::xbSsv']]],
['getdirectory_12',['GetDirectory',['../classxb_1_1xbFile.html#acd0fb2166b2bff7e8a1cf65a7bc8be1e',1,'xb::xbFile']]],
['getdoublefield_13',['GetDoubleField',['../classxb_1_1xbDbf.html#a4556041a7ff2f6b6f986729901c11f08',1,'xb::xbDbf::GetDoubleField(xbInt16 FieldNo, xbDouble &amp;dFieldValue) const'],['../classxb_1_1xbDbf.html#a2370b5e736931441a5968649291b9ef4',1,'xb::xbDbf::GetDoubleField(xbInt16 FieldNo, xbDouble &amp;dFieldValue, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#a6e6774df0f2d7733f4b25a9989596d95',1,'xb::xbDbf::GetDoubleField(const xbString &amp;sFieldName, xbDouble &amp;dFieldValue) const']]],
['getendiantype_14',['GetEndianType',['../classxb_1_1xbSsv.html#a49cd162f066eef2b829ba7c9f6620243',1,'xb::xbSsv']]],
- ['geterrormessage_15',['GetErrorMessage',['../classxb_1_1xbSsv.html#a56961d2a67b8e7470098626ac4dac7e4',1,'xb::xbSsv']]],
- ['getfield_16',['GetField',['../classxb_1_1xbDbf.html#ad245a26eb8b79610c9ae7bab19e05513',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#ac81f078f3c932f0da60ad1fbdd848d3e',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue) const'],['../classxb_1_1xbDbf.html#a9a0fcf7e2040ab483e3807927833cb26',1,'xb::xbDbf::GetField(const xbString &amp;sFieldName, xbString &amp;sFieldValue) const']]],
- ['getfieldcnt_17',['GetFieldCnt',['../classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e',1,'xb::xbDbf']]],
- ['getfielddecimal_18',['GetFieldDecimal',['../classxb_1_1xbDbf.html#a607f774fcd6dc0b9913d7a7801b60db2',1,'xb::xbDbf::GetFieldDecimal(const xbString &amp;sFieldName, xbInt16 &amp;iFieldDecimal) const'],['../classxb_1_1xbDbf.html#abcb4defad2e1b6e67f63cc60737ad840',1,'xb::xbDbf::GetFieldDecimal(xbInt16 iFieldNo, xbInt16 &amp;iFieldDecimal) const']]],
- ['getfieldlen_19',['GetFieldLen',['../classxb_1_1xbDbf.html#adda4302b58cc6109b048f19d9b68bbd4',1,'xb::xbDbf::GetFieldLen(xbInt16 iFieldNo, xbInt16 &amp;iFieldLen) const'],['../classxb_1_1xbDbf.html#acf06dbccdba1a4bcd90fa0bea6cca59b',1,'xb::xbDbf::GetFieldLen(const xbString &amp;sFieldName, xbInt16 &amp;iFieldLen) const']]],
- ['getfieldname_20',['GetFieldName',['../classxb_1_1xbDbf.html#a5e3e4368bfba1724c016b8859023e34c',1,'xb::xbDbf']]],
- ['getfieldno_21',['GetFieldNo',['../classxb_1_1xbDbf.html#aed9113b5095c6df1b9c854cbd0d8047b',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName, xbInt16 &amp;iFieldNo) const'],['../classxb_1_1xbDbf.html#aad9029e63909aeb77d8473256d88bea8',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName) const']]],
- ['getfieldtype_22',['GetFieldType',['../classxb_1_1xbDbf.html#a5143973e4f165651152aa13c8fd45f84',1,'xb::xbDbf::GetFieldType(xbInt16 iFieldNo, char &amp;cFieldType) const'],['../classxb_1_1xbDbf.html#a181db879f1a75f93a34c03513a0b2fea',1,'xb::xbDbf::GetFieldType(const xbString &amp;sFieldName, char &amp;cFieldType) const']]],
- ['getfiledirpart_23',['GetFileDirPart',['../classxb_1_1xbFile.html#a60c53998e3d1b694134b20a87bc9bf5a',1,'xb::xbFile::GetFileDirPart(xbString &amp;sFileDirPartOut) const'],['../classxb_1_1xbFile.html#af5127c92892816e9bbc5c19653c4147a',1,'xb::xbFile::GetFileDirPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileDirPartOut) const']]],
- ['getfileextpart_24',['GetFileExtPart',['../classxb_1_1xbFile.html#a57a9222e5cbb51019d4eeb2c3ac89fa2',1,'xb::xbFile::GetFileExtPart(xbString &amp;sFileExtPartOut) const'],['../classxb_1_1xbFile.html#ab289b6ffe955321160c1f90220c22e25',1,'xb::xbFile::GetFileExtPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileExtPartOut) const']]],
- ['getfilemtime_25',['GetFileMtime',['../classxb_1_1xbFile.html#a02df78f4c90313243f508fc56b95aba8',1,'xb::xbFile']]],
- ['getfilename_26',['GetFileName',['../classxb_1_1xbFile.html#ac95cb882ccbcdedc9a233c6ad9fed07a',1,'xb::xbFile']]],
- ['getfilenamepart_27',['GetFileNamePart',['../classxb_1_1xbFile.html#a81422b3dd52763d2cc6c77237ec9af0a',1,'xb::xbFile::GetFileNamePart(xbString &amp;sFileNamePartOut) const'],['../classxb_1_1xbFile.html#a6110763c5ae996b72c7a62c15bdecc73',1,'xb::xbFile::GetFileNamePart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileNamePartOut) const']]],
- ['getfilesize_28',['GetFileSize',['../classxb_1_1xbFile.html#a50b63c39e49d44e52078038027b24cc5',1,'xb::xbFile']]],
- ['getfiletype_29',['GetFileType',['../classxb_1_1xbFile.html#a5548236d38d43b89ae29b9a015b1f678',1,'xb::xbFile']]],
- ['getfirstrecord_30',['GetFirstRecord',['../classxb_1_1xbDbf.html#a6fc5b8a3e2f177d5ceaf9d975cbb5226',1,'xb::xbDbf::GetFirstRecord()'],['../classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a',1,'xb::xbDbf::GetFirstRecord(xbInt16 iOption)']]],
- ['getfloatfield_31',['GetFloatField',['../classxb_1_1xbDbf.html#a3443f646038ced14425f067a59c0f2da',1,'xb::xbDbf::GetFloatField(xbInt16 iFieldNo, xbFloat &amp;fFieldValue) const'],['../classxb_1_1xbDbf.html#a81ef2f36f921d7ece066a592eb6393eb',1,'xb::xbDbf::GetFloatField(const xbString &amp;sFieldName, xbFloat &amp;fFieldValue) const']]],
- ['getfqfilename_32',['GetFqFileName',['../classxb_1_1xbFile.html#a31b4e641f93206ba23e2a5a27491dcd4',1,'xb::xbFile']]],
- ['getfunctioninfo_33',['GetFunctionInfo',['../classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1',1,'xb::xbXBase']]],
- ['getlastpos_34',['GetLastPos',['../classxb_1_1xbString.html#ac7698665f44413a5e99a5b5bc573c6df',1,'xb::xbString::GetLastPos(char c) const'],['../classxb_1_1xbString.html#a1c55587904fe7e534290559d0ecb8646',1,'xb::xbString::GetLastPos(const char *s) const']]],
- ['getlastrecord_35',['GetLastRecord',['../classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964',1,'xb::xbDbf::GetLastRecord()'],['../classxb_1_1xbDbf.html#a8ccfa2291417412b6894940d1b92f9a6',1,'xb::xbDbf::GetLastRecord(xbInt16 iOption)']]],
- ['getlogdirectory_36',['GetLogDirectory',['../classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b',1,'xb::xbXBase']]],
- ['getlogfilename_37',['GetLogFileName',['../classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af',1,'xb::xbXBase']]],
- ['getlogfqfilename_38',['GetLogFqFileName',['../classxb_1_1xbXBase.html#ab5d63cd7d9137eba8a1d4d9c3df522b7',1,'xb::xbXBase']]],
- ['getlogicalfield_39',['GetLogicalField',['../classxb_1_1xbDbf.html#aaf615ddcf08f8cd14efc713c2a8d7ae1',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData) const'],['../classxb_1_1xbDbf.html#a943cea7fde1b06c1a05184193eff8d2d',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbBool &amp;bFieldData) const'],['../classxb_1_1xbDbf.html#ab28feef20c988b0a6f1c1911a45377b0',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#a9cd6819bfd932ff8507e54d9cb9a624e',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbString &amp;sFieldData) const'],['../classxb_1_1xbDbf.html#a3254f091fc4a1404abed3dd2bcdd6ce6',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbString &amp;sFieldData) const']]],
- ['getlogstatus_40',['GetLogStatus',['../classxb_1_1xbXBase.html#ade34cd72c2a7e70fb55429a8a6f6c028',1,'xb::xbXBase']]],
- ['getlongfield_41',['GetLongField',['../classxb_1_1xbDbf.html#abe525c0820640e0a9e169d0b7913cfa1',1,'xb::xbDbf::GetLongField(xbInt16 iFieldNo, xbInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a7b8ef75b17941beac17e50e969b2d3db',1,'xb::xbDbf::GetLongField(const xbString &amp;sFieldName, xbInt32 &amp;lFieldValue) const']]],
- ['getmultiuser_42',['GetMultiUser',['../classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5',1,'xb::xbSsv']]],
- ['getnextrecord_43',['GetNextRecord',['../classxb_1_1xbDbf.html#ab896fe3b734f556de578d30f92b18fe2',1,'xb::xbDbf::GetNextRecord()'],['../classxb_1_1xbDbf.html#a3191428a7a92d9107d8d42448884f2ac',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption)'],['../classxb_1_1xbDbf.html#a18fdcb4ab15b36cd47fa6f6f7a540d1a',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption, xbUInt32 ulStartRec)']]],
- ['getnextsqlcmd_44',['GetNextSqlCmd',['../xb__execsql_8cpp.html#af888ba5e7e94d92c2165362b87f1ea0e',1,'xb_execsql.cpp']]],
- ['getopenmode_45',['GetOpenMode',['../classxb_1_1xbFile.html#a3c500dc9dac22c49496e4b29386b2dd3',1,'xb::xbFile']]],
- ['getopentablecount_46',['GetOpenTableCount',['../classxb_1_1xbTblMgr.html#ad0d2d4adabc0dc0e761cfdee63c84069',1,'xb::xbTblMgr']]],
- ['getpathseparator_47',['GetPathSeparator',['../classxb_1_1xbString.html#af8b8b808cf43cd352321b43f500142db',1,'xb::xbString']]],
- ['getprevrecord_48',['GetPrevRecord',['../classxb_1_1xbDbf.html#a7eadc7b08d73003802b90584f7b33387',1,'xb::xbDbf::GetPrevRecord(xbInt16 iOption)'],['../classxb_1_1xbDbf.html#ab3d248e5221b4f0809897cd43af17a1e',1,'xb::xbDbf::GetPrevRecord()']]],
- ['getrawfield_49',['GetRawField',['../classxb_1_1xbDbf.html#aabd146c0e1054ab905ec96aedd84b02e',1,'xb::xbDbf']]],
- ['getrecord_50',['GetRecord',['../classxb_1_1xbDbf.html#a26fba086b07caeab95066bf1c8d25161',1,'xb::xbDbf']]],
- ['getrecordbuf_51',['GetRecordBuf',['../classxb_1_1xbDbf.html#aa3e38c4057d726a28a27d07a1610d124',1,'xb::xbDbf']]],
- ['getrecordcnt_52',['GetRecordCnt',['../classxb_1_1xbDbf.html#ac196ad55335e1f4789d698748434dc89',1,'xb::xbDbf']]],
- ['getrecordcount_53',['GetRecordCount',['../classxb_1_1xbDbf.html#a0aaa06d6028e75efc6b5131f7356ecce',1,'xb::xbDbf']]],
- ['getrecordlen_54',['GetRecordLen',['../classxb_1_1xbDbf.html#ab50d76c6e29e81e347a6feb04c2f62bb',1,'xb::xbDbf']]],
- ['getsharemode_55',['GetShareMode',['../classxb_1_1xbFile.html#a9b63e05b77f477ff6109ff7b9432c1b6',1,'xb::xbFile']]],
- ['getsize_56',['GetSize',['../classxb_1_1xbString.html#a6c33e73659f8e98819289d2661c7271c',1,'xb::xbString']]],
- ['gettblalias_57',['GetTblAlias',['../classxb_1_1xbDbf.html#a27758a325c097f204247908b65ba7fbd',1,'xb::xbDbf']]],
- ['gettbllistentry_58',['GetTblListEntry',['../classxb_1_1xbTblMgr.html#acbf148ddba4297021cfb980a161ebef9',1,'xb::xbTblMgr']]],
- ['getulongfield_59',['GetULongField',['../classxb_1_1xbDbf.html#a67e3a050f9090edf69eee75aef7f5d83',1,'xb::xbDbf::GetULongField(xbInt16 iFieldNo, xbUInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a039eb02418ec4ca862adbc0f95b9cbec',1,'xb::xbDbf::GetULongField(const xbString &amp;sFieldName, xbUInt32 &amp;lFieldValue) const']]],
- ['getversion_60',['GetVersion',['../classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6',1,'xb::xbDbf']]],
- ['getxbasefiletypebyte_61',['GetXbaseFileTypeByte',['../classxb_1_1xbFile.html#aaf2e697751a0beff41432a66bb83fb5e',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, xbInt16 &amp;iVersion)'],['../classxb_1_1xbFile.html#a7af337808919680b90710ad5e8a99232',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte)'],['../classxb_1_1xbFile.html#a78aebdd21d3de46a450d5f835e3027f6',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte, xbInt16 &amp;iVersion)']]],
- ['getxbaseptr_62',['GetXbasePtr',['../classxb_1_1xbDbf.html#ab21ec23c076b0c9affdc0f6672bd133f',1,'xb::xbDbf']]]
+ ['geteof_15',['GetEof',['../classxb_1_1xbDbf.html#a256dc1f98626fa77da24e91a38ab5b4d',1,'xb::xbDbf']]],
+ ['geterrormessage_16',['GetErrorMessage',['../classxb_1_1xbSsv.html#a56961d2a67b8e7470098626ac4dac7e4',1,'xb::xbSsv']]],
+ ['getfield_17',['GetField',['../classxb_1_1xbDbf.html#a9a0fcf7e2040ab483e3807927833cb26',1,'xb::xbDbf::GetField(const xbString &amp;sFieldName, xbString &amp;sFieldValue) const'],['../classxb_1_1xbDbf.html#ad245a26eb8b79610c9ae7bab19e05513',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#ac81f078f3c932f0da60ad1fbdd848d3e',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue) const']]],
+ ['getfieldcnt_18',['GetFieldCnt',['../classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e',1,'xb::xbDbf']]],
+ ['getfielddecimal_19',['GetFieldDecimal',['../classxb_1_1xbDbf.html#abcb4defad2e1b6e67f63cc60737ad840',1,'xb::xbDbf::GetFieldDecimal(xbInt16 iFieldNo, xbInt16 &amp;iFieldDecimal) const'],['../classxb_1_1xbDbf.html#a607f774fcd6dc0b9913d7a7801b60db2',1,'xb::xbDbf::GetFieldDecimal(const xbString &amp;sFieldName, xbInt16 &amp;iFieldDecimal) const']]],
+ ['getfieldlen_20',['GetFieldLen',['../classxb_1_1xbDbf.html#adda4302b58cc6109b048f19d9b68bbd4',1,'xb::xbDbf::GetFieldLen(xbInt16 iFieldNo, xbInt16 &amp;iFieldLen) const'],['../classxb_1_1xbDbf.html#acf06dbccdba1a4bcd90fa0bea6cca59b',1,'xb::xbDbf::GetFieldLen(const xbString &amp;sFieldName, xbInt16 &amp;iFieldLen) const']]],
+ ['getfieldname_21',['GetFieldName',['../classxb_1_1xbDbf.html#a5e3e4368bfba1724c016b8859023e34c',1,'xb::xbDbf']]],
+ ['getfieldno_22',['GetFieldNo',['../classxb_1_1xbDbf.html#aed9113b5095c6df1b9c854cbd0d8047b',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName, xbInt16 &amp;iFieldNo) const'],['../classxb_1_1xbDbf.html#aad9029e63909aeb77d8473256d88bea8',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName) const']]],
+ ['getfieldtype_23',['GetFieldType',['../classxb_1_1xbDbf.html#a5143973e4f165651152aa13c8fd45f84',1,'xb::xbDbf::GetFieldType(xbInt16 iFieldNo, char &amp;cFieldType) const'],['../classxb_1_1xbDbf.html#a181db879f1a75f93a34c03513a0b2fea',1,'xb::xbDbf::GetFieldType(const xbString &amp;sFieldName, char &amp;cFieldType) const']]],
+ ['getfiledirpart_24',['GetFileDirPart',['../classxb_1_1xbFile.html#a60c53998e3d1b694134b20a87bc9bf5a',1,'xb::xbFile::GetFileDirPart(xbString &amp;sFileDirPartOut) const'],['../classxb_1_1xbFile.html#af5127c92892816e9bbc5c19653c4147a',1,'xb::xbFile::GetFileDirPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileDirPartOut) const']]],
+ ['getfileextpart_25',['GetFileExtPart',['../classxb_1_1xbFile.html#a57a9222e5cbb51019d4eeb2c3ac89fa2',1,'xb::xbFile::GetFileExtPart(xbString &amp;sFileExtPartOut) const'],['../classxb_1_1xbFile.html#ab289b6ffe955321160c1f90220c22e25',1,'xb::xbFile::GetFileExtPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileExtPartOut) const']]],
+ ['getfilemtime_26',['GetFileMtime',['../classxb_1_1xbFile.html#a02df78f4c90313243f508fc56b95aba8',1,'xb::xbFile']]],
+ ['getfilename_27',['GetFileName',['../classxb_1_1xbFile.html#ac95cb882ccbcdedc9a233c6ad9fed07a',1,'xb::xbFile']]],
+ ['getfilenamepart_28',['GetFileNamePart',['../classxb_1_1xbFile.html#a81422b3dd52763d2cc6c77237ec9af0a',1,'xb::xbFile::GetFileNamePart(xbString &amp;sFileNamePartOut) const'],['../classxb_1_1xbFile.html#a6110763c5ae996b72c7a62c15bdecc73',1,'xb::xbFile::GetFileNamePart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileNamePartOut) const']]],
+ ['getfilesize_29',['GetFileSize',['../classxb_1_1xbFile.html#a50b63c39e49d44e52078038027b24cc5',1,'xb::xbFile']]],
+ ['getfiletype_30',['GetFileType',['../classxb_1_1xbFile.html#a5548236d38d43b89ae29b9a015b1f678',1,'xb::xbFile']]],
+ ['getfirstrecord_31',['GetFirstRecord',['../classxb_1_1xbDbf.html#a6fc5b8a3e2f177d5ceaf9d975cbb5226',1,'xb::xbDbf::GetFirstRecord()'],['../classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a',1,'xb::xbDbf::GetFirstRecord(xbInt16 iOption)']]],
+ ['getfloatfield_32',['GetFloatField',['../classxb_1_1xbDbf.html#a81ef2f36f921d7ece066a592eb6393eb',1,'xb::xbDbf::GetFloatField(const xbString &amp;sFieldName, xbFloat &amp;fFieldValue) const'],['../classxb_1_1xbDbf.html#a3443f646038ced14425f067a59c0f2da',1,'xb::xbDbf::GetFloatField(xbInt16 iFieldNo, xbFloat &amp;fFieldValue) const']]],
+ ['getfqfilename_33',['GetFqFileName',['../classxb_1_1xbFile.html#a31b4e641f93206ba23e2a5a27491dcd4',1,'xb::xbFile']]],
+ ['getfunctioninfo_34',['GetFunctionInfo',['../classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1',1,'xb::xbXBase']]],
+ ['getheaderlen_35',['GetHeaderLen',['../classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb',1,'xb::xbDbf']]],
+ ['gethomedir_36',['GetHomeDir',['../classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9',1,'xb::xbSsv']]],
+ ['getlastpos_37',['GetLastPos',['../classxb_1_1xbString.html#ac7698665f44413a5e99a5b5bc573c6df',1,'xb::xbString::GetLastPos(char c) const'],['../classxb_1_1xbString.html#a1c55587904fe7e534290559d0ecb8646',1,'xb::xbString::GetLastPos(const char *s) const']]],
+ ['getlastrecord_38',['GetLastRecord',['../classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964',1,'xb::xbDbf::GetLastRecord()'],['../classxb_1_1xbDbf.html#a8ccfa2291417412b6894940d1b92f9a6',1,'xb::xbDbf::GetLastRecord(xbInt16 iOption)']]],
+ ['getlogdirectory_39',['GetLogDirectory',['../classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051',1,'xb::xbSsv::GetLogDirectory()'],['../classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b',1,'xb::xbXBase::GetLogDirectory()']]],
+ ['getlogfilename_40',['GetLogFileName',['../classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861',1,'xb::xbSsv::GetLogFileName()'],['../classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af',1,'xb::xbXBase::GetLogFileName() const']]],
+ ['getlogfqfilename_41',['GetLogFqFileName',['../classxb_1_1xbXBase.html#ab5d63cd7d9137eba8a1d4d9c3df522b7',1,'xb::xbXBase']]],
+ ['getlogicalfield_42',['GetLogicalField',['../classxb_1_1xbDbf.html#a3254f091fc4a1404abed3dd2bcdd6ce6',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbString &amp;sFieldData) const'],['../classxb_1_1xbDbf.html#a9cd6819bfd932ff8507e54d9cb9a624e',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbString &amp;sFieldData) const'],['../classxb_1_1xbDbf.html#aaf615ddcf08f8cd14efc713c2a8d7ae1',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData) const'],['../classxb_1_1xbDbf.html#ab28feef20c988b0a6f1c1911a45377b0',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#a943cea7fde1b06c1a05184193eff8d2d',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbBool &amp;bFieldData) const']]],
+ ['getlogstatus_43',['GetLogStatus',['../classxb_1_1xbXBase.html#ade34cd72c2a7e70fb55429a8a6f6c028',1,'xb::xbXBase']]],
+ ['getlongfield_44',['GetLongField',['../classxb_1_1xbDbf.html#abe525c0820640e0a9e169d0b7913cfa1',1,'xb::xbDbf::GetLongField(xbInt16 iFieldNo, xbInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a7b8ef75b17941beac17e50e969b2d3db',1,'xb::xbDbf::GetLongField(const xbString &amp;sFieldName, xbInt32 &amp;lFieldValue) const']]],
+ ['getmultiuser_45',['GetMultiUser',['../classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5',1,'xb::xbSsv']]],
+ ['getnextrecord_46',['GetNextRecord',['../classxb_1_1xbDbf.html#a18fdcb4ab15b36cd47fa6f6f7a540d1a',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption, xbUInt32 ulStartRec)'],['../classxb_1_1xbDbf.html#a3191428a7a92d9107d8d42448884f2ac',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption)'],['../classxb_1_1xbDbf.html#ab896fe3b734f556de578d30f92b18fe2',1,'xb::xbDbf::GetNextRecord()']]],
+ ['getnextsqlcmd_47',['GetNextSqlCmd',['../xb__execsql_8cpp.html#af888ba5e7e94d92c2165362b87f1ea0e',1,'xb_execsql.cpp']]],
+ ['getopenmode_48',['GetOpenMode',['../classxb_1_1xbFile.html#a3c500dc9dac22c49496e4b29386b2dd3',1,'xb::xbFile']]],
+ ['getopentablecount_49',['GetOpenTableCount',['../classxb_1_1xbTblMgr.html#ad0d2d4adabc0dc0e761cfdee63c84069',1,'xb::xbTblMgr']]],
+ ['getpathseparator_50',['GetPathSeparator',['../classxb_1_1xbString.html#af8b8b808cf43cd352321b43f500142db',1,'xb::xbString']]],
+ ['getprevrecord_51',['GetPrevRecord',['../classxb_1_1xbDbf.html#ab3d248e5221b4f0809897cd43af17a1e',1,'xb::xbDbf::GetPrevRecord()'],['../classxb_1_1xbDbf.html#a7eadc7b08d73003802b90584f7b33387',1,'xb::xbDbf::GetPrevRecord(xbInt16 iOption)']]],
+ ['getrawfield_52',['GetRawField',['../classxb_1_1xbDbf.html#aabd146c0e1054ab905ec96aedd84b02e',1,'xb::xbDbf']]],
+ ['getrecord_53',['GetRecord',['../classxb_1_1xbDbf.html#a26fba086b07caeab95066bf1c8d25161',1,'xb::xbDbf']]],
+ ['getrecordbuf_54',['GetRecordBuf',['../classxb_1_1xbDbf.html#aa3e38c4057d726a28a27d07a1610d124',1,'xb::xbDbf']]],
+ ['getrecordcnt_55',['GetRecordCnt',['../classxb_1_1xbDbf.html#ac196ad55335e1f4789d698748434dc89',1,'xb::xbDbf']]],
+ ['getrecordcount_56',['GetRecordCount',['../classxb_1_1xbDbf.html#a0aaa06d6028e75efc6b5131f7356ecce',1,'xb::xbDbf']]],
+ ['getrecordlen_57',['GetRecordLen',['../classxb_1_1xbDbf.html#ab50d76c6e29e81e347a6feb04c2f62bb',1,'xb::xbDbf']]],
+ ['getsharemode_58',['GetShareMode',['../classxb_1_1xbFile.html#a9b63e05b77f477ff6109ff7b9432c1b6',1,'xb::xbFile']]],
+ ['getsize_59',['GetSize',['../classxb_1_1xbString.html#a6c33e73659f8e98819289d2661c7271c',1,'xb::xbString']]],
+ ['gettblalias_60',['GetTblAlias',['../classxb_1_1xbDbf.html#a27758a325c097f204247908b65ba7fbd',1,'xb::xbDbf']]],
+ ['gettbllistentry_61',['GetTblListEntry',['../classxb_1_1xbTblMgr.html#acbf148ddba4297021cfb980a161ebef9',1,'xb::xbTblMgr']]],
+ ['getulongfield_62',['GetULongField',['../classxb_1_1xbDbf.html#a67e3a050f9090edf69eee75aef7f5d83',1,'xb::xbDbf::GetULongField(xbInt16 iFieldNo, xbUInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a039eb02418ec4ca862adbc0f95b9cbec',1,'xb::xbDbf::GetULongField(const xbString &amp;sFieldName, xbUInt32 &amp;lFieldValue) const']]],
+ ['getversion_63',['GetVersion',['../classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6',1,'xb::xbDbf']]],
+ ['getxbasefiletypebyte_64',['GetXbaseFileTypeByte',['../classxb_1_1xbFile.html#aaf2e697751a0beff41432a66bb83fb5e',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, xbInt16 &amp;iVersion)'],['../classxb_1_1xbFile.html#a7af337808919680b90710ad5e8a99232',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte)'],['../classxb_1_1xbFile.html#a78aebdd21d3de46a450d5f835e3027f6',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte, xbInt16 &amp;iVersion)']]],
+ ['getxbaseptr_65',['GetXbasePtr',['../classxb_1_1xbDbf.html#ab21ec23c076b0c9affdc0f6672bd133f',1,'xb::xbDbf']]]
];
diff --git a/docs/doxygen/html/search/all_b.js b/docs/doxygen/html/search/all_b.js
index 7595e8a..b877785 100644
--- a/docs/doxygen/html/search/all_b.js
+++ b/docs/doxygen/html/search/all_b.js
@@ -1,7 +1,9 @@
var searchData=
[
- ['main_0',['main',['../xb__dbfutil_8cpp.html#a57e6ea63b6f0a962708db29159629a6d',1,'main(int, char **):&#160;xb_dbfutil.cpp'],['../xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock2.cpp'],['../xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_log.cpp'],['../xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_mdx.cpp'],['../xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_ndx.cpp'],['../xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_sql.cpp'],['../xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f',1,'main(int argCnt, char **av=NULL):&#160;xb_test_string.cpp'],['../xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_tblmgr.cpp'],['../xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_uda.cpp'],['../xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_xbase.cpp'],['../xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_cfg_check.cpp'],['../xb__copydbf_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_copydbf.cpp'],['../xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock.cpp'],['../xb__deletall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumpdbt.cpp'],['../xb__dumphdr_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumphdr.cpp'],['../xb__dumpix_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumpix.cpp'],['../xb__dumprecs_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumprecs.cpp'],['../xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_execsql.cpp'],['../xb__pack_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_undelall.cpp'],['../xb__zap_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_zap.cpp'],['../xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_linklist.cpp'],['../xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_date.cpp'],['../xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_ex_sql.cpp'],['../xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_string.cpp'],['../xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_create_dbf.cpp'],['../xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_upd_dbf.cpp'],['../xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_create_dbf.cpp'],['../xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_upd_dbf.cpp'],['../xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_bcd.cpp'],['../xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_date.cpp'],['../xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_memos.cpp'],['../xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_nomemos.cpp'],['../xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_memos.cpp'],['../xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_nomemos.cpp'],['../xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expnode.cpp'],['../xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expression.cpp'],['../xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_file.cpp'],['../xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_filter.cpp'],['../xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_funcs.cpp']]],
+ ['main_0',['main',['../xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_uda.cpp'],['../xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_funcs.cpp'],['../xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_linklist.cpp'],['../xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock.cpp'],['../xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock2.cpp'],['../xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_log.cpp'],['../xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_mdx.cpp'],['../xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_ndx.cpp'],['../xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_sql.cpp'],['../xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f',1,'main(int argCnt, char **av=NULL):&#160;xb_test_string.cpp'],['../xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_tblmgr.cpp'],['../xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_filter.cpp'],['../xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_xbase.cpp'],['../xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_cfg_check.cpp'],['../xb__copydbf_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_copydbf.cpp'],['../xb__dbfutil_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_dbfutil.cpp'],['../xb__deletall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_dumpdbt.cpp'],['../xb__dumprecs_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_dumprecs.cpp'],['../xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_execsql.cpp'],['../xb__pack_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_tblinfo.cpp'],['../xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_file.cpp'],['../xb__undelall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_undelall.cpp'],['../xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_date.cpp'],['../xb__ex__expression_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_expression.cpp'],['../xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_ex_sql.cpp'],['../xb__ex__ssv_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_ex_ssv.cpp'],['../xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_string.cpp'],['../xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_create_dbf.cpp'],['../xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_upd_dbf.cpp'],['../xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_create_dbf.cpp'],['../xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_upd_dbf.cpp'],['../xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_bcd.cpp'],['../xb__test__blockread_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_blockread.cpp'],['../xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_date.cpp'],['../xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_memos.cpp'],['../xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_nomemos.cpp'],['../xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_memos.cpp'],['../xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_nomemos.cpp'],['../xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expnode.cpp'],['../xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expression.cpp']]],
['memofieldsexist_1',['MemoFieldsExist',['../classxb_1_1xbDbf.html#a013dc8c51fc1aa988de39cf3da6da950',1,'xb::xbDbf']]],
['mid_2',['Mid',['../classxb_1_1xbString.html#a0f9eefc836b24c4ee7c5a316c5d812b7',1,'xb::xbString']]],
- ['monthof_3',['MonthOf',['../classxb_1_1xbDate.html#a08bd84c67e1119d8c5c1748cd89d092e',1,'xb::xbDate']]]
+ ['monthof_3',['MonthOf',['../classxb_1_1xbDate.html#a08bd84c67e1119d8c5c1748cd89d092e',1,'xb::xbDate']]],
+ ['mydbfrec_4',['MyDbfRec',['../xb__test__blockread_8cpp.html#af68c3291a63fdf20ffa0e477460d148e',1,'xb_test_blockread.cpp']]],
+ ['myv4record_5',['MyV4Record',['../xb__ex__expression_8cpp.html#a2122b9562802e2fd799b20454000dc99',1,'xb_ex_expression.cpp']]]
];
diff --git a/docs/doxygen/html/search/all_e.js b/docs/doxygen/html/search/all_e.js
index aa6ad3c..6ef5a5b 100644
--- a/docs/doxygen/html/search/all_e.js
+++ b/docs/doxygen/html/search/all_e.js
@@ -5,16 +5,20 @@ var searchData=
['padright_2',['PadRight',['../classxb_1_1xbString.html#aba13f0c77eb6c4a22996039569fad284',1,'xb::xbString']]],
['pdbf_3',['pDbf',['../structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6',1,'xb::xbTblList']]],
['pnext_4',['pNext',['../structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c',1,'xb::xbTblList']]],
- ['pos_5',['Pos',['../classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b',1,'xb::xbString::Pos(char c) const'],['../classxb_1_1xbString.html#a8705d7277b72f5aa98021e84438914da',1,'xb::xbString::Pos(const char *s) const']]],
- ['pstblalias_6',['psTblAlias',['../structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05',1,'xb::xbTblList']]],
- ['pstblname_7',['psTblName',['../structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f',1,'xb::xbTblList']]],
- ['putat_8',['PutAt',['../classxb_1_1xbString.html#a1bae6fa8f608261f6e889616482f6e39',1,'xb::xbString']]],
- ['putdatefield_9',['PutDateField',['../classxb_1_1xbDbf.html#a873f04af528a9d81e6a367a59d998ec5',1,'xb::xbDbf::PutDateField(xbInt16 iFieldNo, const xbDate &amp;dt)'],['../classxb_1_1xbDbf.html#a571b36b3a940b1a16d5e834f329b33b9',1,'xb::xbDbf::PutDateField(const xbString &amp;sFieldName, const xbDate &amp;dt)']]],
- ['putdoublefield_10',['PutDoubleField',['../classxb_1_1xbDbf.html#ae695bbc71c19abc71c0c5f2ff2e1f971',1,'xb::xbDbf::PutDoubleField(const xbString &amp;FieldName, xbDouble dFieldValue)'],['../classxb_1_1xbDbf.html#a4f34842d7e8ff1f16992c2ece2fc38a5',1,'xb::xbDbf::PutDoubleField(xbInt16 FieldNo, xbDouble dFieldValue)']]],
- ['putfield_11',['PutField',['../classxb_1_1xbDbf.html#a7862215dd2f83a1c488e539cd1f9aec0',1,'xb::xbDbf::PutField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a142b0c0dc904917f3c68c5572c1237b5',1,'xb::xbDbf::PutField(xbInt16 iFieldNo, const xbString &amp;sFieldData)']]],
- ['putfloatfield_12',['PutFloatField',['../classxb_1_1xbDbf.html#a64161eb50d72e424b11bf3732657ebd8',1,'xb::xbDbf::PutFloatField(xbInt16 iFieldNo, xbFloat fFieldValue)'],['../classxb_1_1xbDbf.html#a4ea3241bc710d57e5f755efda62288ad',1,'xb::xbDbf::PutFloatField(const xbString &amp;sFieldName, xbFloat fFieldValue)']]],
- ['putlogicalfield_13',['PutLogicalField',['../classxb_1_1xbDbf.html#ab39ac4269ac63bc7ea4f638733bb17f0',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a507e400ca6526a9e0391cf06dd6a014e',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a423a0cb7bd252cedf956ace4954f275d',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, xbBool bFieldData)'],['../classxb_1_1xbDbf.html#a623ca3ef5520c42308c1a16b518e7ff3',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, xbBool bFieldData)']]],
- ['putlongfield_14',['PutLongField',['../classxb_1_1xbDbf.html#a56c8f924284bf88aabf90b7930b4eb47',1,'xb::xbDbf::PutLongField(xbInt16 iFieldNo, xbInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#ae7aad223119edb3d541e9f65e88c9f2f',1,'xb::xbDbf::PutLongField(const xbString &amp;sFieldNo, xbInt32 lFieldValue)']]],
- ['putrecord_15',['PutRecord',['../classxb_1_1xbDbf.html#a3c36a5ffbc7067a1abbcb526dd3b981d',1,'xb::xbDbf::PutRecord()'],['../classxb_1_1xbDbf.html#aacbc7bac3ea0c502ee75b838f4f0fcbf',1,'xb::xbDbf::PutRecord(xbUInt32 ulRecNo)']]],
- ['putulongfield_16',['PutULongField',['../classxb_1_1xbDbf.html#af5dec5c9ff903efffdb0490a44d296d2',1,'xb::xbDbf::PutULongField(xbInt16 iFieldNo, xbUInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#ac62cb97c4e678c83f41788b1ae4d0381',1,'xb::xbDbf::PutULongField(const xbString &amp;sFieldNo, xbUInt32 lFieldValue)']]]
+ ['pos_5',['Pos',['../classxb_1_1xbString.html#a8705d7277b72f5aa98021e84438914da',1,'xb::xbString::Pos(const char *s) const'],['../classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b',1,'xb::xbString::Pos(char c) const'],['../classxb_1_1xbString.html#a1b586890138da8bf0e23090bd8b34581',1,'xb::xbString::Pos(char c, xbUInt32 ulStartPos) const']]],
+ ['printhelp_6',['PrintHelp',['../xb__copydbf_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_copydbf.cpp'],['../xb__dbfutil_8cpp.html#a9c55a055e1cd4249c7f47e19dc7ac564',1,'PrintHelp():&#160;xb_dbfutil.cpp'],['../xb__deletall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_dumpdbt.cpp'],['../xb__dumprecs_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_dumprecs.cpp'],['../xb__pack_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_undelall.cpp']]],
+ ['printresult_7',['PrintResult',['../xb__ex__expression_8cpp.html#a3234afc912211aec54c10d363d28cbda',1,'xb_ex_expression.cpp']]],
+ ['printversion_8',['PrintVersion',['../xb__copydbf_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_copydbf.cpp'],['../xb__dbfutil_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_dbfutil.cpp'],['../xb__deletall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_dumpdbt.cpp'],['../xb__dumprecs_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_dumprecs.cpp'],['../xb__pack_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_undelall.cpp']]],
+ ['psfqtblname_9',['psFqTblName',['../structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d',1,'xb::xbTblList']]],
+ ['pstblalias_10',['psTblAlias',['../structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05',1,'xb::xbTblList']]],
+ ['pstblname_11',['psTblName',['../structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f',1,'xb::xbTblList']]],
+ ['putat_12',['PutAt',['../classxb_1_1xbString.html#a1bae6fa8f608261f6e889616482f6e39',1,'xb::xbString']]],
+ ['putdatefield_13',['PutDateField',['../classxb_1_1xbDbf.html#a873f04af528a9d81e6a367a59d998ec5',1,'xb::xbDbf::PutDateField(xbInt16 iFieldNo, const xbDate &amp;dt)'],['../classxb_1_1xbDbf.html#a571b36b3a940b1a16d5e834f329b33b9',1,'xb::xbDbf::PutDateField(const xbString &amp;sFieldName, const xbDate &amp;dt)']]],
+ ['putdoublefield_14',['PutDoubleField',['../classxb_1_1xbDbf.html#a4f34842d7e8ff1f16992c2ece2fc38a5',1,'xb::xbDbf::PutDoubleField(xbInt16 FieldNo, xbDouble dFieldValue)'],['../classxb_1_1xbDbf.html#ae695bbc71c19abc71c0c5f2ff2e1f971',1,'xb::xbDbf::PutDoubleField(const xbString &amp;FieldName, xbDouble dFieldValue)']]],
+ ['putfield_15',['PutField',['../classxb_1_1xbDbf.html#a7862215dd2f83a1c488e539cd1f9aec0',1,'xb::xbDbf::PutField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a142b0c0dc904917f3c68c5572c1237b5',1,'xb::xbDbf::PutField(xbInt16 iFieldNo, const xbString &amp;sFieldData)']]],
+ ['putfloatfield_16',['PutFloatField',['../classxb_1_1xbDbf.html#a64161eb50d72e424b11bf3732657ebd8',1,'xb::xbDbf::PutFloatField(xbInt16 iFieldNo, xbFloat fFieldValue)'],['../classxb_1_1xbDbf.html#a4ea3241bc710d57e5f755efda62288ad',1,'xb::xbDbf::PutFloatField(const xbString &amp;sFieldName, xbFloat fFieldValue)']]],
+ ['putlogicalfield_17',['PutLogicalField',['../classxb_1_1xbDbf.html#ab39ac4269ac63bc7ea4f638733bb17f0',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a507e400ca6526a9e0391cf06dd6a014e',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a423a0cb7bd252cedf956ace4954f275d',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, xbBool bFieldData)'],['../classxb_1_1xbDbf.html#a623ca3ef5520c42308c1a16b518e7ff3',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, xbBool bFieldData)']]],
+ ['putlongfield_18',['PutLongField',['../classxb_1_1xbDbf.html#ae7aad223119edb3d541e9f65e88c9f2f',1,'xb::xbDbf::PutLongField(const xbString &amp;sFieldNo, xbInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#a56c8f924284bf88aabf90b7930b4eb47',1,'xb::xbDbf::PutLongField(xbInt16 iFieldNo, xbInt32 lFieldValue)']]],
+ ['putrecord_19',['PutRecord',['../classxb_1_1xbDbf.html#aacbc7bac3ea0c502ee75b838f4f0fcbf',1,'xb::xbDbf::PutRecord(xbUInt32 ulRecNo)'],['../classxb_1_1xbDbf.html#a3c36a5ffbc7067a1abbcb526dd3b981d',1,'xb::xbDbf::PutRecord()']]],
+ ['putulongfield_20',['PutULongField',['../classxb_1_1xbDbf.html#ac62cb97c4e678c83f41788b1ae4d0381',1,'xb::xbDbf::PutULongField(const xbString &amp;sFieldNo, xbUInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#af5dec5c9ff903efffdb0490a44d296d2',1,'xb::xbDbf::PutULongField(xbInt16 iFieldNo, xbUInt32 lFieldValue)']]]
];
diff --git a/docs/doxygen/html/search/defines_3.js b/docs/doxygen/html/search/defines_3.js
index b0be1a3..da8097a 100644
--- a/docs/doxygen/html/search/defines_3.js
+++ b/docs/doxygen/html/search/defines_3.js
@@ -3,84 +3,87 @@ var searchData=
['xb_5factive_5frecs_0',['XB_ACTIVE_RECS',['../xbdbf_8h.html#a1c44bb25bf2e23a3a9d3d2312df0b592',1,'xbdbf.h']]],
['xb_5fall_5frecs_1',['XB_ALL_RECS',['../xbdbf_8h.html#a8bd17730da3ba5c55a6a07bc482dd0e4',1,'xbdbf.h']]],
['xb_5falready_5fopen_2',['XB_ALREADY_OPEN',['../xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f',1,'xbretcod.h']]],
- ['xb_5fbof_3',['XB_BOF',['../xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f',1,'xbretcod.h']]],
- ['xb_5fchar_5ffld_4',['XB_CHAR_FLD',['../xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa',1,'xbdbf.h']]],
- ['xb_5fchareof_5',['XB_CHAREOF',['../xbdbf_8h.html#ada1115f596131888c04df61546b198c4',1,'xbdbf.h']]],
- ['xb_5fcharhdr_6',['XB_CHARHDR',['../xbdbf_8h.html#a35d56cac7959c1e5c761684ced3f1e17',1,'xbdbf.h']]],
- ['xb_5fclose_5ferror_7',['XB_CLOSE_ERROR',['../xbretcod_8h.html#a030684d5541cf6127a76d81b0684b235',1,'xbretcod.h']]],
- ['xb_5fclosed_8',['XB_CLOSED',['../xbdbf_8h.html#a843ca4569326dbd1d0647899b0eb512f',1,'xbdbf.h']]],
- ['xb_5fdate_5ffld_9',['XB_DATE_FLD',['../xbdbf_8h.html#a7f685e6f5fe804b2174725a27ce73adc',1,'xbdbf.h']]],
- ['xb_5fdbf_5ffile_5fnot_5fopen_10',['XB_DBF_FILE_NOT_OPEN',['../xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2',1,'xbretcod.h']]],
- ['xb_5fdelete_5ffailed_11',['XB_DELETE_FAILED',['../xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2',1,'xbretcod.h']]],
- ['xb_5fdeleted_5frecs_12',['XB_DELETED_RECS',['../xbdbf_8h.html#acc0a441854ed92b9d65d1181a97cad43',1,'xbdbf.h']]],
- ['xb_5fdontoverlay_13',['XB_DONTOVERLAY',['../xbdbf_8h.html#a7b797840abdb3291373d15978103a778',1,'xbdbf.h']]],
- ['xb_5fdup_5ftable_5for_5falias_14',['XB_DUP_TABLE_OR_ALIAS',['../xbretcod_8h.html#ac18036408d10e5eee1bf76cf92352b95',1,'xbretcod.h']]],
- ['xb_5fempty_15',['XB_EMPTY',['../xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29',1,'xbretcod.h']]],
- ['xb_5feof_16',['XB_EOF',['../xbretcod_8h.html#a8b47031e90c3f86306c7058e4490d3b7',1,'xbretcod.h']]],
- ['xb_5ffile_5fexists_17',['XB_FILE_EXISTS',['../xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0',1,'xbretcod.h']]],
- ['xb_5ffile_5fnot_5ffound_18',['XB_FILE_NOT_FOUND',['../xbretcod_8h.html#ad090af330c93111d12f6de35dbb065bc',1,'xbretcod.h']]],
- ['xb_5ffile_5ftype_5fnot_5fsupported_19',['XB_FILE_TYPE_NOT_SUPPORTED',['../xbretcod_8h.html#ab7b9130a5f1df9975cfeaf6241933596',1,'xbretcod.h']]],
- ['xb_5ffloat_5ffld_20',['XB_FLOAT_FLD',['../xbdbf_8h.html#a96ab4218d70ab603b4866354ce8c18cd',1,'xbdbf.h']]],
- ['xb_5ffmt_5fmonth_21',['XB_FMT_MONTH',['../xbdate_8h.html#aeacf2f7cc897ab5bd64781c0fb52b75d',1,'xbdate.h']]],
- ['xb_5ffmt_5fweek_22',['XB_FMT_WEEK',['../xbdate_8h.html#a8f22704d3fd93fa85dd93b6c699e8178',1,'xbdate.h']]],
- ['xb_5ffmt_5fyear_23',['XB_FMT_YEAR',['../xbdate_8h.html#aa29d78982a9e007874af1c4f4e4d1aa4',1,'xbdate.h']]],
- ['xb_5fincompatible_5foperands_24',['XB_INCOMPATIBLE_OPERANDS',['../xbretcod_8h.html#af141ec58b7ca7360e0be6c61d015ea74',1,'xbretcod.h']]],
- ['xb_5finconsistent_5fparm_5flens_25',['XB_INCONSISTENT_PARM_LENS',['../xbretcod_8h.html#adc4b24bfffa202f8df25409894e547b9',1,'xbretcod.h']]],
- ['xb_5finvalid_5fblock_5fno_26',['XB_INVALID_BLOCK_NO',['../xbretcod_8h.html#a4e13b529b486c43ca600ce7d8ddbf3c2',1,'xbretcod.h']]],
- ['xb_5finvalid_5fblock_5fsize_27',['XB_INVALID_BLOCK_SIZE',['../xbretcod_8h.html#a1bd22921612389c37f6b2eac438c62c5',1,'xbretcod.h']]],
- ['xb_5finvalid_5fdata_28',['XB_INVALID_DATA',['../xbretcod_8h.html#afb40bbed323ecb369dd430a2e1242f9a',1,'xbretcod.h']]],
- ['xb_5finvalid_5fdate_29',['XB_INVALID_DATE',['../xbretcod_8h.html#a702475500357a27b8a34463be3e11925',1,'xbretcod.h']]],
- ['xb_5finvalid_5fexpression_30',['XB_INVALID_EXPRESSION',['../xbretcod_8h.html#a54db562c3cae97581812b4fccd52b71a',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_31',['XB_INVALID_FIELD',['../xbretcod_8h.html#a34180b2e2bd350ba2ebcdd1335e15d7e',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5flen_32',['XB_INVALID_FIELD_LEN',['../xbretcod_8h.html#a7bd322c0efbba17f68ccccd6cf624411',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5fname_33',['XB_INVALID_FIELD_NAME',['../xbretcod_8h.html#a59403978784130834cf39434cb73f96e',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5fno_34',['XB_INVALID_FIELD_NO',['../xbretcod_8h.html#a09d6c08a44316f551108a74003efd381',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffield_5ftype_35',['XB_INVALID_FIELD_TYPE',['../xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f',1,'xbretcod.h']]],
- ['xb_5finvalid_5ffunction_36',['XB_INVALID_FUNCTION',['../xbretcod_8h.html#a2b7e5e440dbcf5e6dc885b24dbe28742',1,'xbretcod.h']]],
- ['xb_5finvalid_5findex_37',['XB_INVALID_INDEX',['../xbretcod_8h.html#acd175ef0541e2cad424791bd87619dd4',1,'xbretcod.h']]],
- ['xb_5finvalid_5fkeyno_38',['XB_INVALID_KEYNO',['../xbretcod_8h.html#aec2c0ac2bd62e0329ef130e4fbda39f8',1,'xbretcod.h']]],
- ['xb_5finvalid_5flock_5foption_39',['XB_INVALID_LOCK_OPTION',['../xbretcod_8h.html#ab45735e63c208eb7e6d6df31fd527aec',1,'xbretcod.h']]],
- ['xb_5finvalid_5fmemo_5ffield_40',['XB_INVALID_MEMO_FIELD',['../xbretcod_8h.html#a187c50745f51bfe4aa6f70a92f16c59f',1,'xbretcod.h']]],
- ['xb_5finvalid_5fnodelink_41',['XB_INVALID_NODELINK',['../xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb',1,'xbretcod.h']]],
- ['xb_5finvalid_5fobject_42',['XB_INVALID_OBJECT',['../xbretcod_8h.html#a418c047353bc683d0fd6ecbbdd5b7885',1,'xbretcod.h']]],
- ['xb_5finvalid_5foption_43',['XB_INVALID_OPTION',['../xbretcod_8h.html#af1cd0baf346cad686fa4dd11f700012a',1,'xbretcod.h']]],
- ['xb_5finvalid_5fpage_44',['XB_INVALID_PAGE',['../xbretcod_8h.html#ad0aba12b5ae2137f8d6abd28b47f95f0',1,'xbretcod.h']]],
- ['xb_5finvalid_5fparm_45',['XB_INVALID_PARM',['../xbretcod_8h.html#a4cedf96581c9cbc9c14d07494143702d',1,'xbretcod.h']]],
- ['xb_5finvalid_5frecord_46',['XB_INVALID_RECORD',['../xbretcod_8h.html#a0fd212f912b2e62700a66bae95bd73a1',1,'xbretcod.h']]],
- ['xb_5finvalid_5ftable_5fname_47',['XB_INVALID_TABLE_NAME',['../xbretcod_8h.html#a53891c95a78483704d2a8e14c4499f92',1,'xbretcod.h']]],
- ['xb_5finvalid_5ftag_48',['XB_INVALID_TAG',['../xbretcod_8h.html#a176d917912d3433f065483f905a4c50a',1,'xbretcod.h']]],
- ['xb_5fkey_5fnot_5funique_49',['XB_KEY_NOT_UNIQUE',['../xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34',1,'xbretcod.h']]],
- ['xb_5flimit_5freached_50',['XB_LIMIT_REACHED',['../xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850',1,'xbretcod.h']]],
- ['xb_5flock_51',['XB_LOCK',['../xbdbf_8h.html#a395a2e101a793bacabf6bc079d178e29',1,'xbdbf.h']]],
- ['xb_5flock_5ffailed_52',['XB_LOCK_FAILED',['../xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1',1,'xbretcod.h']]],
- ['xb_5flogical_5ffld_53',['XB_LOGICAL_FLD',['../xbdbf_8h.html#a2f6d5073af761bc1a806a2c7b1c1d886',1,'xbdbf.h']]],
- ['xb_5fmax_5ferror_5fno_54',['XB_MAX_ERROR_NO',['../xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d',1,'xbretcod.h']]],
- ['xb_5fmemo_5ffld_55',['XB_MEMO_FLD',['../xbdbf_8h.html#a23fa19b19cb43bd6dcc59a5a3f6c30ad',1,'xbdbf.h']]],
- ['xb_5fmulti_5fuser_56',['XB_MULTI_USER',['../xbfile_8h.html#a05c0fc99ba71cf953d046d12f3f874bc',1,'xbfile.h']]],
- ['xb_5fno_5ferror_57',['XB_NO_ERROR',['../xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23',1,'xbretcod.h']]],
- ['xb_5fno_5fmemory_58',['XB_NO_MEMORY',['../xbretcod_8h.html#ae687fc7d872ba0475a8477e4447f9b54',1,'xbretcod.h']]],
- ['xb_5fnot_5ffound_59',['XB_NOT_FOUND',['../xbretcod_8h.html#ac2606659a54111334f5b02861e533700',1,'xbretcod.h']]],
- ['xb_5fnot_5fopen_60',['XB_NOT_OPEN',['../xbretcod_8h.html#a9474b400f647bdefbbb07e5177e8d7a1',1,'xbretcod.h']]],
- ['xb_5fnumeric_5ffld_61',['XB_NUMERIC_FLD',['../xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6',1,'xbdbf.h']]],
- ['xb_5fopen_62',['XB_OPEN',['../xbdbf_8h.html#a9a6dafbb07cac744eb14094efa739409',1,'xbdbf.h']]],
- ['xb_5fopen_5ferror_63',['XB_OPEN_ERROR',['../xbretcod_8h.html#aaab55236993a1d3acb29206252a904c8',1,'xbretcod.h']]],
- ['xb_5foverlay_64',['XB_OVERLAY',['../xbdbf_8h.html#a6fe10b307878b4612b04c2c876a4a592',1,'xbdbf.h']]],
- ['xb_5fparse_5ferror_65',['XB_PARSE_ERROR',['../xbretcod_8h.html#aec713cac2b03a0d536a2d16336ae7c0b',1,'xbretcod.h']]],
- ['xb_5fread_66',['XB_READ',['../xbfile_8h.html#ae58c73e0ba237fcf67ee20feea6c2743',1,'xbfile.h']]],
- ['xb_5fread_5ferror_67',['XB_READ_ERROR',['../xbretcod_8h.html#adbd40585db8bb748d191f94a33bac710',1,'xbretcod.h']]],
- ['xb_5fread_5fwrite_68',['XB_READ_WRITE',['../xbfile_8h.html#af991a288c327f6857e90156ea734a633',1,'xbfile.h']]],
- ['xb_5frename_5ferror_69',['XB_RENAME_ERROR',['../xbretcod_8h.html#a373f30b2efcbbab9f6d060fb3fe8cba3',1,'xbretcod.h']]],
- ['xb_5fseek_5ferror_70',['XB_SEEK_ERROR',['../xbretcod_8h.html#a0455ad8719e153b08ec68b10c81e9f41',1,'xbretcod.h']]],
- ['xb_5fsingle_5fuser_71',['XB_SINGLE_USER',['../xbfile_8h.html#a9ec4d60a008c667d9861e3b3814f0232',1,'xbfile.h']]],
- ['xb_5fsyntax_5ferror_72',['XB_SYNTAX_ERROR',['../xbretcod_8h.html#a5db3a90f215534143bdde81253729c7f',1,'xbretcod.h']]],
- ['xb_5ftable_5fnot_5flocked_73',['XB_TABLE_NOT_LOCKED',['../xbretcod_8h.html#af6aaf779fddecca521d785666f6dc56b',1,'xbretcod.h']]],
- ['xb_5funbalanced_5fparens_74',['XB_UNBALANCED_PARENS',['../xbretcod_8h.html#aff5646a6b0884ff81004de6961473ea6',1,'xbretcod.h']]],
- ['xb_5funbalanced_5fquotes_75',['XB_UNBALANCED_QUOTES',['../xbretcod_8h.html#aedfa20a6c4eb9ba3063ba56be8280eac',1,'xbretcod.h']]],
- ['xb_5funlock_76',['XB_UNLOCK',['../xbdbf_8h.html#a21389b73e7b4e7e185fa635b9e354c2e',1,'xbdbf.h']]],
- ['xb_5fupdated_77',['XB_UPDATED',['../xbdbf_8h.html#a26e7eeda69f32bc88b08a208ca9e7991',1,'xbdbf.h']]],
- ['xb_5fwrite_78',['XB_WRITE',['../xbfile_8h.html#abbf99e259c2f31572c886da6d85b1359',1,'xbfile.h']]],
- ['xb_5fwrite_5ferror_79',['XB_WRITE_ERROR',['../xbretcod_8h.html#aef34ebe6726057f805d6063130280549',1,'xbretcod.h']]],
- ['xbfalse_80',['xbFalse',['../xbtypes_8h.html#adc4b6ca5ad299f63675136d9e03938cc',1,'xbtypes.h']]],
- ['xbfileno_81',['xbFileNo',['../xbtypes_8h.html#a2c65f692ac861990861575e18f72f6eb',1,'xbtypes.h']]],
- ['xbtrue_82',['xbTrue',['../xbtypes_8h.html#ab0ae00665298fe7f5292691cb98ec2d9',1,'xbtypes.h']]]
+ ['xb_5fblockread_5fnot_5fenabled_3',['XB_BLOCKREAD_NOT_ENABLED',['../xbretcod_8h.html#aae9241d91cfb37f5d236128b3bce0a4a',1,'xbretcod.h']]],
+ ['xb_5fbof_4',['XB_BOF',['../xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f',1,'xbretcod.h']]],
+ ['xb_5fchar_5ffld_5',['XB_CHAR_FLD',['../xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa',1,'xbdbf.h']]],
+ ['xb_5fchareof_6',['XB_CHAREOF',['../xbdbf_8h.html#ada1115f596131888c04df61546b198c4',1,'xbdbf.h']]],
+ ['xb_5fcharhdr_7',['XB_CHARHDR',['../xbdbf_8h.html#a35d56cac7959c1e5c761684ced3f1e17',1,'xbdbf.h']]],
+ ['xb_5fclose_5ferror_8',['XB_CLOSE_ERROR',['../xbretcod_8h.html#a030684d5541cf6127a76d81b0684b235',1,'xbretcod.h']]],
+ ['xb_5fclosed_9',['XB_CLOSED',['../xbdbf_8h.html#a843ca4569326dbd1d0647899b0eb512f',1,'xbdbf.h']]],
+ ['xb_5fdate_5ffld_10',['XB_DATE_FLD',['../xbdbf_8h.html#a7f685e6f5fe804b2174725a27ce73adc',1,'xbdbf.h']]],
+ ['xb_5fdbf_5ffile_5fnot_5fopen_11',['XB_DBF_FILE_NOT_OPEN',['../xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2',1,'xbretcod.h']]],
+ ['xb_5fdelete_5ffailed_12',['XB_DELETE_FAILED',['../xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2',1,'xbretcod.h']]],
+ ['xb_5fdeleted_5frecs_13',['XB_DELETED_RECS',['../xbdbf_8h.html#acc0a441854ed92b9d65d1181a97cad43',1,'xbdbf.h']]],
+ ['xb_5fdirectory_5ferror_14',['XB_DIRECTORY_ERROR',['../xbretcod_8h.html#af532df74147ce2d872f61abfee49c53e',1,'xbretcod.h']]],
+ ['xb_5fdontoverlay_15',['XB_DONTOVERLAY',['../xbdbf_8h.html#a7b797840abdb3291373d15978103a778',1,'xbdbf.h']]],
+ ['xb_5fdup_5ftable_5for_5falias_16',['XB_DUP_TABLE_OR_ALIAS',['../xbretcod_8h.html#ac18036408d10e5eee1bf76cf92352b95',1,'xbretcod.h']]],
+ ['xb_5fempty_17',['XB_EMPTY',['../xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29',1,'xbretcod.h']]],
+ ['xb_5feof_18',['XB_EOF',['../xbretcod_8h.html#a8b47031e90c3f86306c7058e4490d3b7',1,'xbretcod.h']]],
+ ['xb_5ffile_5fexists_19',['XB_FILE_EXISTS',['../xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0',1,'xbretcod.h']]],
+ ['xb_5ffile_5fnot_5ffound_20',['XB_FILE_NOT_FOUND',['../xbretcod_8h.html#ad090af330c93111d12f6de35dbb065bc',1,'xbretcod.h']]],
+ ['xb_5ffile_5ftype_5fnot_5fsupported_21',['XB_FILE_TYPE_NOT_SUPPORTED',['../xbretcod_8h.html#ab7b9130a5f1df9975cfeaf6241933596',1,'xbretcod.h']]],
+ ['xb_5ffloat_5ffld_22',['XB_FLOAT_FLD',['../xbdbf_8h.html#a96ab4218d70ab603b4866354ce8c18cd',1,'xbdbf.h']]],
+ ['xb_5ffmt_5fmonth_23',['XB_FMT_MONTH',['../xbdate_8h.html#aeacf2f7cc897ab5bd64781c0fb52b75d',1,'xbdate.h']]],
+ ['xb_5ffmt_5fweek_24',['XB_FMT_WEEK',['../xbdate_8h.html#a8f22704d3fd93fa85dd93b6c699e8178',1,'xbdate.h']]],
+ ['xb_5ffmt_5fyear_25',['XB_FMT_YEAR',['../xbdate_8h.html#aa29d78982a9e007874af1c4f4e4d1aa4',1,'xbdate.h']]],
+ ['xb_5fincompatible_5foperands_26',['XB_INCOMPATIBLE_OPERANDS',['../xbretcod_8h.html#af141ec58b7ca7360e0be6c61d015ea74',1,'xbretcod.h']]],
+ ['xb_5finconsistent_5fparm_5flens_27',['XB_INCONSISTENT_PARM_LENS',['../xbretcod_8h.html#adc4b24bfffa202f8df25409894e547b9',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fblock_5fno_28',['XB_INVALID_BLOCK_NO',['../xbretcod_8h.html#a4e13b529b486c43ca600ce7d8ddbf3c2',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fblock_5fsize_29',['XB_INVALID_BLOCK_SIZE',['../xbretcod_8h.html#a1bd22921612389c37f6b2eac438c62c5',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fdata_30',['XB_INVALID_DATA',['../xbretcod_8h.html#afb40bbed323ecb369dd430a2e1242f9a',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fdate_31',['XB_INVALID_DATE',['../xbretcod_8h.html#a702475500357a27b8a34463be3e11925',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fexpression_32',['XB_INVALID_EXPRESSION',['../xbretcod_8h.html#a54db562c3cae97581812b4fccd52b71a',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_33',['XB_INVALID_FIELD',['../xbretcod_8h.html#a34180b2e2bd350ba2ebcdd1335e15d7e',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5flen_34',['XB_INVALID_FIELD_LEN',['../xbretcod_8h.html#a7bd322c0efbba17f68ccccd6cf624411',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5fname_35',['XB_INVALID_FIELD_NAME',['../xbretcod_8h.html#a59403978784130834cf39434cb73f96e',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5fno_36',['XB_INVALID_FIELD_NO',['../xbretcod_8h.html#a09d6c08a44316f551108a74003efd381',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffield_5ftype_37',['XB_INVALID_FIELD_TYPE',['../xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ffunction_38',['XB_INVALID_FUNCTION',['../xbretcod_8h.html#a2b7e5e440dbcf5e6dc885b24dbe28742',1,'xbretcod.h']]],
+ ['xb_5finvalid_5findex_39',['XB_INVALID_INDEX',['../xbretcod_8h.html#acd175ef0541e2cad424791bd87619dd4',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fkeyno_40',['XB_INVALID_KEYNO',['../xbretcod_8h.html#aec2c0ac2bd62e0329ef130e4fbda39f8',1,'xbretcod.h']]],
+ ['xb_5finvalid_5flock_5foption_41',['XB_INVALID_LOCK_OPTION',['../xbretcod_8h.html#ab45735e63c208eb7e6d6df31fd527aec',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fmemo_5ffield_42',['XB_INVALID_MEMO_FIELD',['../xbretcod_8h.html#a187c50745f51bfe4aa6f70a92f16c59f',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fnodelink_43',['XB_INVALID_NODELINK',['../xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fobject_44',['XB_INVALID_OBJECT',['../xbretcod_8h.html#a418c047353bc683d0fd6ecbbdd5b7885',1,'xbretcod.h']]],
+ ['xb_5finvalid_5foption_45',['XB_INVALID_OPTION',['../xbretcod_8h.html#af1cd0baf346cad686fa4dd11f700012a',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fpage_46',['XB_INVALID_PAGE',['../xbretcod_8h.html#ad0aba12b5ae2137f8d6abd28b47f95f0',1,'xbretcod.h']]],
+ ['xb_5finvalid_5fparm_47',['XB_INVALID_PARM',['../xbretcod_8h.html#a4cedf96581c9cbc9c14d07494143702d',1,'xbretcod.h']]],
+ ['xb_5finvalid_5frecord_48',['XB_INVALID_RECORD',['../xbretcod_8h.html#a0fd212f912b2e62700a66bae95bd73a1',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ftable_5fname_49',['XB_INVALID_TABLE_NAME',['../xbretcod_8h.html#a53891c95a78483704d2a8e14c4499f92',1,'xbretcod.h']]],
+ ['xb_5finvalid_5ftag_50',['XB_INVALID_TAG',['../xbretcod_8h.html#a176d917912d3433f065483f905a4c50a',1,'xbretcod.h']]],
+ ['xb_5fkey_5fnot_5funique_51',['XB_KEY_NOT_UNIQUE',['../xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34',1,'xbretcod.h']]],
+ ['xb_5flimit_5freached_52',['XB_LIMIT_REACHED',['../xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850',1,'xbretcod.h']]],
+ ['xb_5flock_53',['XB_LOCK',['../xbdbf_8h.html#a395a2e101a793bacabf6bc079d178e29',1,'xbdbf.h']]],
+ ['xb_5flock_5ffailed_54',['XB_LOCK_FAILED',['../xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1',1,'xbretcod.h']]],
+ ['xb_5flogical_5ffld_55',['XB_LOGICAL_FLD',['../xbdbf_8h.html#a2f6d5073af761bc1a806a2c7b1c1d886',1,'xbdbf.h']]],
+ ['xb_5fmax_5ferror_5fno_56',['XB_MAX_ERROR_NO',['../xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d',1,'xbretcod.h']]],
+ ['xb_5fmemcpy_5ferror_57',['XB_MEMCPY_ERROR',['../xbretcod_8h.html#aa2925f035e3b186d7efa14648ea0e86d',1,'xbretcod.h']]],
+ ['xb_5fmemo_5ffld_58',['XB_MEMO_FLD',['../xbdbf_8h.html#a23fa19b19cb43bd6dcc59a5a3f6c30ad',1,'xbdbf.h']]],
+ ['xb_5fmulti_5fuser_59',['XB_MULTI_USER',['../xbfile_8h.html#a05c0fc99ba71cf953d046d12f3f874bc',1,'xbfile.h']]],
+ ['xb_5fno_5ferror_60',['XB_NO_ERROR',['../xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23',1,'xbretcod.h']]],
+ ['xb_5fno_5fmemory_61',['XB_NO_MEMORY',['../xbretcod_8h.html#ae687fc7d872ba0475a8477e4447f9b54',1,'xbretcod.h']]],
+ ['xb_5fnot_5ffound_62',['XB_NOT_FOUND',['../xbretcod_8h.html#ac2606659a54111334f5b02861e533700',1,'xbretcod.h']]],
+ ['xb_5fnot_5fopen_63',['XB_NOT_OPEN',['../xbretcod_8h.html#a9474b400f647bdefbbb07e5177e8d7a1',1,'xbretcod.h']]],
+ ['xb_5fnumeric_5ffld_64',['XB_NUMERIC_FLD',['../xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6',1,'xbdbf.h']]],
+ ['xb_5fopen_65',['XB_OPEN',['../xbdbf_8h.html#a9a6dafbb07cac744eb14094efa739409',1,'xbdbf.h']]],
+ ['xb_5fopen_5ferror_66',['XB_OPEN_ERROR',['../xbretcod_8h.html#aaab55236993a1d3acb29206252a904c8',1,'xbretcod.h']]],
+ ['xb_5foverlay_67',['XB_OVERLAY',['../xbdbf_8h.html#a6fe10b307878b4612b04c2c876a4a592',1,'xbdbf.h']]],
+ ['xb_5fparse_5ferror_68',['XB_PARSE_ERROR',['../xbretcod_8h.html#aec713cac2b03a0d536a2d16336ae7c0b',1,'xbretcod.h']]],
+ ['xb_5fread_69',['XB_READ',['../xbfile_8h.html#ae58c73e0ba237fcf67ee20feea6c2743',1,'xbfile.h']]],
+ ['xb_5fread_5ferror_70',['XB_READ_ERROR',['../xbretcod_8h.html#adbd40585db8bb748d191f94a33bac710',1,'xbretcod.h']]],
+ ['xb_5fread_5fwrite_71',['XB_READ_WRITE',['../xbfile_8h.html#af991a288c327f6857e90156ea734a633',1,'xbfile.h']]],
+ ['xb_5frename_5ferror_72',['XB_RENAME_ERROR',['../xbretcod_8h.html#a373f30b2efcbbab9f6d060fb3fe8cba3',1,'xbretcod.h']]],
+ ['xb_5fseek_5ferror_73',['XB_SEEK_ERROR',['../xbretcod_8h.html#a0455ad8719e153b08ec68b10c81e9f41',1,'xbretcod.h']]],
+ ['xb_5fsingle_5fuser_74',['XB_SINGLE_USER',['../xbfile_8h.html#a9ec4d60a008c667d9861e3b3814f0232',1,'xbfile.h']]],
+ ['xb_5fsyntax_5ferror_75',['XB_SYNTAX_ERROR',['../xbretcod_8h.html#a5db3a90f215534143bdde81253729c7f',1,'xbretcod.h']]],
+ ['xb_5ftable_5fnot_5flocked_76',['XB_TABLE_NOT_LOCKED',['../xbretcod_8h.html#af6aaf779fddecca521d785666f6dc56b',1,'xbretcod.h']]],
+ ['xb_5funbalanced_5fparens_77',['XB_UNBALANCED_PARENS',['../xbretcod_8h.html#aff5646a6b0884ff81004de6961473ea6',1,'xbretcod.h']]],
+ ['xb_5funbalanced_5fquotes_78',['XB_UNBALANCED_QUOTES',['../xbretcod_8h.html#aedfa20a6c4eb9ba3063ba56be8280eac',1,'xbretcod.h']]],
+ ['xb_5funlock_79',['XB_UNLOCK',['../xbdbf_8h.html#a21389b73e7b4e7e185fa635b9e354c2e',1,'xbdbf.h']]],
+ ['xb_5fupdated_80',['XB_UPDATED',['../xbdbf_8h.html#a26e7eeda69f32bc88b08a208ca9e7991',1,'xbdbf.h']]],
+ ['xb_5fwrite_81',['XB_WRITE',['../xbfile_8h.html#abbf99e259c2f31572c886da6d85b1359',1,'xbfile.h']]],
+ ['xb_5fwrite_5ferror_82',['XB_WRITE_ERROR',['../xbretcod_8h.html#aef34ebe6726057f805d6063130280549',1,'xbretcod.h']]],
+ ['xbfalse_83',['xbFalse',['../xbtypes_8h.html#adc4b6ca5ad299f63675136d9e03938cc',1,'xbtypes.h']]],
+ ['xbfileno_84',['xbFileNo',['../xbtypes_8h.html#a2c65f692ac861990861575e18f72f6eb',1,'xbtypes.h']]],
+ ['xbtrue_85',['xbTrue',['../xbtypes_8h.html#ab0ae00665298fe7f5292691cb98ec2d9',1,'xbtypes.h']]]
];
diff --git a/docs/doxygen/html/search/files_1.js b/docs/doxygen/html/search/files_1.js
index 8a867fe..3628f1d 100644
--- a/docs/doxygen/html/search/files_1.js
+++ b/docs/doxygen/html/search/files_1.js
@@ -5,11 +5,11 @@ var searchData=
['xb_5fdbfutil_2ecpp_2',['xb_dbfutil.cpp',['../xb__dbfutil_8cpp.html',1,'']]],
['xb_5fdeletall_2ecpp_3',['xb_deletall.cpp',['../xb__deletall_8cpp.html',1,'']]],
['xb_5fdumpdbt_2ecpp_4',['xb_dumpdbt.cpp',['../xb__dumpdbt_8cpp.html',1,'']]],
- ['xb_5fdumphdr_2ecpp_5',['xb_dumphdr.cpp',['../xb__dumphdr_8cpp.html',1,'']]],
- ['xb_5fdumpix_2ecpp_6',['xb_dumpix.cpp',['../xb__dumpix_8cpp.html',1,'']]],
- ['xb_5fdumprecs_2ecpp_7',['xb_dumprecs.cpp',['../xb__dumprecs_8cpp.html',1,'']]],
- ['xb_5fex_5fdate_2ecpp_8',['xb_ex_date.cpp',['../xb__ex__date_8cpp.html',1,'']]],
- ['xb_5fex_5fsql_2ecpp_9',['xb_ex_sql.cpp',['../xb__ex__sql_8cpp.html',1,'']]],
+ ['xb_5fdumprecs_2ecpp_5',['xb_dumprecs.cpp',['../xb__dumprecs_8cpp.html',1,'']]],
+ ['xb_5fex_5fdate_2ecpp_6',['xb_ex_date.cpp',['../xb__ex__date_8cpp.html',1,'']]],
+ ['xb_5fex_5fexpression_2ecpp_7',['xb_ex_expression.cpp',['../xb__ex__expression_8cpp.html',1,'']]],
+ ['xb_5fex_5fsql_2ecpp_8',['xb_ex_sql.cpp',['../xb__ex__sql_8cpp.html',1,'']]],
+ ['xb_5fex_5fssv_2ecpp_9',['xb_ex_ssv.cpp',['../xb__ex__ssv_8cpp.html',1,'']]],
['xb_5fex_5fstring_2ecpp_10',['xb_ex_string.cpp',['../xb__ex__string_8cpp.html',1,'']]],
['xb_5fex_5fv3_5fcreate_5fdbf_2ecpp_11',['xb_ex_v3_create_dbf.cpp',['../xb__ex__v3__create__dbf_8cpp.html',1,'']]],
['xb_5fex_5fv3_5fupd_5fdbf_2ecpp_12',['xb_ex_v3_upd_dbf.cpp',['../xb__ex__v3__upd__dbf_8cpp.html',1,'']]],
@@ -19,83 +19,88 @@ var searchData=
['xb_5fpack_2ecpp_16',['xb_pack.cpp',['../xb__pack_8cpp.html',1,'']]],
['xb_5ftblinfo_2ecpp_17',['xb_tblinfo.cpp',['../xb__tblinfo_8cpp.html',1,'']]],
['xb_5ftest_5fbcd_2ecpp_18',['xb_test_bcd.cpp',['../xb__test__bcd_8cpp.html',1,'']]],
- ['xb_5ftest_5fdate_2ecpp_19',['xb_test_date.cpp',['../xb__test__date_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv3_5fmemos_2ecpp_20',['xb_test_dbf_v3_memos.cpp',['../xb__test__dbf__v3__memos_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv3_5fnomemos_2ecpp_21',['xb_test_dbf_v3_nomemos.cpp',['../xb__test__dbf__v3__nomemos_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv4_5fmemos_2ecpp_22',['xb_test_dbf_v4_memos.cpp',['../xb__test__dbf__v4__memos_8cpp.html',1,'']]],
- ['xb_5ftest_5fdbf_5fv4_5fnomemos_2ecpp_23',['xb_test_dbf_v4_nomemos.cpp',['../xb__test__dbf__v4__nomemos_8cpp.html',1,'']]],
- ['xb_5ftest_5fexpnode_2ecpp_24',['xb_test_expnode.cpp',['../xb__test__expnode_8cpp.html',1,'']]],
- ['xb_5ftest_5fexpression_2ecpp_25',['xb_test_expression.cpp',['../xb__test__expression_8cpp.html',1,'']]],
- ['xb_5ftest_5ffile_2ecpp_26',['xb_test_file.cpp',['../xb__test__file_8cpp.html',1,'']]],
- ['xb_5ftest_5ffilter_2ecpp_27',['xb_test_filter.cpp',['../xb__test__filter_8cpp.html',1,'']]],
- ['xb_5ftest_5ffuncs_2ecpp_28',['xb_test_funcs.cpp',['../xb__test__funcs_8cpp.html',1,'']]],
- ['xb_5ftest_5flinklist_2ecpp_29',['xb_test_linklist.cpp',['../xb__test__linklist_8cpp.html',1,'']]],
- ['xb_5ftest_5flock_2ecpp_30',['xb_test_lock.cpp',['../xb__test__lock_8cpp.html',1,'']]],
- ['xb_5ftest_5flock2_2ecpp_31',['xb_test_lock2.cpp',['../xb__test__lock2_8cpp.html',1,'']]],
- ['xb_5ftest_5flog_2ecpp_32',['xb_test_log.cpp',['../xb__test__log_8cpp.html',1,'']]],
- ['xb_5ftest_5fmdx_2ecpp_33',['xb_test_mdx.cpp',['../xb__test__mdx_8cpp.html',1,'']]],
- ['xb_5ftest_5fndx_2ecpp_34',['xb_test_ndx.cpp',['../xb__test__ndx_8cpp.html',1,'']]],
- ['xb_5ftest_5fsql_2ecpp_35',['xb_test_sql.cpp',['../xb__test__sql_8cpp.html',1,'']]],
- ['xb_5ftest_5fstring_2ecpp_36',['xb_test_string.cpp',['../xb__test__string_8cpp.html',1,'']]],
- ['xb_5ftest_5ftblmgr_2ecpp_37',['xb_test_tblmgr.cpp',['../xb__test__tblmgr_8cpp.html',1,'']]],
- ['xb_5ftest_5fuda_2ecpp_38',['xb_test_uda.cpp',['../xb__test__uda_8cpp.html',1,'']]],
- ['xb_5ftest_5fxbase_2ecpp_39',['xb_test_xbase.cpp',['../xb__test__xbase_8cpp.html',1,'']]],
- ['xb_5fundelall_2ecpp_40',['xb_undelall.cpp',['../xb__undelall_8cpp.html',1,'']]],
- ['xb_5fzap_2ecpp_41',['xb_zap.cpp',['../xb__zap_8cpp.html',1,'']]],
+ ['xb_5ftest_5fblockread_2ecpp_19',['xb_test_blockread.cpp',['../xb__test__blockread_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdate_2ecpp_20',['xb_test_date.cpp',['../xb__test__date_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv3_5fmemos_2ecpp_21',['xb_test_dbf_v3_memos.cpp',['../xb__test__dbf__v3__memos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv3_5fnomemos_2ecpp_22',['xb_test_dbf_v3_nomemos.cpp',['../xb__test__dbf__v3__nomemos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv4_5fmemos_2ecpp_23',['xb_test_dbf_v4_memos.cpp',['../xb__test__dbf__v4__memos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fdbf_5fv4_5fnomemos_2ecpp_24',['xb_test_dbf_v4_nomemos.cpp',['../xb__test__dbf__v4__nomemos_8cpp.html',1,'']]],
+ ['xb_5ftest_5fexpnode_2ecpp_25',['xb_test_expnode.cpp',['../xb__test__expnode_8cpp.html',1,'']]],
+ ['xb_5ftest_5fexpression_2ecpp_26',['xb_test_expression.cpp',['../xb__test__expression_8cpp.html',1,'']]],
+ ['xb_5ftest_5ffile_2ecpp_27',['xb_test_file.cpp',['../xb__test__file_8cpp.html',1,'']]],
+ ['xb_5ftest_5ffilter_2ecpp_28',['xb_test_filter.cpp',['../xb__test__filter_8cpp.html',1,'']]],
+ ['xb_5ftest_5ffuncs_2ecpp_29',['xb_test_funcs.cpp',['../xb__test__funcs_8cpp.html',1,'']]],
+ ['xb_5ftest_5flinklist_2ecpp_30',['xb_test_linklist.cpp',['../xb__test__linklist_8cpp.html',1,'']]],
+ ['xb_5ftest_5flock_2ecpp_31',['xb_test_lock.cpp',['../xb__test__lock_8cpp.html',1,'']]],
+ ['xb_5ftest_5flock2_2ecpp_32',['xb_test_lock2.cpp',['../xb__test__lock2_8cpp.html',1,'']]],
+ ['xb_5ftest_5flog_2ecpp_33',['xb_test_log.cpp',['../xb__test__log_8cpp.html',1,'']]],
+ ['xb_5ftest_5fmdx_2ecpp_34',['xb_test_mdx.cpp',['../xb__test__mdx_8cpp.html',1,'']]],
+ ['xb_5ftest_5fndx_2ecpp_35',['xb_test_ndx.cpp',['../xb__test__ndx_8cpp.html',1,'']]],
+ ['xb_5ftest_5fsql_2ecpp_36',['xb_test_sql.cpp',['../xb__test__sql_8cpp.html',1,'']]],
+ ['xb_5ftest_5fstring_2ecpp_37',['xb_test_string.cpp',['../xb__test__string_8cpp.html',1,'']]],
+ ['xb_5ftest_5ftblmgr_2ecpp_38',['xb_test_tblmgr.cpp',['../xb__test__tblmgr_8cpp.html',1,'']]],
+ ['xb_5ftest_5fuda_2ecpp_39',['xb_test_uda.cpp',['../xb__test__uda_8cpp.html',1,'']]],
+ ['xb_5ftest_5fxbase_2ecpp_40',['xb_test_xbase.cpp',['../xb__test__xbase_8cpp.html',1,'']]],
+ ['xb_5fundelall_2ecpp_41',['xb_undelall.cpp',['../xb__undelall_8cpp.html',1,'']]],
['xbalttbl_2ecpp_42',['xbalttbl.cpp',['../xbalttbl_8cpp.html',1,'']]],
['xbase_2eh_43',['xbase.h',['../xbase_8h.html',1,'']]],
['xbbcd_2ecpp_44',['xbbcd.cpp',['../xbbcd_8cpp.html',1,'']]],
['xbbcd_2eh_45',['xbbcd.h',['../xbbcd_8h.html',1,'']]],
- ['xbcrix_2ecpp_46',['xbcrix.cpp',['../xbcrix_8cpp.html',1,'']]],
- ['xbcrtbl_2ecpp_47',['xbcrtbl.cpp',['../xbcrtbl_8cpp.html',1,'']]],
- ['xbdate_2ecpp_48',['xbdate.cpp',['../xbdate_8cpp.html',1,'']]],
- ['xbdate_2eh_49',['xbdate.h',['../xbdate_8h.html',1,'']]],
- ['xbdbf_2ecpp_50',['xbdbf.cpp',['../xbdbf_8cpp.html',1,'']]],
- ['xbdbf_2eh_51',['xbdbf.h',['../xbdbf_8h.html',1,'']]],
- ['xbdbf3_2ecpp_52',['xbdbf3.cpp',['../xbdbf3_8cpp.html',1,'']]],
- ['xbdbf4_2ecpp_53',['xbdbf4.cpp',['../xbdbf4_8cpp.html',1,'']]],
- ['xbdelete_2ecpp_54',['xbdelete.cpp',['../xbdelete_8cpp.html',1,'']]],
- ['xbdrpix_2ecpp_55',['xbdrpix.cpp',['../xbdrpix_8cpp.html',1,'']]],
- ['xbdrptbl_2ecpp_56',['xbdrptbl.cpp',['../xbdrptbl_8cpp.html',1,'']]],
- ['xbexp_2ecpp_57',['xbexp.cpp',['../xbexp_8cpp.html',1,'']]],
- ['xbexp_2eh_58',['xbexp.h',['../xbexp_8h.html',1,'']]],
- ['xbexpnode_2ecpp_59',['xbexpnode.cpp',['../xbexpnode_8cpp.html',1,'']]],
- ['xbexpnode_2eh_60',['xbexpnode.h',['../xbexpnode_8h.html',1,'']]],
- ['xbfields_2ecpp_61',['xbfields.cpp',['../xbfields_8cpp.html',1,'']]],
- ['xbfile_2ecpp_62',['xbfile.cpp',['../xbfile_8cpp.html',1,'']]],
- ['xbfile_2eh_63',['xbfile.h',['../xbfile_8h.html',1,'']]],
- ['xbfilter_2ecpp_64',['xbfilter.cpp',['../xbfilter_8cpp.html',1,'']]],
- ['xbfilter_2eh_65',['xbfilter.h',['../xbfilter_8h.html',1,'']]],
- ['xbfuncs_2ecpp_66',['xbfuncs.cpp',['../xbfuncs_8cpp.html',1,'']]],
- ['xbindex_2eh_67',['xbindex.h',['../xbindex_8h.html',1,'']]],
- ['xbinsert_2ecpp_68',['xbinsert.cpp',['../xbinsert_8cpp.html',1,'']]],
- ['xbixbase_2ecpp_69',['xbixbase.cpp',['../xbixbase_8cpp.html',1,'']]],
- ['xbixmdx_2ecpp_70',['xbixmdx.cpp',['../xbixmdx_8cpp.html',1,'']]],
- ['xbixndx_2ecpp_71',['xbixndx.cpp',['../xbixndx_8cpp.html',1,'']]],
- ['xblnklst_2eh_72',['xblnklst.h',['../xblnklst_8h.html',1,'']]],
- ['xblnklstord_2eh_73',['xblnklstord.h',['../xblnklstord_8h.html',1,'']]],
- ['xblnknod_2eh_74',['xblnknod.h',['../xblnknod_8h.html',1,'']]],
- ['xblog_2ecpp_75',['xblog.cpp',['../xblog_8cpp.html',1,'']]],
- ['xblog_2eh_76',['xblog.h',['../xblog_8h.html',1,'']]],
- ['xbmemo_2ecpp_77',['xbmemo.cpp',['../xbmemo_8cpp.html',1,'']]],
- ['xbmemo_2eh_78',['xbmemo.h',['../xbmemo_8h.html',1,'']]],
- ['xbmemo3_2ecpp_79',['xbmemo3.cpp',['../xbmemo3_8cpp.html',1,'']]],
- ['xbmemo4_2ecpp_80',['xbmemo4.cpp',['../xbmemo4_8cpp.html',1,'']]],
- ['xbretcod_2eh_81',['xbretcod.h',['../xbretcod_8h.html',1,'']]],
- ['xbset_2ecpp_82',['xbset.cpp',['../xbset_8cpp.html',1,'']]],
- ['xbsql_2ecpp_83',['xbsql.cpp',['../xbsql_8cpp.html',1,'']]],
- ['xbsql_2eh_84',['xbsql.h',['../xbsql_8h.html',1,'']]],
- ['xbssv_2ecpp_85',['xbssv.cpp',['../xbssv_8cpp.html',1,'']]],
- ['xbssv_2eh_86',['xbssv.h',['../xbssv_8h.html',1,'']]],
- ['xbstring_2ecpp_87',['xbstring.cpp',['../xbstring_8cpp.html',1,'']]],
- ['xbstring_2eh_88',['xbstring.h',['../xbstring_8h.html',1,'']]],
- ['xbtag_2ecpp_89',['xbtag.cpp',['../xbtag_8cpp.html',1,'']]],
- ['xbtag_2eh_90',['xbtag.h',['../xbtag_8h.html',1,'']]],
- ['xbtblmgr_2ecpp_91',['xbtblmgr.cpp',['../xbtblmgr_8cpp.html',1,'']]],
- ['xbtblmgr_2eh_92',['xbtblmgr.h',['../xbtblmgr_8h.html',1,'']]],
- ['xbtypes_2eh_93',['xbtypes.h',['../xbtypes_8h.html',1,'']]],
- ['xbuda_2ecpp_94',['xbuda.cpp',['../xbuda_8cpp.html',1,'']]],
- ['xbuda_2eh_95',['xbuda.h',['../xbuda_8h.html',1,'']]],
- ['xbxbase_2ecpp_96',['xbxbase.cpp',['../xbxbase_8cpp.html',1,'']]],
- ['xbxbase_2eh_97',['xbxbase.h',['../xbxbase_8h.html',1,'']]]
+ ['xbblkread_2eh_46',['xbblkread.h',['../xbblkread_8h.html',1,'']]],
+ ['xbblockread_2ecpp_47',['xbblockread.cpp',['../xbblockread_8cpp.html',1,'']]],
+ ['xbcrix_2ecpp_48',['xbcrix.cpp',['../xbcrix_8cpp.html',1,'']]],
+ ['xbcrtbl_2ecpp_49',['xbcrtbl.cpp',['../xbcrtbl_8cpp.html',1,'']]],
+ ['xbcrtbl_2esave_2ecpp_50',['xbcrtbl.save.cpp',['../xbcrtbl_8save_8cpp.html',1,'']]],
+ ['xbdate_2ecpp_51',['xbdate.cpp',['../xbdate_8cpp.html',1,'']]],
+ ['xbdate_2eh_52',['xbdate.h',['../xbdate_8h.html',1,'']]],
+ ['xbdbf_2ecpp_53',['xbdbf.cpp',['../xbdbf_8cpp.html',1,'']]],
+ ['xbdbf_2eh_54',['xbdbf.h',['../xbdbf_8h.html',1,'']]],
+ ['xbdbf3_2ecpp_55',['xbdbf3.cpp',['../xbdbf3_8cpp.html',1,'']]],
+ ['xbdbf4_2ecpp_56',['xbdbf4.cpp',['../xbdbf4_8cpp.html',1,'']]],
+ ['xbdelete_2ecpp_57',['xbdelete.cpp',['../xbdelete_8cpp.html',1,'']]],
+ ['xbdrpix_2ecpp_58',['xbdrpix.cpp',['../xbdrpix_8cpp.html',1,'']]],
+ ['xbdrptbl_2ecpp_59',['xbdrptbl.cpp',['../xbdrptbl_8cpp.html',1,'']]],
+ ['xbexp_2ecpp_60',['xbexp.cpp',['../xbexp_8cpp.html',1,'']]],
+ ['xbexp_2eh_61',['xbexp.h',['../xbexp_8h.html',1,'']]],
+ ['xbexpnode_2ecpp_62',['xbexpnode.cpp',['../xbexpnode_8cpp.html',1,'']]],
+ ['xbexpnode_2eh_63',['xbexpnode.h',['../xbexpnode_8h.html',1,'']]],
+ ['xbfields_2ecpp_64',['xbfields.cpp',['../xbfields_8cpp.html',1,'']]],
+ ['xbfile_2ecpp_65',['xbfile.cpp',['../xbfile_8cpp.html',1,'']]],
+ ['xbfile_2eh_66',['xbfile.h',['../xbfile_8h.html',1,'']]],
+ ['xbfilter_2ecpp_67',['xbfilter.cpp',['../xbfilter_8cpp.html',1,'']]],
+ ['xbfilter_2eh_68',['xbfilter.h',['../xbfilter_8h.html',1,'']]],
+ ['xbfuncs_2ecpp_69',['xbfuncs.cpp',['../xbfuncs_8cpp.html',1,'']]],
+ ['xbindex_2eh_70',['xbindex.h',['../xbindex_8h.html',1,'']]],
+ ['xbinsert_2ecpp_71',['xbinsert.cpp',['../xbinsert_8cpp.html',1,'']]],
+ ['xbixbase_2ecpp_72',['xbixbase.cpp',['../xbixbase_8cpp.html',1,'']]],
+ ['xbixmdx_2ecpp_73',['xbixmdx.cpp',['../xbixmdx_8cpp.html',1,'']]],
+ ['xbixndx_2ecpp_74',['xbixndx.cpp',['../xbixndx_8cpp.html',1,'']]],
+ ['xblnklst_2eh_75',['xblnklst.h',['../xblnklst_8h.html',1,'']]],
+ ['xblnklstord_2eh_76',['xblnklstord.h',['../xblnklstord_8h.html',1,'']]],
+ ['xblnknod_2eh_77',['xblnknod.h',['../xblnknod_8h.html',1,'']]],
+ ['xblog_2ecpp_78',['xblog.cpp',['../xblog_8cpp.html',1,'']]],
+ ['xblog_2eh_79',['xblog.h',['../xblog_8h.html',1,'']]],
+ ['xbmemo_2ecpp_80',['xbmemo.cpp',['../xbmemo_8cpp.html',1,'']]],
+ ['xbmemo_2eh_81',['xbmemo.h',['../xbmemo_8h.html',1,'']]],
+ ['xbmemo3_2ecpp_82',['xbmemo3.cpp',['../xbmemo3_8cpp.html',1,'']]],
+ ['xbmemo4_2ecpp_83',['xbmemo4.cpp',['../xbmemo4_8cpp.html',1,'']]],
+ ['xbretcod_2eh_84',['xbretcod.h',['../xbretcod_8h.html',1,'']]],
+ ['xbselect_2ecpp_85',['xbselect.cpp',['../xbselect_8cpp.html',1,'']]],
+ ['xbset_2ecpp_86',['xbset.cpp',['../xbset_8cpp.html',1,'']]],
+ ['xbsql_2ecpp_87',['xbsql.cpp',['../xbsql_8cpp.html',1,'']]],
+ ['xbsql_2eh_88',['xbsql.h',['../xbsql_8h.html',1,'']]],
+ ['xbssv_2ecpp_89',['xbssv.cpp',['../xbssv_8cpp.html',1,'']]],
+ ['xbssv_2eh_90',['xbssv.h',['../xbssv_8h.html',1,'']]],
+ ['xbstmt_2ecpp_91',['xbstmt.cpp',['../xbstmt_8cpp.html',1,'']]],
+ ['xbstring_2ecpp_92',['xbstring.cpp',['../xbstring_8cpp.html',1,'']]],
+ ['xbstring_2eh_93',['xbstring.h',['../xbstring_8h.html',1,'']]],
+ ['xbtag_2ecpp_94',['xbtag.cpp',['../xbtag_8cpp.html',1,'']]],
+ ['xbtag_2eh_95',['xbtag.h',['../xbtag_8h.html',1,'']]],
+ ['xbtblmgr_2ecpp_96',['xbtblmgr.cpp',['../xbtblmgr_8cpp.html',1,'']]],
+ ['xbtblmgr_2eh_97',['xbtblmgr.h',['../xbtblmgr_8h.html',1,'']]],
+ ['xbtypes_2eh_98',['xbtypes.h',['../xbtypes_8h.html',1,'']]],
+ ['xbuda_2ecpp_99',['xbuda.cpp',['../xbuda_8cpp.html',1,'']]],
+ ['xbuda_2eh_100',['xbuda.h',['../xbuda_8h.html',1,'']]],
+ ['xbxbase_2ecpp_101',['xbxbase.cpp',['../xbxbase_8cpp.html',1,'']]],
+ ['xbxbase_2eh_102',['xbxbase.h',['../xbxbase_8h.html',1,'']]]
];
diff --git a/docs/doxygen/html/search/functions_0.js b/docs/doxygen/html/search/functions_0.js
index 25f7a4e..1e4e72c 100644
--- a/docs/doxygen/html/search/functions_0.js
+++ b/docs/doxygen/html/search/functions_0.js
@@ -2,7 +2,7 @@ var searchData=
[
['abort_0',['Abort',['../classxb_1_1xbDbf.html#a4edcf31390fbdc8c3558004770fd9f2f',1,'xb::xbDbf']]],
['addbackslash_1',['AddBackSlash',['../classxb_1_1xbString.html#a6c4fdb689d27a9d19a0b5b4236e1ca62',1,'xb::xbString']]],
- ['addtbltotbllist_2',['AddTblToTblList',['../classxb_1_1xbTblMgr.html#a721f69ccc7893842422a043468ffccea',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sTblName)'],['../classxb_1_1xbTblMgr.html#a62f6841849dbe5c1768f7e90f1b7e766',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sTblName, const xbString &amp;sTblAlias)']]],
+ ['addtbltotbllist_2',['AddTblToTblList',['../classxb_1_1xbTblMgr.html#af16832ff2bfaee09265652e0fc03709a',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sFqTblName)'],['../classxb_1_1xbTblMgr.html#a2033188e9b08778188a034a6fc90ca85',1,'xb::xbTblMgr::AddTblToTblList(xbDbf *d, const xbString &amp;sFqTblName, const xbString &amp;sTblAlias)']]],
['append_3',['Append',['../classxb_1_1xbString.html#a8f202e4798491f2ae9ce51ff58dd5815',1,'xb::xbString::Append(const xbString &amp;s)'],['../classxb_1_1xbString.html#a1922319303feb6da1f40b5994c5e8240',1,'xb::xbString::Append(const char *s)'],['../classxb_1_1xbString.html#a097453cb71fbf0b5511cf1259ddce4fb',1,'xb::xbString::Append(const char *s, xbUInt32 iByteCount)'],['../classxb_1_1xbString.html#a093c6ab5df375a2589755bb8f48fa5c7',1,'xb::xbString::Append(char c)']]],
['appendrecord_4',['AppendRecord',['../classxb_1_1xbDbf.html#a5b412dd796241673eb1aa2c93513d69b',1,'xb::xbDbf']]],
['assign_5',['Assign',['../classxb_1_1xbString.html#a85bef82dfa22122a1ab8dfe58a107d96',1,'xb::xbString::Assign(const char *srcStr, xbUInt32 lStartPos, xbUInt32 lCopyLen)'],['../classxb_1_1xbString.html#a08eb7ca6740423acab4e8bd7a6c8043d',1,'xb::xbString::Assign(const char *srcStr, xbUInt32 lStartPos)'],['../classxb_1_1xbString.html#ac6afd224dfbe439ce083c8dd1ad3246c',1,'xb::xbString::Assign(const xbString &amp;s, xbUInt32 pos, xbUInt32 lCopyLen)'],['../classxb_1_1xbString.html#a4f1d709d9f6c56959e8549157b4ee68c',1,'xb::xbString::Assign(const xbString &amp;s, xbUInt32 lCopyLen)']]]
diff --git a/docs/doxygen/html/search/functions_10.js b/docs/doxygen/html/search/functions_10.js
index 7973353..475233e 100644
--- a/docs/doxygen/html/search/functions_10.js
+++ b/docs/doxygen/html/search/functions_10.js
@@ -6,12 +6,12 @@ var searchData=
['setdatadirectory_3',['SetDataDirectory',['../classxb_1_1xbSsv.html#a57caaaadfbd089d9a58ecfcb50c88a6c',1,'xb::xbSsv']]],
['setdefaultautocommit_4',['SetDefaultAutoCommit',['../classxb_1_1xbSsv.html#a25542afadaaf39b4fb5a1772a29cc0bd',1,'xb::xbSsv']]],
['setdefaultdateformat_5',['SetDefaultDateFormat',['../classxb_1_1xbSsv.html#a5f74db23f8902846d581935c7db73f9c',1,'xb::xbSsv']]],
- ['setdefaultlogdirectory_6',['SetDefaultLogDirectory',['../classxb_1_1xbSsv.html#a84343b8645790791512d6bc22ee6c8eb',1,'xb::xbSsv']]],
- ['setdirectory_7',['SetDirectory',['../classxb_1_1xbFile.html#ae78a85255488bc78964c16946dbaead3',1,'xb::xbFile']]],
- ['setendiantype_8',['SetEndianType',['../classxb_1_1xbSsv.html#a904ec348fd029d4a76e72b8fde636108',1,'xb::xbSsv']]],
- ['setfilename_9',['SetFileName',['../classxb_1_1xbFile.html#a5419eb27e56822f828b2b88a9502a636',1,'xb::xbFile']]],
- ['setfqfilename_10',['SetFqFileName',['../classxb_1_1xbFile.html#aee832fa11db2077a532f49e1329bd05a',1,'xb::xbFile']]],
- ['setlogdirectory_11',['SetLogDirectory',['../classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292',1,'xb::xbXBase']]],
+ ['setdirectory_6',['SetDirectory',['../classxb_1_1xbFile.html#ae78a85255488bc78964c16946dbaead3',1,'xb::xbFile']]],
+ ['setendiantype_7',['SetEndianType',['../classxb_1_1xbSsv.html#a904ec348fd029d4a76e72b8fde636108',1,'xb::xbSsv']]],
+ ['setfilename_8',['SetFileName',['../classxb_1_1xbFile.html#a5419eb27e56822f828b2b88a9502a636',1,'xb::xbFile']]],
+ ['setfqfilename_9',['SetFqFileName',['../classxb_1_1xbFile.html#aee832fa11db2077a532f49e1329bd05a',1,'xb::xbFile']]],
+ ['sethomefolders_10',['SetHomeFolders',['../classxb_1_1xbFile.html#a060acbfaa8d528f86cb59301814b414a',1,'xb::xbFile']]],
+ ['setlogdirectory_11',['SetLogDirectory',['../classxb_1_1xbSsv.html#a7b992ed97281bf25b5b66f5df686225e',1,'xb::xbSsv::SetLogDirectory()'],['../classxb_1_1xbXBase.html#a48d82dbe298c6f4cf68a63ac82dd8292',1,'xb::xbXBase::SetLogDirectory(const xbString &amp;sLogFileDirectory)']]],
['setlogfilename_12',['SetLogFileName',['../classxb_1_1xbXBase.html#a94010b88a309315ef980715eb581336c',1,'xb::xbXBase']]],
['setlogsize_13',['SetLogSize',['../classxb_1_1xbXBase.html#a666a0cb5b76ec7a9a3677d339e0c6b42',1,'xb::xbXBase']]],
['setmultiuser_14',['SetMultiUser',['../classxb_1_1xbSsv.html#aba6e59512f7172dd55dcf92059e5928c',1,'xb::xbSsv']]],
diff --git a/docs/doxygen/html/search/functions_6.js b/docs/doxygen/html/search/functions_6.js
index 580f3f8..1cedf85 100644
--- a/docs/doxygen/html/search/functions_6.js
+++ b/docs/doxygen/html/search/functions_6.js
@@ -2,65 +2,68 @@ var searchData=
[
['getautocommit_0',['GetAutoCommit',['../classxb_1_1xbDbf.html#ae0c00226fd2ea7a67f101e795467ed68',1,'xb::xbDbf::GetAutoCommit(xbInt16 iOption) const'],['../classxb_1_1xbDbf.html#abb9e20c5efacd4fea80f1515abbc6b55',1,'xb::xbDbf::GetAutoCommit() const']]],
['getblocksize_1',['GetBlockSize',['../classxb_1_1xbFile.html#a638e14262410a1627819f016a16cdce2',1,'xb::xbFile']]],
- ['getcharacter_2',['GetCharacter',['../classxb_1_1xbString.html#a685187a5f8401b322fc61f3fbe56330d',1,'xb::xbString']]],
- ['getcurrecno_3',['GetCurRecNo',['../classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503',1,'xb::xbDbf']]],
- ['getdatadirectory_4',['GetDataDirectory',['../classxb_1_1xbSsv.html#a1d803a4bfc8ba0561267a0bf9e51f7d9',1,'xb::xbSsv']]],
- ['getdatefield_5',['GetDateField',['../classxb_1_1xbDbf.html#af78ef1fba949463ff7f829d3cffc4555',1,'xb::xbDbf::GetDateField(xbInt16 iFieldNo, xbDate &amp;dt) const'],['../classxb_1_1xbDbf.html#ac624e06a97666bfd64b4f252b4548b36',1,'xb::xbDbf::GetDateField(const xbString &amp;sFieldName, xbDate &amp;dt) const']]],
- ['getdbfptr_6',['GetDbfPtr',['../classxb_1_1xbTblMgr.html#ad8a5d28a2ee6720a9aa74bcb45662cf5',1,'xb::xbTblMgr::GetDbfPtr(const xbString &amp;sTblAlias) const'],['../classxb_1_1xbTblMgr.html#a801dfecf7fc216954b4197b2c31b25d6',1,'xb::xbTblMgr::GetDbfPtr(xbInt16 sItemNo) const']]],
- ['getdbfstatus_7',['GetDbfStatus',['../classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6',1,'xb::xbDbf']]],
- ['getdefaultautocommit_8',['GetDefaultAutoCommit',['../classxb_1_1xbSsv.html#a6982f973e81587b04916f4509746aaf5',1,'xb::xbSsv']]],
- ['getdefaultdateformat_9',['GetDefaultDateFormat',['../classxb_1_1xbSsv.html#a6fbb9c3a550ab0b3378f9586a57791d2',1,'xb::xbSsv']]],
- ['getdefaultlogdirectory_10',['GetDefaultLogDirectory',['../classxb_1_1xbSsv.html#abf3763faf6a8917a963213cd53af529c',1,'xb::xbSsv']]],
- ['getdefaultlogfilename_11',['GetDefaultLogFileName',['../classxb_1_1xbSsv.html#a43878d4dc041f2a5e2398a118ccfaf79',1,'xb::xbSsv']]],
+ ['getbof_2',['GetBof',['../classxb_1_1xbDbf.html#ad0827a43c025c1184ffebab74cc9e779',1,'xb::xbDbf']]],
+ ['getcharacter_3',['GetCharacter',['../classxb_1_1xbString.html#a685187a5f8401b322fc61f3fbe56330d',1,'xb::xbString']]],
+ ['getcmdlineopt_4',['GetCmdLineOpt',['../classxb_1_1xbXBase.html#aadecb3ac460d8e94b88b2e809e22f48e',1,'xb::xbXBase::GetCmdLineOpt(xbInt32 lArgc, char **argv, const char *sOptRqst, xbString &amp;sParmOut)'],['../classxb_1_1xbXBase.html#a8612e0c5334349fbceb9394b47817fd5',1,'xb::xbXBase::GetCmdLineOpt(xbInt32 lArgc, char **argv, xbString &amp;sOptRqst, xbString &amp;sParmOut)']]],
+ ['getcurrecno_5',['GetCurRecNo',['../classxb_1_1xbDbf.html#a643a80a3792a52760c8e09ba18719503',1,'xb::xbDbf']]],
+ ['getdatadirectory_6',['GetDataDirectory',['../classxb_1_1xbSsv.html#a1d803a4bfc8ba0561267a0bf9e51f7d9',1,'xb::xbSsv']]],
+ ['getdatefield_7',['GetDateField',['../classxb_1_1xbDbf.html#af78ef1fba949463ff7f829d3cffc4555',1,'xb::xbDbf::GetDateField(xbInt16 iFieldNo, xbDate &amp;dt) const'],['../classxb_1_1xbDbf.html#ac624e06a97666bfd64b4f252b4548b36',1,'xb::xbDbf::GetDateField(const xbString &amp;sFieldName, xbDate &amp;dt) const']]],
+ ['getdbfptr_8',['GetDbfPtr',['../classxb_1_1xbTblMgr.html#ad8a5d28a2ee6720a9aa74bcb45662cf5',1,'xb::xbTblMgr::GetDbfPtr(const xbString &amp;sTblAlias) const'],['../classxb_1_1xbTblMgr.html#a801dfecf7fc216954b4197b2c31b25d6',1,'xb::xbTblMgr::GetDbfPtr(xbInt16 sItemNo) const']]],
+ ['getdbfstatus_9',['GetDbfStatus',['../classxb_1_1xbDbf.html#ac1110d867ba297a52c8b0e83e88f05e6',1,'xb::xbDbf']]],
+ ['getdefaultautocommit_10',['GetDefaultAutoCommit',['../classxb_1_1xbSsv.html#a6982f973e81587b04916f4509746aaf5',1,'xb::xbSsv']]],
+ ['getdefaultdateformat_11',['GetDefaultDateFormat',['../classxb_1_1xbSsv.html#a6fbb9c3a550ab0b3378f9586a57791d2',1,'xb::xbSsv']]],
['getdirectory_12',['GetDirectory',['../classxb_1_1xbFile.html#acd0fb2166b2bff7e8a1cf65a7bc8be1e',1,'xb::xbFile']]],
['getdoublefield_13',['GetDoubleField',['../classxb_1_1xbDbf.html#a4556041a7ff2f6b6f986729901c11f08',1,'xb::xbDbf::GetDoubleField(xbInt16 FieldNo, xbDouble &amp;dFieldValue) const'],['../classxb_1_1xbDbf.html#a2370b5e736931441a5968649291b9ef4',1,'xb::xbDbf::GetDoubleField(xbInt16 FieldNo, xbDouble &amp;dFieldValue, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#a6e6774df0f2d7733f4b25a9989596d95',1,'xb::xbDbf::GetDoubleField(const xbString &amp;sFieldName, xbDouble &amp;dFieldValue) const']]],
['getendiantype_14',['GetEndianType',['../classxb_1_1xbSsv.html#a49cd162f066eef2b829ba7c9f6620243',1,'xb::xbSsv']]],
- ['geterrormessage_15',['GetErrorMessage',['../classxb_1_1xbSsv.html#a56961d2a67b8e7470098626ac4dac7e4',1,'xb::xbSsv']]],
- ['getfield_16',['GetField',['../classxb_1_1xbDbf.html#ad245a26eb8b79610c9ae7bab19e05513',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#ac81f078f3c932f0da60ad1fbdd848d3e',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue) const'],['../classxb_1_1xbDbf.html#a9a0fcf7e2040ab483e3807927833cb26',1,'xb::xbDbf::GetField(const xbString &amp;sFieldName, xbString &amp;sFieldValue) const']]],
- ['getfieldcnt_17',['GetFieldCnt',['../classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e',1,'xb::xbDbf']]],
- ['getfielddecimal_18',['GetFieldDecimal',['../classxb_1_1xbDbf.html#a607f774fcd6dc0b9913d7a7801b60db2',1,'xb::xbDbf::GetFieldDecimal(const xbString &amp;sFieldName, xbInt16 &amp;iFieldDecimal) const'],['../classxb_1_1xbDbf.html#abcb4defad2e1b6e67f63cc60737ad840',1,'xb::xbDbf::GetFieldDecimal(xbInt16 iFieldNo, xbInt16 &amp;iFieldDecimal) const']]],
- ['getfieldlen_19',['GetFieldLen',['../classxb_1_1xbDbf.html#adda4302b58cc6109b048f19d9b68bbd4',1,'xb::xbDbf::GetFieldLen(xbInt16 iFieldNo, xbInt16 &amp;iFieldLen) const'],['../classxb_1_1xbDbf.html#acf06dbccdba1a4bcd90fa0bea6cca59b',1,'xb::xbDbf::GetFieldLen(const xbString &amp;sFieldName, xbInt16 &amp;iFieldLen) const']]],
- ['getfieldname_20',['GetFieldName',['../classxb_1_1xbDbf.html#a5e3e4368bfba1724c016b8859023e34c',1,'xb::xbDbf']]],
- ['getfieldno_21',['GetFieldNo',['../classxb_1_1xbDbf.html#aed9113b5095c6df1b9c854cbd0d8047b',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName, xbInt16 &amp;iFieldNo) const'],['../classxb_1_1xbDbf.html#aad9029e63909aeb77d8473256d88bea8',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName) const']]],
- ['getfieldtype_22',['GetFieldType',['../classxb_1_1xbDbf.html#a5143973e4f165651152aa13c8fd45f84',1,'xb::xbDbf::GetFieldType(xbInt16 iFieldNo, char &amp;cFieldType) const'],['../classxb_1_1xbDbf.html#a181db879f1a75f93a34c03513a0b2fea',1,'xb::xbDbf::GetFieldType(const xbString &amp;sFieldName, char &amp;cFieldType) const']]],
- ['getfiledirpart_23',['GetFileDirPart',['../classxb_1_1xbFile.html#a60c53998e3d1b694134b20a87bc9bf5a',1,'xb::xbFile::GetFileDirPart(xbString &amp;sFileDirPartOut) const'],['../classxb_1_1xbFile.html#af5127c92892816e9bbc5c19653c4147a',1,'xb::xbFile::GetFileDirPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileDirPartOut) const']]],
- ['getfileextpart_24',['GetFileExtPart',['../classxb_1_1xbFile.html#a57a9222e5cbb51019d4eeb2c3ac89fa2',1,'xb::xbFile::GetFileExtPart(xbString &amp;sFileExtPartOut) const'],['../classxb_1_1xbFile.html#ab289b6ffe955321160c1f90220c22e25',1,'xb::xbFile::GetFileExtPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileExtPartOut) const']]],
- ['getfilemtime_25',['GetFileMtime',['../classxb_1_1xbFile.html#a02df78f4c90313243f508fc56b95aba8',1,'xb::xbFile']]],
- ['getfilename_26',['GetFileName',['../classxb_1_1xbFile.html#ac95cb882ccbcdedc9a233c6ad9fed07a',1,'xb::xbFile']]],
- ['getfilenamepart_27',['GetFileNamePart',['../classxb_1_1xbFile.html#a81422b3dd52763d2cc6c77237ec9af0a',1,'xb::xbFile::GetFileNamePart(xbString &amp;sFileNamePartOut) const'],['../classxb_1_1xbFile.html#a6110763c5ae996b72c7a62c15bdecc73',1,'xb::xbFile::GetFileNamePart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileNamePartOut) const']]],
- ['getfilesize_28',['GetFileSize',['../classxb_1_1xbFile.html#a50b63c39e49d44e52078038027b24cc5',1,'xb::xbFile']]],
- ['getfiletype_29',['GetFileType',['../classxb_1_1xbFile.html#a5548236d38d43b89ae29b9a015b1f678',1,'xb::xbFile']]],
- ['getfirstrecord_30',['GetFirstRecord',['../classxb_1_1xbDbf.html#a6fc5b8a3e2f177d5ceaf9d975cbb5226',1,'xb::xbDbf::GetFirstRecord()'],['../classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a',1,'xb::xbDbf::GetFirstRecord(xbInt16 iOption)']]],
- ['getfloatfield_31',['GetFloatField',['../classxb_1_1xbDbf.html#a3443f646038ced14425f067a59c0f2da',1,'xb::xbDbf::GetFloatField(xbInt16 iFieldNo, xbFloat &amp;fFieldValue) const'],['../classxb_1_1xbDbf.html#a81ef2f36f921d7ece066a592eb6393eb',1,'xb::xbDbf::GetFloatField(const xbString &amp;sFieldName, xbFloat &amp;fFieldValue) const']]],
- ['getfqfilename_32',['GetFqFileName',['../classxb_1_1xbFile.html#a31b4e641f93206ba23e2a5a27491dcd4',1,'xb::xbFile']]],
- ['getfunctioninfo_33',['GetFunctionInfo',['../classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1',1,'xb::xbXBase']]],
- ['getlastpos_34',['GetLastPos',['../classxb_1_1xbString.html#ac7698665f44413a5e99a5b5bc573c6df',1,'xb::xbString::GetLastPos(char c) const'],['../classxb_1_1xbString.html#a1c55587904fe7e534290559d0ecb8646',1,'xb::xbString::GetLastPos(const char *s) const']]],
- ['getlastrecord_35',['GetLastRecord',['../classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964',1,'xb::xbDbf::GetLastRecord()'],['../classxb_1_1xbDbf.html#a8ccfa2291417412b6894940d1b92f9a6',1,'xb::xbDbf::GetLastRecord(xbInt16 iOption)']]],
- ['getlogdirectory_36',['GetLogDirectory',['../classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b',1,'xb::xbXBase']]],
- ['getlogfilename_37',['GetLogFileName',['../classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af',1,'xb::xbXBase']]],
- ['getlogfqfilename_38',['GetLogFqFileName',['../classxb_1_1xbXBase.html#ab5d63cd7d9137eba8a1d4d9c3df522b7',1,'xb::xbXBase']]],
- ['getlogicalfield_39',['GetLogicalField',['../classxb_1_1xbDbf.html#aaf615ddcf08f8cd14efc713c2a8d7ae1',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData) const'],['../classxb_1_1xbDbf.html#a943cea7fde1b06c1a05184193eff8d2d',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbBool &amp;bFieldData) const'],['../classxb_1_1xbDbf.html#ab28feef20c988b0a6f1c1911a45377b0',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#a9cd6819bfd932ff8507e54d9cb9a624e',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbString &amp;sFieldData) const'],['../classxb_1_1xbDbf.html#a3254f091fc4a1404abed3dd2bcdd6ce6',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbString &amp;sFieldData) const']]],
- ['getlogstatus_40',['GetLogStatus',['../classxb_1_1xbXBase.html#ade34cd72c2a7e70fb55429a8a6f6c028',1,'xb::xbXBase']]],
- ['getlongfield_41',['GetLongField',['../classxb_1_1xbDbf.html#abe525c0820640e0a9e169d0b7913cfa1',1,'xb::xbDbf::GetLongField(xbInt16 iFieldNo, xbInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a7b8ef75b17941beac17e50e969b2d3db',1,'xb::xbDbf::GetLongField(const xbString &amp;sFieldName, xbInt32 &amp;lFieldValue) const']]],
- ['getmultiuser_42',['GetMultiUser',['../classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5',1,'xb::xbSsv']]],
- ['getnextrecord_43',['GetNextRecord',['../classxb_1_1xbDbf.html#ab896fe3b734f556de578d30f92b18fe2',1,'xb::xbDbf::GetNextRecord()'],['../classxb_1_1xbDbf.html#a3191428a7a92d9107d8d42448884f2ac',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption)'],['../classxb_1_1xbDbf.html#a18fdcb4ab15b36cd47fa6f6f7a540d1a',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption, xbUInt32 ulStartRec)']]],
- ['getnextsqlcmd_44',['GetNextSqlCmd',['../xb__execsql_8cpp.html#af888ba5e7e94d92c2165362b87f1ea0e',1,'xb_execsql.cpp']]],
- ['getopenmode_45',['GetOpenMode',['../classxb_1_1xbFile.html#a3c500dc9dac22c49496e4b29386b2dd3',1,'xb::xbFile']]],
- ['getopentablecount_46',['GetOpenTableCount',['../classxb_1_1xbTblMgr.html#ad0d2d4adabc0dc0e761cfdee63c84069',1,'xb::xbTblMgr']]],
- ['getpathseparator_47',['GetPathSeparator',['../classxb_1_1xbString.html#af8b8b808cf43cd352321b43f500142db',1,'xb::xbString']]],
- ['getprevrecord_48',['GetPrevRecord',['../classxb_1_1xbDbf.html#a7eadc7b08d73003802b90584f7b33387',1,'xb::xbDbf::GetPrevRecord(xbInt16 iOption)'],['../classxb_1_1xbDbf.html#ab3d248e5221b4f0809897cd43af17a1e',1,'xb::xbDbf::GetPrevRecord()']]],
- ['getrawfield_49',['GetRawField',['../classxb_1_1xbDbf.html#aabd146c0e1054ab905ec96aedd84b02e',1,'xb::xbDbf']]],
- ['getrecord_50',['GetRecord',['../classxb_1_1xbDbf.html#a26fba086b07caeab95066bf1c8d25161',1,'xb::xbDbf']]],
- ['getrecordbuf_51',['GetRecordBuf',['../classxb_1_1xbDbf.html#aa3e38c4057d726a28a27d07a1610d124',1,'xb::xbDbf']]],
- ['getrecordcnt_52',['GetRecordCnt',['../classxb_1_1xbDbf.html#ac196ad55335e1f4789d698748434dc89',1,'xb::xbDbf']]],
- ['getrecordcount_53',['GetRecordCount',['../classxb_1_1xbDbf.html#a0aaa06d6028e75efc6b5131f7356ecce',1,'xb::xbDbf']]],
- ['getrecordlen_54',['GetRecordLen',['../classxb_1_1xbDbf.html#ab50d76c6e29e81e347a6feb04c2f62bb',1,'xb::xbDbf']]],
- ['getsharemode_55',['GetShareMode',['../classxb_1_1xbFile.html#a9b63e05b77f477ff6109ff7b9432c1b6',1,'xb::xbFile']]],
- ['getsize_56',['GetSize',['../classxb_1_1xbString.html#a6c33e73659f8e98819289d2661c7271c',1,'xb::xbString']]],
- ['gettblalias_57',['GetTblAlias',['../classxb_1_1xbDbf.html#a27758a325c097f204247908b65ba7fbd',1,'xb::xbDbf']]],
- ['gettbllistentry_58',['GetTblListEntry',['../classxb_1_1xbTblMgr.html#acbf148ddba4297021cfb980a161ebef9',1,'xb::xbTblMgr']]],
- ['getulongfield_59',['GetULongField',['../classxb_1_1xbDbf.html#a67e3a050f9090edf69eee75aef7f5d83',1,'xb::xbDbf::GetULongField(xbInt16 iFieldNo, xbUInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a039eb02418ec4ca862adbc0f95b9cbec',1,'xb::xbDbf::GetULongField(const xbString &amp;sFieldName, xbUInt32 &amp;lFieldValue) const']]],
- ['getversion_60',['GetVersion',['../classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6',1,'xb::xbDbf']]],
- ['getxbasefiletypebyte_61',['GetXbaseFileTypeByte',['../classxb_1_1xbFile.html#aaf2e697751a0beff41432a66bb83fb5e',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, xbInt16 &amp;iVersion)'],['../classxb_1_1xbFile.html#a7af337808919680b90710ad5e8a99232',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte)'],['../classxb_1_1xbFile.html#a78aebdd21d3de46a450d5f835e3027f6',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte, xbInt16 &amp;iVersion)']]],
- ['getxbaseptr_62',['GetXbasePtr',['../classxb_1_1xbDbf.html#ab21ec23c076b0c9affdc0f6672bd133f',1,'xb::xbDbf']]]
+ ['geteof_15',['GetEof',['../classxb_1_1xbDbf.html#a256dc1f98626fa77da24e91a38ab5b4d',1,'xb::xbDbf']]],
+ ['geterrormessage_16',['GetErrorMessage',['../classxb_1_1xbSsv.html#a56961d2a67b8e7470098626ac4dac7e4',1,'xb::xbSsv']]],
+ ['getfield_17',['GetField',['../classxb_1_1xbDbf.html#a9a0fcf7e2040ab483e3807927833cb26',1,'xb::xbDbf::GetField(const xbString &amp;sFieldName, xbString &amp;sFieldValue) const'],['../classxb_1_1xbDbf.html#ad245a26eb8b79610c9ae7bab19e05513',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#ac81f078f3c932f0da60ad1fbdd848d3e',1,'xb::xbDbf::GetField(xbInt16 iFieldNo, xbString &amp;sFieldValue) const']]],
+ ['getfieldcnt_18',['GetFieldCnt',['../classxb_1_1xbDbf.html#add27d8ef555a13b336b8c804165dc15e',1,'xb::xbDbf']]],
+ ['getfielddecimal_19',['GetFieldDecimal',['../classxb_1_1xbDbf.html#abcb4defad2e1b6e67f63cc60737ad840',1,'xb::xbDbf::GetFieldDecimal(xbInt16 iFieldNo, xbInt16 &amp;iFieldDecimal) const'],['../classxb_1_1xbDbf.html#a607f774fcd6dc0b9913d7a7801b60db2',1,'xb::xbDbf::GetFieldDecimal(const xbString &amp;sFieldName, xbInt16 &amp;iFieldDecimal) const']]],
+ ['getfieldlen_20',['GetFieldLen',['../classxb_1_1xbDbf.html#adda4302b58cc6109b048f19d9b68bbd4',1,'xb::xbDbf::GetFieldLen(xbInt16 iFieldNo, xbInt16 &amp;iFieldLen) const'],['../classxb_1_1xbDbf.html#acf06dbccdba1a4bcd90fa0bea6cca59b',1,'xb::xbDbf::GetFieldLen(const xbString &amp;sFieldName, xbInt16 &amp;iFieldLen) const']]],
+ ['getfieldname_21',['GetFieldName',['../classxb_1_1xbDbf.html#a5e3e4368bfba1724c016b8859023e34c',1,'xb::xbDbf']]],
+ ['getfieldno_22',['GetFieldNo',['../classxb_1_1xbDbf.html#aed9113b5095c6df1b9c854cbd0d8047b',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName, xbInt16 &amp;iFieldNo) const'],['../classxb_1_1xbDbf.html#aad9029e63909aeb77d8473256d88bea8',1,'xb::xbDbf::GetFieldNo(const xbString &amp;sFieldName) const']]],
+ ['getfieldtype_23',['GetFieldType',['../classxb_1_1xbDbf.html#a5143973e4f165651152aa13c8fd45f84',1,'xb::xbDbf::GetFieldType(xbInt16 iFieldNo, char &amp;cFieldType) const'],['../classxb_1_1xbDbf.html#a181db879f1a75f93a34c03513a0b2fea',1,'xb::xbDbf::GetFieldType(const xbString &amp;sFieldName, char &amp;cFieldType) const']]],
+ ['getfiledirpart_24',['GetFileDirPart',['../classxb_1_1xbFile.html#a60c53998e3d1b694134b20a87bc9bf5a',1,'xb::xbFile::GetFileDirPart(xbString &amp;sFileDirPartOut) const'],['../classxb_1_1xbFile.html#af5127c92892816e9bbc5c19653c4147a',1,'xb::xbFile::GetFileDirPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileDirPartOut) const']]],
+ ['getfileextpart_25',['GetFileExtPart',['../classxb_1_1xbFile.html#a57a9222e5cbb51019d4eeb2c3ac89fa2',1,'xb::xbFile::GetFileExtPart(xbString &amp;sFileExtPartOut) const'],['../classxb_1_1xbFile.html#ab289b6ffe955321160c1f90220c22e25',1,'xb::xbFile::GetFileExtPart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileExtPartOut) const']]],
+ ['getfilemtime_26',['GetFileMtime',['../classxb_1_1xbFile.html#a02df78f4c90313243f508fc56b95aba8',1,'xb::xbFile']]],
+ ['getfilename_27',['GetFileName',['../classxb_1_1xbFile.html#ac95cb882ccbcdedc9a233c6ad9fed07a',1,'xb::xbFile']]],
+ ['getfilenamepart_28',['GetFileNamePart',['../classxb_1_1xbFile.html#a81422b3dd52763d2cc6c77237ec9af0a',1,'xb::xbFile::GetFileNamePart(xbString &amp;sFileNamePartOut) const'],['../classxb_1_1xbFile.html#a6110763c5ae996b72c7a62c15bdecc73',1,'xb::xbFile::GetFileNamePart(const xbString &amp;sCompleteFileNameIn, xbString &amp;sFileNamePartOut) const']]],
+ ['getfilesize_29',['GetFileSize',['../classxb_1_1xbFile.html#a50b63c39e49d44e52078038027b24cc5',1,'xb::xbFile']]],
+ ['getfiletype_30',['GetFileType',['../classxb_1_1xbFile.html#a5548236d38d43b89ae29b9a015b1f678',1,'xb::xbFile']]],
+ ['getfirstrecord_31',['GetFirstRecord',['../classxb_1_1xbDbf.html#a6fc5b8a3e2f177d5ceaf9d975cbb5226',1,'xb::xbDbf::GetFirstRecord()'],['../classxb_1_1xbDbf.html#acb78991e8435edd36318c653cb977c1a',1,'xb::xbDbf::GetFirstRecord(xbInt16 iOption)']]],
+ ['getfloatfield_32',['GetFloatField',['../classxb_1_1xbDbf.html#a81ef2f36f921d7ece066a592eb6393eb',1,'xb::xbDbf::GetFloatField(const xbString &amp;sFieldName, xbFloat &amp;fFieldValue) const'],['../classxb_1_1xbDbf.html#a3443f646038ced14425f067a59c0f2da',1,'xb::xbDbf::GetFloatField(xbInt16 iFieldNo, xbFloat &amp;fFieldValue) const']]],
+ ['getfqfilename_33',['GetFqFileName',['../classxb_1_1xbFile.html#a31b4e641f93206ba23e2a5a27491dcd4',1,'xb::xbFile']]],
+ ['getfunctioninfo_34',['GetFunctionInfo',['../classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1',1,'xb::xbXBase']]],
+ ['getheaderlen_35',['GetHeaderLen',['../classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb',1,'xb::xbDbf']]],
+ ['gethomedir_36',['GetHomeDir',['../classxb_1_1xbSsv.html#abc9c06c95d71fbad8294e1ae8862cea9',1,'xb::xbSsv']]],
+ ['getlastpos_37',['GetLastPos',['../classxb_1_1xbString.html#ac7698665f44413a5e99a5b5bc573c6df',1,'xb::xbString::GetLastPos(char c) const'],['../classxb_1_1xbString.html#a1c55587904fe7e534290559d0ecb8646',1,'xb::xbString::GetLastPos(const char *s) const']]],
+ ['getlastrecord_38',['GetLastRecord',['../classxb_1_1xbDbf.html#a49e667f9c8ee55c36444702663fc5964',1,'xb::xbDbf::GetLastRecord()'],['../classxb_1_1xbDbf.html#a8ccfa2291417412b6894940d1b92f9a6',1,'xb::xbDbf::GetLastRecord(xbInt16 iOption)']]],
+ ['getlogdirectory_39',['GetLogDirectory',['../classxb_1_1xbSsv.html#a4822315bded3969b59aeeb683c373051',1,'xb::xbSsv::GetLogDirectory()'],['../classxb_1_1xbXBase.html#a51d49b4d699740194b28c6ec0d0ee07b',1,'xb::xbXBase::GetLogDirectory()']]],
+ ['getlogfilename_40',['GetLogFileName',['../classxb_1_1xbSsv.html#afaef09435be73b3111f5edbd7091d861',1,'xb::xbSsv::GetLogFileName()'],['../classxb_1_1xbXBase.html#ac0744edf9e4aa959d8cf2daa874376af',1,'xb::xbXBase::GetLogFileName() const']]],
+ ['getlogfqfilename_41',['GetLogFqFileName',['../classxb_1_1xbXBase.html#ab5d63cd7d9137eba8a1d4d9c3df522b7',1,'xb::xbXBase']]],
+ ['getlogicalfield_42',['GetLogicalField',['../classxb_1_1xbDbf.html#a3254f091fc4a1404abed3dd2bcdd6ce6',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbString &amp;sFieldData) const'],['../classxb_1_1xbDbf.html#a9cd6819bfd932ff8507e54d9cb9a624e',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbString &amp;sFieldData) const'],['../classxb_1_1xbDbf.html#aaf615ddcf08f8cd14efc713c2a8d7ae1',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData) const'],['../classxb_1_1xbDbf.html#ab28feef20c988b0a6f1c1911a45377b0',1,'xb::xbDbf::GetLogicalField(xbInt16 iFieldNo, xbBool &amp;bFieldData, xbInt16 iRecBufSw) const'],['../classxb_1_1xbDbf.html#a943cea7fde1b06c1a05184193eff8d2d',1,'xb::xbDbf::GetLogicalField(const xbString &amp;sFieldName, xbBool &amp;bFieldData) const']]],
+ ['getlogstatus_43',['GetLogStatus',['../classxb_1_1xbXBase.html#ade34cd72c2a7e70fb55429a8a6f6c028',1,'xb::xbXBase']]],
+ ['getlongfield_44',['GetLongField',['../classxb_1_1xbDbf.html#abe525c0820640e0a9e169d0b7913cfa1',1,'xb::xbDbf::GetLongField(xbInt16 iFieldNo, xbInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a7b8ef75b17941beac17e50e969b2d3db',1,'xb::xbDbf::GetLongField(const xbString &amp;sFieldName, xbInt32 &amp;lFieldValue) const']]],
+ ['getmultiuser_45',['GetMultiUser',['../classxb_1_1xbSsv.html#abd58031c5f1c3766c24d47a82e6fd9c5',1,'xb::xbSsv']]],
+ ['getnextrecord_46',['GetNextRecord',['../classxb_1_1xbDbf.html#a18fdcb4ab15b36cd47fa6f6f7a540d1a',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption, xbUInt32 ulStartRec)'],['../classxb_1_1xbDbf.html#a3191428a7a92d9107d8d42448884f2ac',1,'xb::xbDbf::GetNextRecord(xbInt16 iOption)'],['../classxb_1_1xbDbf.html#ab896fe3b734f556de578d30f92b18fe2',1,'xb::xbDbf::GetNextRecord()']]],
+ ['getnextsqlcmd_47',['GetNextSqlCmd',['../xb__execsql_8cpp.html#af888ba5e7e94d92c2165362b87f1ea0e',1,'xb_execsql.cpp']]],
+ ['getopenmode_48',['GetOpenMode',['../classxb_1_1xbFile.html#a3c500dc9dac22c49496e4b29386b2dd3',1,'xb::xbFile']]],
+ ['getopentablecount_49',['GetOpenTableCount',['../classxb_1_1xbTblMgr.html#ad0d2d4adabc0dc0e761cfdee63c84069',1,'xb::xbTblMgr']]],
+ ['getpathseparator_50',['GetPathSeparator',['../classxb_1_1xbString.html#af8b8b808cf43cd352321b43f500142db',1,'xb::xbString']]],
+ ['getprevrecord_51',['GetPrevRecord',['../classxb_1_1xbDbf.html#ab3d248e5221b4f0809897cd43af17a1e',1,'xb::xbDbf::GetPrevRecord()'],['../classxb_1_1xbDbf.html#a7eadc7b08d73003802b90584f7b33387',1,'xb::xbDbf::GetPrevRecord(xbInt16 iOption)']]],
+ ['getrawfield_52',['GetRawField',['../classxb_1_1xbDbf.html#aabd146c0e1054ab905ec96aedd84b02e',1,'xb::xbDbf']]],
+ ['getrecord_53',['GetRecord',['../classxb_1_1xbDbf.html#a26fba086b07caeab95066bf1c8d25161',1,'xb::xbDbf']]],
+ ['getrecordbuf_54',['GetRecordBuf',['../classxb_1_1xbDbf.html#aa3e38c4057d726a28a27d07a1610d124',1,'xb::xbDbf']]],
+ ['getrecordcnt_55',['GetRecordCnt',['../classxb_1_1xbDbf.html#ac196ad55335e1f4789d698748434dc89',1,'xb::xbDbf']]],
+ ['getrecordcount_56',['GetRecordCount',['../classxb_1_1xbDbf.html#a0aaa06d6028e75efc6b5131f7356ecce',1,'xb::xbDbf']]],
+ ['getrecordlen_57',['GetRecordLen',['../classxb_1_1xbDbf.html#ab50d76c6e29e81e347a6feb04c2f62bb',1,'xb::xbDbf']]],
+ ['getsharemode_58',['GetShareMode',['../classxb_1_1xbFile.html#a9b63e05b77f477ff6109ff7b9432c1b6',1,'xb::xbFile']]],
+ ['getsize_59',['GetSize',['../classxb_1_1xbString.html#a6c33e73659f8e98819289d2661c7271c',1,'xb::xbString']]],
+ ['gettblalias_60',['GetTblAlias',['../classxb_1_1xbDbf.html#a27758a325c097f204247908b65ba7fbd',1,'xb::xbDbf']]],
+ ['gettbllistentry_61',['GetTblListEntry',['../classxb_1_1xbTblMgr.html#acbf148ddba4297021cfb980a161ebef9',1,'xb::xbTblMgr']]],
+ ['getulongfield_62',['GetULongField',['../classxb_1_1xbDbf.html#a67e3a050f9090edf69eee75aef7f5d83',1,'xb::xbDbf::GetULongField(xbInt16 iFieldNo, xbUInt32 &amp;lFieldValue) const'],['../classxb_1_1xbDbf.html#a039eb02418ec4ca862adbc0f95b9cbec',1,'xb::xbDbf::GetULongField(const xbString &amp;sFieldName, xbUInt32 &amp;lFieldValue) const']]],
+ ['getversion_63',['GetVersion',['../classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6',1,'xb::xbDbf']]],
+ ['getxbasefiletypebyte_64',['GetXbaseFileTypeByte',['../classxb_1_1xbFile.html#aaf2e697751a0beff41432a66bb83fb5e',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, xbInt16 &amp;iVersion)'],['../classxb_1_1xbFile.html#a7af337808919680b90710ad5e8a99232',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte)'],['../classxb_1_1xbFile.html#a78aebdd21d3de46a450d5f835e3027f6',1,'xb::xbFile::GetXbaseFileTypeByte(const xbString &amp;sFileName, unsigned char &amp;cFileTypeByte, xbInt16 &amp;iVersion)']]],
+ ['getxbaseptr_65',['GetXbasePtr',['../classxb_1_1xbDbf.html#ab21ec23c076b0c9affdc0f6672bd133f',1,'xb::xbDbf']]]
];
diff --git a/docs/doxygen/html/search/functions_b.js b/docs/doxygen/html/search/functions_b.js
index 7595e8a..4debf05 100644
--- a/docs/doxygen/html/search/functions_b.js
+++ b/docs/doxygen/html/search/functions_b.js
@@ -1,6 +1,6 @@
var searchData=
[
- ['main_0',['main',['../xb__dbfutil_8cpp.html#a57e6ea63b6f0a962708db29159629a6d',1,'main(int, char **):&#160;xb_dbfutil.cpp'],['../xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock2.cpp'],['../xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_log.cpp'],['../xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_mdx.cpp'],['../xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_ndx.cpp'],['../xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_sql.cpp'],['../xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f',1,'main(int argCnt, char **av=NULL):&#160;xb_test_string.cpp'],['../xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_tblmgr.cpp'],['../xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_uda.cpp'],['../xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_xbase.cpp'],['../xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_cfg_check.cpp'],['../xb__copydbf_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_copydbf.cpp'],['../xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock.cpp'],['../xb__deletall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumpdbt.cpp'],['../xb__dumphdr_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumphdr.cpp'],['../xb__dumpix_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumpix.cpp'],['../xb__dumprecs_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_dumprecs.cpp'],['../xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_execsql.cpp'],['../xb__pack_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_undelall.cpp'],['../xb__zap_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_zap.cpp'],['../xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_linklist.cpp'],['../xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_date.cpp'],['../xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_ex_sql.cpp'],['../xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_string.cpp'],['../xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_create_dbf.cpp'],['../xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_upd_dbf.cpp'],['../xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_create_dbf.cpp'],['../xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_upd_dbf.cpp'],['../xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_bcd.cpp'],['../xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_date.cpp'],['../xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_memos.cpp'],['../xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_nomemos.cpp'],['../xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_memos.cpp'],['../xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_nomemos.cpp'],['../xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expnode.cpp'],['../xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expression.cpp'],['../xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_file.cpp'],['../xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_filter.cpp'],['../xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_funcs.cpp']]],
+ ['main_0',['main',['../xb__test__xbase_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_xbase.cpp'],['../xb__test__funcs_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_funcs.cpp'],['../xb__test__linklist_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_linklist.cpp'],['../xb__test__lock_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock.cpp'],['../xb__test__lock2_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_lock2.cpp'],['../xb__test__log_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_log.cpp'],['../xb__test__mdx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_mdx.cpp'],['../xb__test__ndx_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_ndx.cpp'],['../xb__test__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_sql.cpp'],['../xb__test__string_8cpp.html#aabf71bc9adb6daf457b2ea8879ae537f',1,'main(int argCnt, char **av=NULL):&#160;xb_test_string.cpp'],['../xb__test__tblmgr_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_tblmgr.cpp'],['../xb__test__uda_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_uda.cpp'],['../xb__test__filter_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_filter.cpp'],['../xb__cfg__check_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_cfg_check.cpp'],['../xb__copydbf_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_copydbf.cpp'],['../xb__dbfutil_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_dbfutil.cpp'],['../xb__deletall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_dumpdbt.cpp'],['../xb__dumprecs_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_dumprecs.cpp'],['../xb__execsql_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_execsql.cpp'],['../xb__pack_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]):&#160;xb_undelall.cpp'],['../xb__test__file_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_file.cpp'],['../xb__ex__date_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_date.cpp'],['../xb__ex__expression_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_expression.cpp'],['../xb__ex__sql_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_ex_sql.cpp'],['../xb__ex__ssv_8cpp.html#a0c99d968a34e803d378692bde2e3f18f',1,'main(int ac, char **av):&#160;xb_ex_ssv.cpp'],['../xb__ex__string_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_string.cpp'],['../xb__ex__v3__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_create_dbf.cpp'],['../xb__ex__v3__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v3_upd_dbf.cpp'],['../xb__ex__v4__create__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_create_dbf.cpp'],['../xb__ex__v4__upd__dbf_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main():&#160;xb_ex_v4_upd_dbf.cpp'],['../xb__test__bcd_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_bcd.cpp'],['../xb__test__blockread_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_blockread.cpp'],['../xb__test__date_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_date.cpp'],['../xb__test__dbf__v3__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_memos.cpp'],['../xb__test__dbf__v3__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v3_nomemos.cpp'],['../xb__test__dbf__v4__memos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_memos.cpp'],['../xb__test__dbf__v4__nomemos_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_dbf_v4_nomemos.cpp'],['../xb__test__expnode_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expnode.cpp'],['../xb__test__expression_8cpp.html#a1470527971db41f828c26074cde7e15a',1,'main(int argCnt, char **av):&#160;xb_test_expression.cpp']]],
['memofieldsexist_1',['MemoFieldsExist',['../classxb_1_1xbDbf.html#a013dc8c51fc1aa988de39cf3da6da950',1,'xb::xbDbf']]],
['mid_2',['Mid',['../classxb_1_1xbString.html#a0f9eefc836b24c4ee7c5a316c5d812b7',1,'xb::xbString']]],
['monthof_3',['MonthOf',['../classxb_1_1xbDate.html#a08bd84c67e1119d8c5c1748cd89d092e',1,'xb::xbDate']]]
diff --git a/docs/doxygen/html/search/functions_e.js b/docs/doxygen/html/search/functions_e.js
index 99045b4..1b907f5 100644
--- a/docs/doxygen/html/search/functions_e.js
+++ b/docs/doxygen/html/search/functions_e.js
@@ -3,14 +3,17 @@ var searchData=
['pack_0',['Pack',['../classxb_1_1xbDbf.html#a93bb14ad0451355bfa3379128120988a',1,'xb::xbDbf::Pack(xbUInt32 &amp;ulDeletedRecCnt)'],['../classxb_1_1xbDbf.html#a8a52bf3ef2123c0d17e6b1f67bf0dc55',1,'xb::xbDbf::Pack()']]],
['padleft_1',['PadLeft',['../classxb_1_1xbString.html#a6a09cfed22066b0c72432f26960f9e7b',1,'xb::xbString']]],
['padright_2',['PadRight',['../classxb_1_1xbString.html#aba13f0c77eb6c4a22996039569fad284',1,'xb::xbString']]],
- ['pos_3',['Pos',['../classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b',1,'xb::xbString::Pos(char c) const'],['../classxb_1_1xbString.html#a8705d7277b72f5aa98021e84438914da',1,'xb::xbString::Pos(const char *s) const']]],
- ['putat_4',['PutAt',['../classxb_1_1xbString.html#a1bae6fa8f608261f6e889616482f6e39',1,'xb::xbString']]],
- ['putdatefield_5',['PutDateField',['../classxb_1_1xbDbf.html#a873f04af528a9d81e6a367a59d998ec5',1,'xb::xbDbf::PutDateField(xbInt16 iFieldNo, const xbDate &amp;dt)'],['../classxb_1_1xbDbf.html#a571b36b3a940b1a16d5e834f329b33b9',1,'xb::xbDbf::PutDateField(const xbString &amp;sFieldName, const xbDate &amp;dt)']]],
- ['putdoublefield_6',['PutDoubleField',['../classxb_1_1xbDbf.html#a4f34842d7e8ff1f16992c2ece2fc38a5',1,'xb::xbDbf::PutDoubleField(xbInt16 FieldNo, xbDouble dFieldValue)'],['../classxb_1_1xbDbf.html#ae695bbc71c19abc71c0c5f2ff2e1f971',1,'xb::xbDbf::PutDoubleField(const xbString &amp;FieldName, xbDouble dFieldValue)']]],
- ['putfield_7',['PutField',['../classxb_1_1xbDbf.html#a142b0c0dc904917f3c68c5572c1237b5',1,'xb::xbDbf::PutField(xbInt16 iFieldNo, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a7862215dd2f83a1c488e539cd1f9aec0',1,'xb::xbDbf::PutField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)']]],
- ['putfloatfield_8',['PutFloatField',['../classxb_1_1xbDbf.html#a64161eb50d72e424b11bf3732657ebd8',1,'xb::xbDbf::PutFloatField(xbInt16 iFieldNo, xbFloat fFieldValue)'],['../classxb_1_1xbDbf.html#a4ea3241bc710d57e5f755efda62288ad',1,'xb::xbDbf::PutFloatField(const xbString &amp;sFieldName, xbFloat fFieldValue)']]],
- ['putlogicalfield_9',['PutLogicalField',['../classxb_1_1xbDbf.html#ab39ac4269ac63bc7ea4f638733bb17f0',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a507e400ca6526a9e0391cf06dd6a014e',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a423a0cb7bd252cedf956ace4954f275d',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, xbBool bFieldData)'],['../classxb_1_1xbDbf.html#a623ca3ef5520c42308c1a16b518e7ff3',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, xbBool bFieldData)']]],
- ['putlongfield_10',['PutLongField',['../classxb_1_1xbDbf.html#a56c8f924284bf88aabf90b7930b4eb47',1,'xb::xbDbf::PutLongField(xbInt16 iFieldNo, xbInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#ae7aad223119edb3d541e9f65e88c9f2f',1,'xb::xbDbf::PutLongField(const xbString &amp;sFieldNo, xbInt32 lFieldValue)']]],
- ['putrecord_11',['PutRecord',['../classxb_1_1xbDbf.html#a3c36a5ffbc7067a1abbcb526dd3b981d',1,'xb::xbDbf::PutRecord()'],['../classxb_1_1xbDbf.html#aacbc7bac3ea0c502ee75b838f4f0fcbf',1,'xb::xbDbf::PutRecord(xbUInt32 ulRecNo)']]],
- ['putulongfield_12',['PutULongField',['../classxb_1_1xbDbf.html#af5dec5c9ff903efffdb0490a44d296d2',1,'xb::xbDbf::PutULongField(xbInt16 iFieldNo, xbUInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#ac62cb97c4e678c83f41788b1ae4d0381',1,'xb::xbDbf::PutULongField(const xbString &amp;sFieldNo, xbUInt32 lFieldValue)']]]
+ ['pos_3',['Pos',['../classxb_1_1xbString.html#a1b586890138da8bf0e23090bd8b34581',1,'xb::xbString::Pos(char c, xbUInt32 ulStartPos) const'],['../classxb_1_1xbString.html#a3baf59d15099589ff631995f129e582b',1,'xb::xbString::Pos(char c) const'],['../classxb_1_1xbString.html#a8705d7277b72f5aa98021e84438914da',1,'xb::xbString::Pos(const char *s) const']]],
+ ['printhelp_4',['PrintHelp',['../xb__copydbf_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_copydbf.cpp'],['../xb__dbfutil_8cpp.html#a9c55a055e1cd4249c7f47e19dc7ac564',1,'PrintHelp():&#160;xb_dbfutil.cpp'],['../xb__deletall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_dumpdbt.cpp'],['../xb__dumprecs_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_dumprecs.cpp'],['../xb__pack_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef',1,'PrintHelp():&#160;xb_undelall.cpp']]],
+ ['printresult_5',['PrintResult',['../xb__ex__expression_8cpp.html#a3234afc912211aec54c10d363d28cbda',1,'xb_ex_expression.cpp']]],
+ ['printversion_6',['PrintVersion',['../xb__copydbf_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_copydbf.cpp'],['../xb__dbfutil_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_dbfutil.cpp'],['../xb__deletall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_deletall.cpp'],['../xb__dumpdbt_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_dumpdbt.cpp'],['../xb__dumprecs_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_dumprecs.cpp'],['../xb__pack_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_pack.cpp'],['../xb__tblinfo_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_tblinfo.cpp'],['../xb__undelall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3',1,'PrintVersion():&#160;xb_undelall.cpp']]],
+ ['putat_7',['PutAt',['../classxb_1_1xbString.html#a1bae6fa8f608261f6e889616482f6e39',1,'xb::xbString']]],
+ ['putdatefield_8',['PutDateField',['../classxb_1_1xbDbf.html#a873f04af528a9d81e6a367a59d998ec5',1,'xb::xbDbf::PutDateField(xbInt16 iFieldNo, const xbDate &amp;dt)'],['../classxb_1_1xbDbf.html#a571b36b3a940b1a16d5e834f329b33b9',1,'xb::xbDbf::PutDateField(const xbString &amp;sFieldName, const xbDate &amp;dt)']]],
+ ['putdoublefield_9',['PutDoubleField',['../classxb_1_1xbDbf.html#a4f34842d7e8ff1f16992c2ece2fc38a5',1,'xb::xbDbf::PutDoubleField(xbInt16 FieldNo, xbDouble dFieldValue)'],['../classxb_1_1xbDbf.html#ae695bbc71c19abc71c0c5f2ff2e1f971',1,'xb::xbDbf::PutDoubleField(const xbString &amp;FieldName, xbDouble dFieldValue)']]],
+ ['putfield_10',['PutField',['../classxb_1_1xbDbf.html#a7862215dd2f83a1c488e539cd1f9aec0',1,'xb::xbDbf::PutField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a142b0c0dc904917f3c68c5572c1237b5',1,'xb::xbDbf::PutField(xbInt16 iFieldNo, const xbString &amp;sFieldData)']]],
+ ['putfloatfield_11',['PutFloatField',['../classxb_1_1xbDbf.html#a64161eb50d72e424b11bf3732657ebd8',1,'xb::xbDbf::PutFloatField(xbInt16 iFieldNo, xbFloat fFieldValue)'],['../classxb_1_1xbDbf.html#a4ea3241bc710d57e5f755efda62288ad',1,'xb::xbDbf::PutFloatField(const xbString &amp;sFieldName, xbFloat fFieldValue)']]],
+ ['putlogicalfield_12',['PutLogicalField',['../classxb_1_1xbDbf.html#ab39ac4269ac63bc7ea4f638733bb17f0',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a507e400ca6526a9e0391cf06dd6a014e',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, const xbString &amp;sFieldData)'],['../classxb_1_1xbDbf.html#a423a0cb7bd252cedf956ace4954f275d',1,'xb::xbDbf::PutLogicalField(xbInt16 iFieldNo, xbBool bFieldData)'],['../classxb_1_1xbDbf.html#a623ca3ef5520c42308c1a16b518e7ff3',1,'xb::xbDbf::PutLogicalField(const xbString &amp;sFieldName, xbBool bFieldData)']]],
+ ['putlongfield_13',['PutLongField',['../classxb_1_1xbDbf.html#a56c8f924284bf88aabf90b7930b4eb47',1,'xb::xbDbf::PutLongField(xbInt16 iFieldNo, xbInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#ae7aad223119edb3d541e9f65e88c9f2f',1,'xb::xbDbf::PutLongField(const xbString &amp;sFieldNo, xbInt32 lFieldValue)']]],
+ ['putrecord_14',['PutRecord',['../classxb_1_1xbDbf.html#a3c36a5ffbc7067a1abbcb526dd3b981d',1,'xb::xbDbf::PutRecord()'],['../classxb_1_1xbDbf.html#aacbc7bac3ea0c502ee75b838f4f0fcbf',1,'xb::xbDbf::PutRecord(xbUInt32 ulRecNo)']]],
+ ['putulongfield_15',['PutULongField',['../classxb_1_1xbDbf.html#af5dec5c9ff903efffdb0490a44d296d2',1,'xb::xbDbf::PutULongField(xbInt16 iFieldNo, xbUInt32 lFieldValue)'],['../classxb_1_1xbDbf.html#ac62cb97c4e678c83f41788b1ae4d0381',1,'xb::xbDbf::PutULongField(const xbString &amp;sFieldNo, xbUInt32 lFieldValue)']]]
];
diff --git a/docs/doxygen/html/search/searchdata.js b/docs/doxygen/html/search/searchdata.js
index cf012e6..0f7e3a8 100644
--- a/docs/doxygen/html/search/searchdata.js
+++ b/docs/doxygen/html/search/searchdata.js
@@ -5,7 +5,7 @@ var indexSectionsWithContent =
2: "x",
3: "tx",
4: "abcdefghijlmnoprstuvwxyz~",
- 5: "ceiprstux",
+ 5: "ceimprstux",
6: "x",
7: "ox",
8: "jlvx"
diff --git a/docs/doxygen/html/search/variables_3.js b/docs/doxygen/html/search/variables_3.js
index d024da4..7708e94 100644
--- a/docs/doxygen/html/search/variables_3.js
+++ b/docs/doxygen/html/search/variables_3.js
@@ -1,7 +1,5 @@
var searchData=
[
- ['pdbf_0',['pDbf',['../structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6',1,'xb::xbTblList']]],
- ['pnext_1',['pNext',['../structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c',1,'xb::xbTblList']]],
- ['pstblalias_2',['psTblAlias',['../structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05',1,'xb::xbTblList']]],
- ['pstblname_3',['psTblName',['../structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f',1,'xb::xbTblList']]]
+ ['mydbfrec_0',['MyDbfRec',['../xb__test__blockread_8cpp.html#af68c3291a63fdf20ffa0e477460d148e',1,'xb_test_blockread.cpp']]],
+ ['myv4record_1',['MyV4Record',['../xb__ex__expression_8cpp.html#a2122b9562802e2fd799b20454000dc99',1,'xb_ex_expression.cpp']]]
];
diff --git a/docs/doxygen/html/search/variables_4.js b/docs/doxygen/html/search/variables_4.js
index 9dde579..946d73a 100644
--- a/docs/doxygen/html/search/variables_4.js
+++ b/docs/doxygen/html/search/variables_4.js
@@ -1,5 +1,8 @@
var searchData=
[
- ['recbuf_0',['RecBuf',['../classxb_1_1xbDbf.html#a8a9b3bce0b741e73473d3ebbd6e6f1cd',1,'xb::xbDbf']]],
- ['recbuf2_1',['RecBuf2',['../classxb_1_1xbDbf.html#a353ebfc8a2960ef827f429ec74025606',1,'xb::xbDbf']]]
+ ['pdbf_0',['pDbf',['../structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6',1,'xb::xbTblList']]],
+ ['pnext_1',['pNext',['../structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c',1,'xb::xbTblList']]],
+ ['psfqtblname_2',['psFqTblName',['../structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d',1,'xb::xbTblList']]],
+ ['pstblalias_3',['psTblAlias',['../structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05',1,'xb::xbTblList']]],
+ ['pstblname_4',['psTblName',['../structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f',1,'xb::xbTblList']]]
];
diff --git a/docs/doxygen/html/search/variables_5.js b/docs/doxygen/html/search/variables_5.js
index f1b6b71..9dde579 100644
--- a/docs/doxygen/html/search/variables_5.js
+++ b/docs/doxygen/html/search/variables_5.js
@@ -1,6 +1,5 @@
var searchData=
[
- ['salias_0',['sAlias',['../classxb_1_1xbDbf.html#a73f9c792d0a769e2e604c1855245a276',1,'xb::xbDbf']]],
- ['schemaptr_1',['SchemaPtr',['../classxb_1_1xbDbf.html#ad8c8b5eb12063bb898da1b2cc02cfce7',1,'xb::xbDbf']]],
- ['snullstring_2',['sNullString',['../classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da',1,'xb::xbSsv']]]
+ ['recbuf_0',['RecBuf',['../classxb_1_1xbDbf.html#a8a9b3bce0b741e73473d3ebbd6e6f1cd',1,'xb::xbDbf']]],
+ ['recbuf2_1',['RecBuf2',['../classxb_1_1xbDbf.html#a353ebfc8a2960ef827f429ec74025606',1,'xb::xbDbf']]]
];
diff --git a/docs/doxygen/html/search/variables_6.js b/docs/doxygen/html/search/variables_6.js
index 2369f5c..f1b6b71 100644
--- a/docs/doxygen/html/search/variables_6.js
+++ b/docs/doxygen/html/search/variables_6.js
@@ -1,4 +1,6 @@
var searchData=
[
- ['timer_0',['timer',['../tstfuncs_8cpp.html#ae2281da6157495d69406c35f69a61f9f',1,'tstfuncs.cpp']]]
+ ['salias_0',['sAlias',['../classxb_1_1xbDbf.html#a73f9c792d0a769e2e604c1855245a276',1,'xb::xbDbf']]],
+ ['schemaptr_1',['SchemaPtr',['../classxb_1_1xbDbf.html#ad8c8b5eb12063bb898da1b2cc02cfce7',1,'xb::xbDbf']]],
+ ['snullstring_2',['sNullString',['../classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da',1,'xb::xbSsv']]]
];
diff --git a/docs/doxygen/html/search/variables_7.js b/docs/doxygen/html/search/variables_7.js
index 5eb7a13..2369f5c 100644
--- a/docs/doxygen/html/search/variables_7.js
+++ b/docs/doxygen/html/search/variables_7.js
@@ -1,7 +1,4 @@
var searchData=
[
- ['uiheaderlen_0',['uiHeaderLen',['../classxb_1_1xbDbf.html#a62f5fa9149ae0f6dc75642823de66918',1,'xb::xbDbf']]],
- ['uirecordlen_1',['uiRecordLen',['../classxb_1_1xbDbf.html#a1760e222567e2c849f9c799b9d896e91',1,'xb::xbDbf']]],
- ['ulcurrec_2',['ulCurRec',['../classxb_1_1xbDbf.html#afcd99924606be0a9e1e25180bcd1abf8',1,'xb::xbDbf']]],
- ['ulnoofrecs_3',['ulNoOfRecs',['../classxb_1_1xbDbf.html#acb594ab61dd35b17bdf28394083f8e87',1,'xb::xbDbf']]]
+ ['timer_0',['timer',['../tstfuncs_8cpp.html#ae2281da6157495d69406c35f69a61f9f',1,'tstfuncs.cpp']]]
];
diff --git a/docs/doxygen/html/search/variables_8.js b/docs/doxygen/html/search/variables_8.js
index 8367676..5eb7a13 100644
--- a/docs/doxygen/html/search/variables_8.js
+++ b/docs/doxygen/html/search/variables_8.js
@@ -1,8 +1,7 @@
var searchData=
[
- ['xbase_0',['xbase',['../classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004',1,'xb::xbFile']]],
- ['xbdbf_1',['xbDbf',['../namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b',1,'xb']]],
- ['xberrormessages_2',['xbErrorMessages',['../namespacexb.html#a04be228a037d220dd5564f5ef618adcc',1,'xb']]],
- ['xblog_3',['xbLog',['../namespacexb.html#a4a31fbe9110c9e55495ce71e642d785c',1,'xb']]],
- ['xbxbase_4',['xbXBase',['../namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0',1,'xb']]]
+ ['uiheaderlen_0',['uiHeaderLen',['../classxb_1_1xbDbf.html#a62f5fa9149ae0f6dc75642823de66918',1,'xb::xbDbf']]],
+ ['uirecordlen_1',['uiRecordLen',['../classxb_1_1xbDbf.html#a1760e222567e2c849f9c799b9d896e91',1,'xb::xbDbf']]],
+ ['ulcurrec_2',['ulCurRec',['../classxb_1_1xbDbf.html#afcd99924606be0a9e1e25180bcd1abf8',1,'xb::xbDbf']]],
+ ['ulnoofrecs_3',['ulNoOfRecs',['../classxb_1_1xbDbf.html#acb594ab61dd35b17bdf28394083f8e87',1,'xb::xbDbf']]]
];
diff --git a/docs/doxygen/html/search/variables_9.html b/docs/doxygen/html/search/variables_9.html
new file mode 100644
index 0000000..1aec773
--- /dev/null
+++ b/docs/doxygen/html/search/variables_9.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/docs/doxygen/html/search/variables_9.js b/docs/doxygen/html/search/variables_9.js
new file mode 100644
index 0000000..8367676
--- /dev/null
+++ b/docs/doxygen/html/search/variables_9.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['xbase_0',['xbase',['../classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004',1,'xb::xbFile']]],
+ ['xbdbf_1',['xbDbf',['../namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b',1,'xb']]],
+ ['xberrormessages_2',['xbErrorMessages',['../namespacexb.html#a04be228a037d220dd5564f5ef618adcc',1,'xb']]],
+ ['xblog_3',['xbLog',['../namespacexb.html#a4a31fbe9110c9e55495ce71e642d785c',1,'xb']]],
+ ['xbxbase_4',['xbXBase',['../namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0',1,'xb']]]
+];
diff --git a/docs/doxygen/html/structxb_1_1xbSchema.html b/docs/doxygen/html/structxb_1_1xbSchema.html
index a1611c3..4d314dd 100644
--- a/docs/doxygen/html/structxb_1_1xbSchema.html
+++ b/docs/doxygen/html/structxb_1_1xbSchema.html
@@ -168,7 +168,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbdbf_8h_source.html">xbdbf.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbdbf_8h_source.html">xbdbf.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/structxb_1_1xbTblList.html b/docs/doxygen/html/structxb_1_1xbTblList.html
index 3842fb2..688538c 100644
--- a/docs/doxygen/html/structxb_1_1xbTblList.html
+++ b/docs/doxygen/html/structxb_1_1xbTblList.html
@@ -79,6 +79,8 @@ $(function() {
Data Fields</h2></td></tr>
<tr class="memitem:a3fd169fcf0fd4df927544e5342db583c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structxb_1_1xbTblList.html">xbTblList</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c">pNext</a></td></tr>
<tr class="separator:a3fd169fcf0fd4df927544e5342db583c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aceec65f6f6b585788cf98e8dabd2737d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d">psFqTblName</a></td></tr>
+<tr class="separator:aceec65f6f6b585788cf98e8dabd2737d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02c3b0c47fd104ef9758b375ecdcfd0f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">psTblName</a></td></tr>
<tr class="separator:a02c3b0c47fd104ef9758b375ecdcfd0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac87742c8a6b1cf2e7e35218e96966a05"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classxb_1_1xbString.html">xbString</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">psTblAlias</a></td></tr>
@@ -115,6 +117,20 @@ Data Fields</h2></td></tr>
</div>
</div>
+<a id="aceec65f6f6b585788cf98e8dabd2737d" name="aceec65f6f6b585788cf98e8dabd2737d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aceec65f6f6b585788cf98e8dabd2737d">&#9670;&nbsp;</a></span>psFqTblName</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classxb_1_1xbString.html">xbString</a>* xb::xbTblList::psFqTblName</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="ac87742c8a6b1cf2e7e35218e96966a05" name="ac87742c8a6b1cf2e7e35218e96966a05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac87742c8a6b1cf2e7e35218e96966a05">&#9670;&nbsp;</a></span>psTblAlias</h2>
@@ -144,7 +160,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
-<li>/mnt/1Tdata/xbase/xbase64-4.0.3/src/include/<a class="el" href="xbtblmgr_8h_source.html">xbtblmgr.h</a></li>
+<li>/mnt/1Tdata/xbase/xbase64-4.1.0/src/include/<a class="el" href="xbtblmgr_8h_source.html">xbtblmgr.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/tstfuncs_8cpp.html b/docs/doxygen/html/tstfuncs_8cpp.html
index f9fb6f6..dbc72bf 100644
--- a/docs/doxygen/html/tstfuncs_8cpp.html
+++ b/docs/doxygen/html/tstfuncs_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/tstfuncs.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/tstfuncs.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__cfg__check_8cpp.html b/docs/doxygen/html/xb__cfg__check_8cpp.html
index d69fc0d..124dfaf 100644
--- a/docs/doxygen/html/xb__cfg__check_8cpp.html
+++ b/docs/doxygen/html/xb__cfg__check_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_cfg_check.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_cfg_check.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__copydbf_8cpp.html b/docs/doxygen/html/xb__copydbf_8cpp.html
index e9e9cac..b79ed7a 100644
--- a/docs/doxygen/html/xb__copydbf_8cpp.html
+++ b/docs/doxygen/html/xb__copydbf_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_copydbf.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_copydbf.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__copydbf_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__copydbf_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__copydbf_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__copydbf_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__dbfutil_8cpp.html b/docs/doxygen/html/xb__dbfutil_8cpp.html
index e1e9c21..3adab86 100644
--- a/docs/doxygen/html/xb__dbfutil_8cpp.html
+++ b/docs/doxygen/html/xb__dbfutil_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_dbfutil.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_dbfutil.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,27 +76,31 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a57e6ea63b6f0a962708db29159629a6d"><td class="memItemLeft" align="right" valign="top">DOXYOFF int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dbfutil_8cpp.html#a57e6ea63b6f0a962708db29159629a6d">main</a> (int, char **)</td></tr>
-<tr class="separator:a57e6ea63b6f0a962708db29159629a6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9c55a055e1cd4249c7f47e19dc7ac564"><td class="memItemLeft" align="right" valign="top">DOXYOFF void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dbfutil_8cpp.html#a9c55a055e1cd4249c7f47e19dc7ac564">PrintHelp</a> ()</td></tr>
+<tr class="separator:a9c55a055e1cd4249c7f47e19dc7ac564"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dbfutil_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dbfutil_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a57e6ea63b6f0a962708db29159629a6d" name="a57e6ea63b6f0a962708db29159629a6d"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a57e6ea63b6f0a962708db29159629a6d">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">DOXYOFF int main </td>
+ <td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname">, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname">&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="a9c55a055e1cd4249c7f47e19dc7ac564" name="a9c55a055e1cd4249c7f47e19dc7ac564"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9c55a055e1cd4249c7f47e19dc7ac564">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">DOXYOFF void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__deletall_8cpp.html b/docs/doxygen/html/xb__deletall_8cpp.html
index 0878f48..d643d2e 100644
--- a/docs/doxygen/html/xb__deletall_8cpp.html
+++ b/docs/doxygen/html/xb__deletall_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_deletall.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_deletall.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__deletall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__deletall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__deletall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__deletall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__dumpdbt_8cpp.html b/docs/doxygen/html/xb__dumpdbt_8cpp.html
index a52b092..d664d5f 100644
--- a/docs/doxygen/html/xb__dumpdbt_8cpp.html
+++ b/docs/doxygen/html/xb__dumpdbt_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_dumpdbt.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_dumpdbt.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumpdbt_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumpdbt_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumpdbt_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumpdbt_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__dumphdr_8cpp.html b/docs/doxygen/html/xb__dumphdr_8cpp.html
index 696a816..39b4a89 100644
--- a/docs/doxygen/html/xb__dumphdr_8cpp.html
+++ b/docs/doxygen/html/xb__dumphdr_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_dumphdr.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.1/src/utils/xb_dumphdr.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__dumpix_8cpp.html b/docs/doxygen/html/xb__dumpix_8cpp.html
index af02d57..7e42d1e 100644
--- a/docs/doxygen/html/xb__dumpix_8cpp.html
+++ b/docs/doxygen/html/xb__dumpix_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_dumpix.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.1/src/utils/xb_dumpix.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__dumprecs_8cpp.html b/docs/doxygen/html/xb__dumprecs_8cpp.html
index 91de180..e68256e 100644
--- a/docs/doxygen/html/xb__dumprecs_8cpp.html
+++ b/docs/doxygen/html/xb__dumprecs_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_dumprecs.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_dumprecs.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumprecs_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumprecs_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumprecs_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__dumprecs_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__ex__date_8cpp.html b/docs/doxygen/html/xb__ex__date_8cpp.html
index 7479bb2..24429e7 100644
--- a/docs/doxygen/html/xb__ex__date_8cpp.html
+++ b/docs/doxygen/html/xb__ex__date_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_date.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_date.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__ex__expression_8cpp.html b/docs/doxygen/html/xb__ex__expression_8cpp.html
new file mode 100644
index 0000000..9ef36af
--- /dev/null
+++ b/docs/doxygen/html/xb__ex__expression_8cpp.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_expression.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e931c1a3f0014e624d0645a271726ad2.html">examples</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle"><div class="title">xb_ex_expression.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;<a class="el" href="xbase_8h_source.html">xbase.h</a>&gt;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a3234afc912211aec54c10d363d28cbda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__expression_8cpp.html#a3234afc912211aec54c10d363d28cbda">PrintResult</a> (<a class="el" href="classxb_1_1xbString.html">xbString</a> *sExpression, xbExp *exp)</td></tr>
+<tr class="separator:a3234afc912211aec54c10d363d28cbda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__expression_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
+<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a2122b9562802e2fd799b20454000dc99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structxb_1_1xbSchema.html">xbSchema</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__expression_8cpp.html#a2122b9562802e2fd799b20454000dc99">MyV4Record</a> []</td></tr>
+<tr class="separator:a2122b9562802e2fd799b20454000dc99"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int main </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3234afc912211aec54c10d363d28cbda" name="a3234afc912211aec54c10d363d28cbda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3234afc912211aec54c10d363d28cbda">&#9670;&nbsp;</a></span>PrintResult()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintResult </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classxb_1_1xbString.html">xbString</a> *&#160;</td>
+ <td class="paramname"><em>sExpression</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">xbExp *&#160;</td>
+ <td class="paramname"><em>exp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="a2122b9562802e2fd799b20454000dc99" name="a2122b9562802e2fd799b20454000dc99"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2122b9562802e2fd799b20454000dc99">&#9670;&nbsp;</a></span>MyV4Record</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structxb_1_1xbSchema.html">xbSchema</a> MyV4Record[]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">= </div>
+<div class="line"> {</div>
+<div class="line"> { <span class="stringliteral">&quot;CFLD1&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a>, 20, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;CFLD2&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a>, 10, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;NFLD1&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6">XB_NUMERIC_FLD</a>, 5, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;DATE1&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#a7f685e6f5fe804b2174725a27ce73adc">XB_DATE_FLD</a>, 8, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;&quot;</span>,0,0,0 }</div>
+<div class="line"> }</div>
+<div class="ttc" id="axbdbf_8h_html_a20f739b9d9dc6a002a246a999e76aeaa"><div class="ttname"><a href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a></div><div class="ttdeci">#define XB_CHAR_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:29</div></div>
+<div class="ttc" id="axbdbf_8h_html_a7f685e6f5fe804b2174725a27ce73adc"><div class="ttname"><a href="xbdbf_8h.html#a7f685e6f5fe804b2174725a27ce73adc">XB_DATE_FLD</a></div><div class="ttdeci">#define XB_DATE_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:32</div></div>
+<div class="ttc" id="axbdbf_8h_html_ae9fb6d69cc5edc94d36ae403c22ec1c6"><div class="ttname"><a href="xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6">XB_NUMERIC_FLD</a></div><div class="ttdeci">#define XB_NUMERIC_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:31</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xb__ex__sql_8cpp.html b/docs/doxygen/html/xb__ex__sql_8cpp.html
index b81c3e9..edb601b 100644
--- a/docs/doxygen/html/xb__ex__sql_8cpp.html
+++ b/docs/doxygen/html/xb__ex__sql_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_sql.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_sql.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__ex__ssv_8cpp.html b/docs/doxygen/html/xb__ex__ssv_8cpp.html
new file mode 100644
index 0000000..dcf2628
--- /dev/null
+++ b/docs/doxygen/html/xb__ex__ssv_8cpp.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_ssv.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e931c1a3f0014e624d0645a271726ad2.html">examples</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">xb_ex_ssv.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__ex__ssv_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
+<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int main </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ac</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&#160;</td>
+ <td class="paramname"><em>av</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xb__ex__string_8cpp.html b/docs/doxygen/html/xb__ex__string_8cpp.html
index 2b3a639..9daa57a 100644
--- a/docs/doxygen/html/xb__ex__string_8cpp.html
+++ b/docs/doxygen/html/xb__ex__string_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_string.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_string.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__ex__v3__create__dbf_8cpp.html b/docs/doxygen/html/xb__ex__v3__create__dbf_8cpp.html
index bbdaec8..a32c39b 100644
--- a/docs/doxygen/html/xb__ex__v3__create__dbf_8cpp.html
+++ b/docs/doxygen/html/xb__ex__v3__create__dbf_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_v3_create_dbf.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_v3_create_dbf.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__ex__v3__upd__dbf_8cpp.html b/docs/doxygen/html/xb__ex__v3__upd__dbf_8cpp.html
index 189151c..b16f9cc 100644
--- a/docs/doxygen/html/xb__ex__v3__upd__dbf_8cpp.html
+++ b/docs/doxygen/html/xb__ex__v3__upd__dbf_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_v3_upd_dbf.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_v3_upd_dbf.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__ex__v4__create__dbf_8cpp.html b/docs/doxygen/html/xb__ex__v4__create__dbf_8cpp.html
index 473e312..243b739 100644
--- a/docs/doxygen/html/xb__ex__v4__create__dbf_8cpp.html
+++ b/docs/doxygen/html/xb__ex__v4__create__dbf_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_v4_create_dbf.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_v4_create_dbf.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__ex__v4__upd__dbf_8cpp.html b/docs/doxygen/html/xb__ex__v4__upd__dbf_8cpp.html
index 326dbd4..ff4ca67 100644
--- a/docs/doxygen/html/xb__ex__v4__upd__dbf_8cpp.html
+++ b/docs/doxygen/html/xb__ex__v4__upd__dbf_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/examples/xb_ex_v4_upd_dbf.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/examples/xb_ex_v4_upd_dbf.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__execsql_8cpp.html b/docs/doxygen/html/xb__execsql_8cpp.html
index 1c7e737..b00df44 100644
--- a/docs/doxygen/html/xb__execsql_8cpp.html
+++ b/docs/doxygen/html/xb__execsql_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_execsql.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_execsql.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__pack_8cpp.html b/docs/doxygen/html/xb__pack_8cpp.html
index 3a2e728..e007f38 100644
--- a/docs/doxygen/html/xb__pack_8cpp.html
+++ b/docs/doxygen/html/xb__pack_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_pack.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_pack.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__pack_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__pack_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__pack_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__pack_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__tblinfo_8cpp.html b/docs/doxygen/html/xb__tblinfo_8cpp.html
index b464098..e01295b 100644
--- a/docs/doxygen/html/xb__tblinfo_8cpp.html
+++ b/docs/doxygen/html/xb__tblinfo_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_tblinfo.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_tblinfo.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__tblinfo_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__tblinfo_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__tblinfo_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__tblinfo_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__test__bcd_8cpp.html b/docs/doxygen/html/xb__test__bcd_8cpp.html
index 05a6e51..0de8fc2 100644
--- a/docs/doxygen/html/xb__test__bcd_8cpp.html
+++ b/docs/doxygen/html/xb__test__bcd_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_bcd.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_bcd.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__blockread_8cpp.html b/docs/doxygen/html/xb__test__blockread_8cpp.html
new file mode 100644
index 0000000..195746e
--- /dev/null
+++ b/docs/doxygen/html/xb__test__blockread_8cpp.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_blockread.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_d93a1d4020dea85bb71b237545b5e722.html">tests</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle"><div class="title">xb_test_blockread.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="tstfuncs_8cpp.html">tstfuncs.cpp</a>&quot;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a1470527971db41f828c26074cde7e15a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__blockread_8cpp.html#a1470527971db41f828c26074cde7e15a">main</a> (int argCnt, char **av)</td></tr>
+<tr class="separator:a1470527971db41f828c26074cde7e15a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:af68c3291a63fdf20ffa0e477460d148e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structxb_1_1xbSchema.html">xbSchema</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__blockread_8cpp.html#af68c3291a63fdf20ffa0e477460d148e">MyDbfRec</a> []</td></tr>
+<tr class="separator:af68c3291a63fdf20ffa0e477460d148e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a1470527971db41f828c26074cde7e15a" name="a1470527971db41f828c26074cde7e15a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1470527971db41f828c26074cde7e15a">&#9670;&nbsp;</a></span>main()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int main </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>argCnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&#160;</td>
+ <td class="paramname"><em>av</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="af68c3291a63fdf20ffa0e477460d148e" name="af68c3291a63fdf20ffa0e477460d148e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af68c3291a63fdf20ffa0e477460d148e">&#9670;&nbsp;</a></span>MyDbfRec</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structxb_1_1xbSchema.html">xbSchema</a> MyDbfRec[]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">= </div>
+<div class="line"> {</div>
+<div class="line"> { <span class="stringliteral">&quot;NFLD&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6">XB_NUMERIC_FLD</a>, 10, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;CFLD&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a>, 89, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;&quot;</span>,0,0,0 }</div>
+<div class="line"> }</div>
+<div class="ttc" id="axbdbf_8h_html_a20f739b9d9dc6a002a246a999e76aeaa"><div class="ttname"><a href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a></div><div class="ttdeci">#define XB_CHAR_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:29</div></div>
+<div class="ttc" id="axbdbf_8h_html_ae9fb6d69cc5edc94d36ae403c22ec1c6"><div class="ttname"><a href="xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6">XB_NUMERIC_FLD</a></div><div class="ttdeci">#define XB_NUMERIC_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:31</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xb__test__blockread__save_8cpp.html b/docs/doxygen/html/xb__test__blockread__save_8cpp.html
new file mode 100644
index 0000000..40885f8
--- /dev/null
+++ b/docs/doxygen/html/xb__test__blockread__save_8cpp.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.1/src/tests/xb_test_blockread_save.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_d93a1d4020dea85bb71b237545b5e722.html">tests</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle"><div class="title">xb_test_blockread_save.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="tstfuncs_8cpp.html">tstfuncs.cpp</a>&quot;</code><br />
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a1470527971db41f828c26074cde7e15a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__blockread__save_8cpp.html#a1470527971db41f828c26074cde7e15a">main</a> (int argCnt, char **av)</td></tr>
+<tr class="separator:a1470527971db41f828c26074cde7e15a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:af68c3291a63fdf20ffa0e477460d148e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structxb_1_1xbSchema.html">xbSchema</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__test__blockread__save_8cpp.html#af68c3291a63fdf20ffa0e477460d148e">MyDbfRec</a> []</td></tr>
+<tr class="separator:af68c3291a63fdf20ffa0e477460d148e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="a1470527971db41f828c26074cde7e15a" name="a1470527971db41f828c26074cde7e15a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1470527971db41f828c26074cde7e15a">&#9670;&nbsp;</a></span>main()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int main </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>argCnt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char **&#160;</td>
+ <td class="paramname"><em>av</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="af68c3291a63fdf20ffa0e477460d148e" name="af68c3291a63fdf20ffa0e477460d148e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af68c3291a63fdf20ffa0e477460d148e">&#9670;&nbsp;</a></span>MyDbfRec</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="structxb_1_1xbSchema.html">xbSchema</a> MyDbfRec[]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">= </div>
+<div class="line"> {</div>
+<div class="line"> { <span class="stringliteral">&quot;NFLD&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6">XB_NUMERIC_FLD</a>, 10, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;CFLD&quot;</span>, <a class="code hl_define" href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a>, 300, 0 },</div>
+<div class="line"> { <span class="stringliteral">&quot;&quot;</span>,0,0,0 }</div>
+<div class="line"> }</div>
+<div class="ttc" id="axbdbf_8h_html_a20f739b9d9dc6a002a246a999e76aeaa"><div class="ttname"><a href="xbdbf_8h.html#a20f739b9d9dc6a002a246a999e76aeaa">XB_CHAR_FLD</a></div><div class="ttdeci">#define XB_CHAR_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:29</div></div>
+<div class="ttc" id="axbdbf_8h_html_ae9fb6d69cc5edc94d36ae403c22ec1c6"><div class="ttname"><a href="xbdbf_8h.html#ae9fb6d69cc5edc94d36ae403c22ec1c6">XB_NUMERIC_FLD</a></div><div class="ttdeci">#define XB_NUMERIC_FLD</div><div class="ttdef"><b>Definition:</b> xbdbf.h:31</div></div>
+</div><!-- fragment -->
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xb__test__date_8cpp.html b/docs/doxygen/html/xb__test__date_8cpp.html
index 31c0209..a6b3d97 100644
--- a/docs/doxygen/html/xb__test__date_8cpp.html
+++ b/docs/doxygen/html/xb__test__date_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_date.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_date.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__dbf__v3__memos_8cpp.html b/docs/doxygen/html/xb__test__dbf__v3__memos_8cpp.html
index 008e7ab..60eced6 100644
--- a/docs/doxygen/html/xb__test__dbf__v3__memos_8cpp.html
+++ b/docs/doxygen/html/xb__test__dbf__v3__memos_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_dbf_v3_memos.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_dbf_v3_memos.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__dbf__v3__nomemos_8cpp.html b/docs/doxygen/html/xb__test__dbf__v3__nomemos_8cpp.html
index 7ef53c3..59c23e1 100644
--- a/docs/doxygen/html/xb__test__dbf__v3__nomemos_8cpp.html
+++ b/docs/doxygen/html/xb__test__dbf__v3__nomemos_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_dbf_v3_nomemos.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_dbf_v3_nomemos.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__dbf__v4__memos_8cpp.html b/docs/doxygen/html/xb__test__dbf__v4__memos_8cpp.html
index e4fd262..86e0b35 100644
--- a/docs/doxygen/html/xb__test__dbf__v4__memos_8cpp.html
+++ b/docs/doxygen/html/xb__test__dbf__v4__memos_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_dbf_v4_memos.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_dbf_v4_memos.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__dbf__v4__nomemos_8cpp.html b/docs/doxygen/html/xb__test__dbf__v4__nomemos_8cpp.html
index dfc126b..e9b853a 100644
--- a/docs/doxygen/html/xb__test__dbf__v4__nomemos_8cpp.html
+++ b/docs/doxygen/html/xb__test__dbf__v4__nomemos_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_dbf_v4_nomemos.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_dbf_v4_nomemos.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__expnode_8cpp.html b/docs/doxygen/html/xb__test__expnode_8cpp.html
index ac3be1d..630ecdb 100644
--- a/docs/doxygen/html/xb__test__expnode_8cpp.html
+++ b/docs/doxygen/html/xb__test__expnode_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_expnode.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_expnode.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__expression_8cpp.html b/docs/doxygen/html/xb__test__expression_8cpp.html
index 8d33a91..6be59f2 100644
--- a/docs/doxygen/html/xb__test__expression_8cpp.html
+++ b/docs/doxygen/html/xb__test__expression_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_expression.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_expression.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__file_8cpp.html b/docs/doxygen/html/xb__test__file_8cpp.html
index 46db655..6a9b6b0 100644
--- a/docs/doxygen/html/xb__test__file_8cpp.html
+++ b/docs/doxygen/html/xb__test__file_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_file.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_file.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__filter_8cpp.html b/docs/doxygen/html/xb__test__filter_8cpp.html
index bafc24d..7176b10 100644
--- a/docs/doxygen/html/xb__test__filter_8cpp.html
+++ b/docs/doxygen/html/xb__test__filter_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_filter.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_filter.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__funcs_8cpp.html b/docs/doxygen/html/xb__test__funcs_8cpp.html
index 639d97e..fc28aec 100644
--- a/docs/doxygen/html/xb__test__funcs_8cpp.html
+++ b/docs/doxygen/html/xb__test__funcs_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_funcs.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_funcs.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__linklist_8cpp.html b/docs/doxygen/html/xb__test__linklist_8cpp.html
index 51d1df3..2d6be8e 100644
--- a/docs/doxygen/html/xb__test__linklist_8cpp.html
+++ b/docs/doxygen/html/xb__test__linklist_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_linklist.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_linklist.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__lock2_8cpp.html b/docs/doxygen/html/xb__test__lock2_8cpp.html
index ae965a9..54f9e90 100644
--- a/docs/doxygen/html/xb__test__lock2_8cpp.html
+++ b/docs/doxygen/html/xb__test__lock2_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_lock2.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_lock2.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__lock_8cpp.html b/docs/doxygen/html/xb__test__lock_8cpp.html
index 6d369bf..5d83846 100644
--- a/docs/doxygen/html/xb__test__lock_8cpp.html
+++ b/docs/doxygen/html/xb__test__lock_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_lock.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_lock.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__log_8cpp.html b/docs/doxygen/html/xb__test__log_8cpp.html
index 033fe18..b3115b6 100644
--- a/docs/doxygen/html/xb__test__log_8cpp.html
+++ b/docs/doxygen/html/xb__test__log_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_log.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_log.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__mdx_8cpp.html b/docs/doxygen/html/xb__test__mdx_8cpp.html
index c9176e4..1fb7381 100644
--- a/docs/doxygen/html/xb__test__mdx_8cpp.html
+++ b/docs/doxygen/html/xb__test__mdx_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_mdx.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_mdx.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__ndx_8cpp.html b/docs/doxygen/html/xb__test__ndx_8cpp.html
index eb9732d..78bcd99 100644
--- a/docs/doxygen/html/xb__test__ndx_8cpp.html
+++ b/docs/doxygen/html/xb__test__ndx_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_ndx.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_ndx.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__sql_8cpp.html b/docs/doxygen/html/xb__test__sql_8cpp.html
index 3305469..759da86 100644
--- a/docs/doxygen/html/xb__test__sql_8cpp.html
+++ b/docs/doxygen/html/xb__test__sql_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_sql.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_sql.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__string_8cpp.html b/docs/doxygen/html/xb__test__string_8cpp.html
index 6774b85..2a28164 100644
--- a/docs/doxygen/html/xb__test__string_8cpp.html
+++ b/docs/doxygen/html/xb__test__string_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_string.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_string.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__tblmgr_8cpp.html b/docs/doxygen/html/xb__test__tblmgr_8cpp.html
index 597f66c..df12fec 100644
--- a/docs/doxygen/html/xb__test__tblmgr_8cpp.html
+++ b/docs/doxygen/html/xb__test__tblmgr_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_tblmgr.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_tblmgr.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__uda_8cpp.html b/docs/doxygen/html/xb__test__uda_8cpp.html
index a46aeb2..bc917d6 100644
--- a/docs/doxygen/html/xb__test__uda_8cpp.html
+++ b/docs/doxygen/html/xb__test__uda_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_uda.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_uda.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__test__xbase_8cpp.html b/docs/doxygen/html/xb__test__xbase_8cpp.html
index 71b36f5..ac33034 100644
--- a/docs/doxygen/html/xb__test__xbase_8cpp.html
+++ b/docs/doxygen/html/xb__test__xbase_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/tests/xb_test_xbase.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/tests/xb_test_xbase.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xb__undelall_8cpp.html b/docs/doxygen/html/xb__undelall_8cpp.html
index 8ac455f..04da1a6 100644
--- a/docs/doxygen/html/xb__undelall_8cpp.html
+++ b/docs/doxygen/html/xb__undelall_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_undelall.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/utils/xb_undelall.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -76,12 +76,16 @@ $(function() {
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
-<tr class="memitem:a0c99d968a34e803d378692bde2e3f18f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__undelall_8cpp.html#a0c99d968a34e803d378692bde2e3f18f">main</a> (int ac, char **av)</td></tr>
-<tr class="separator:a0c99d968a34e803d378692bde2e3f18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__undelall_8cpp.html#ae964ff8411b4fdcaf65cb5529aea4bef">PrintHelp</a> ()</td></tr>
+<tr class="separator:ae964ff8411b4fdcaf65cb5529aea4bef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1fae5968f70747445d63f63065fb7ef3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__undelall_8cpp.html#a1fae5968f70747445d63f63065fb7ef3">PrintVersion</a> ()</td></tr>
+<tr class="separator:a1fae5968f70747445d63f63065fb7ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ddf1224851353fc92bfbff6f499fa97"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xb__undelall_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
+<tr class="separator:a0ddf1224851353fc92bfbff6f499fa97"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
-<a id="a0c99d968a34e803d378692bde2e3f18f" name="a0c99d968a34e803d378692bde2e3f18f"></a>
-<h2 class="memtitle"><span class="permalink"><a href="#a0c99d968a34e803d378692bde2e3f18f">&#9670;&nbsp;</a></span>main()</h2>
+<a id="a0ddf1224851353fc92bfbff6f499fa97" name="a0ddf1224851353fc92bfbff6f499fa97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ddf1224851353fc92bfbff6f499fa97">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
@@ -90,13 +94,13 @@ Functions</h2></td></tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
- <td class="paramname"><em>ac</em>, </td>
+ <td class="paramname"><em>argc</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
- <td class="paramtype">char **&#160;</td>
- <td class="paramname"><em>av</em>&#160;</td>
+ <td class="paramtype">char *&#160;</td>
+ <td class="paramname"><em>argv</em>[]&#160;</td>
</tr>
<tr>
<td></td>
@@ -108,6 +112,40 @@ Functions</h2></td></tr>
</div>
</div>
+<a id="ae964ff8411b4fdcaf65cb5529aea4bef" name="ae964ff8411b4fdcaf65cb5529aea4bef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae964ff8411b4fdcaf65cb5529aea4bef">&#9670;&nbsp;</a></span>PrintHelp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintHelp </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a1fae5968f70747445d63f63065fb7ef3" name="a1fae5968f70747445d63f63065fb7ef3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1fae5968f70747445d63f63065fb7ef3">&#9670;&nbsp;</a></span>PrintVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void PrintVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xb__zap_8cpp.html b/docs/doxygen/html/xb__zap_8cpp.html
index 7f84f88..793d67e 100644
--- a/docs/doxygen/html/xb__zap_8cpp.html
+++ b/docs/doxygen/html/xb__zap_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/utils/xb_zap.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.1/src/utils/xb_zap.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbalttbl_8cpp.html b/docs/doxygen/html/xbalttbl_8cpp.html
index cd474a9..6fdf925 100644
--- a/docs/doxygen/html/xbalttbl_8cpp.html
+++ b/docs/doxygen/html/xbalttbl_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbalttbl.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbalttbl.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbase_8h.html b/docs/doxygen/html/xbase_8h.html
index dc746f9..e91ad08 100644
--- a/docs/doxygen/html/xbase_8h.html
+++ b/docs/doxygen/html/xbase_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbase.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbase.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -94,6 +94,7 @@ $(function() {
<code>#include &lt;<a class="el" href="xbexpnode_8h_source.html">xbexpnode.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="xbexp_8h_source.html">xbexp.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="xbtag_8h_source.html">xbtag.h</a>&gt;</code><br />
+<code>#include &lt;<a class="el" href="xbblkread_8h_source.html">xbblkread.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="xbdbf_8h_source.html">xbdbf.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="xbindex_8h_source.html">xbindex.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="xbfilter_8h_source.html">xbfilter.h</a>&gt;</code><br />
diff --git a/docs/doxygen/html/xbase_8h_source.html b/docs/doxygen/html/xbase_8h_source.html
index f79396f..fe74fac 100644
--- a/docs/doxygen/html/xbase_8h_source.html
+++ b/docs/doxygen/html/xbase_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbase.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbase.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -75,7 +75,7 @@ $(function() {
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"></span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">Xbase64 Software Library</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"></span> </div>
-<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">Copyright (c) 1997,2003,2014,2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"></span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"></span> </div>
@@ -113,59 +113,65 @@ $(function() {
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#include &lt;ctype.h&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
-<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#ifdef HAVE_STDARG_H</span></div>
-<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#ifdef HAVE_PWD_H</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#include &lt;pwd.h&gt;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
-<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#ifdef HAVE_STAT_H</span></div>
-<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#ifdef HAVE_STDARG_H</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
-<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#ifdef HAVE_FCNTL_H</span></div>
-<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor">#include &lt;fcntl.h&gt;</span></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#ifdef HAVE_STAT_H</span></div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
-<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div>
-<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor">#ifdef HAVE_FCNTL_H</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor">#include &lt;fcntl.h&gt;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
-<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#ifdef HAVE_VARARGS_H</span></div>
-<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor">#ifndef HAVE_STDARG_H</span></div>
-<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#include &lt;varargs.h&gt;</span></div>
-<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
-<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#ifdef HAVE_WINDOWS_H</span></div>
-<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#include &lt;windows.h&gt;</span></div>
-<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#include &lt;io.h&gt;</span></div>
-<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
-<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
-<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
-<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#include &lt;<a class="code" href="xbretcod_8h.html">xbretcod.h</a>&gt;</span></div>
-<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="preprocessor">#include &lt;<a class="code" href="xbtypes_8h.html">xbtypes.h</a>&gt;</span></div>
-<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#include &lt;<a class="code" href="xbstring_8h.html">xbstring.h</a>&gt;</span></div>
-<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor">#include &lt;<a class="code" href="xbssv_8h.html">xbssv.h</a>&gt;</span></div>
-<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor">#include &lt;<a class="code" href="xbdate_8h.html">xbdate.h</a>&gt;</span></div>
-<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="preprocessor">#include &lt;<a class="code" href="xbtblmgr_8h.html">xbtblmgr.h</a>&gt;</span></div>
-<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor">#include &lt;<a class="code" href="xbxbase_8h.html">xbxbase.h</a>&gt;</span></div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor">#include &lt;<a class="code" href="xblnknod_8h.html">xblnknod.h</a>&gt;</span></div>
-<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="preprocessor">#include &lt;<a class="code" href="xblnklst_8h.html">xblnklst.h</a>&gt;</span></div>
-<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="preprocessor">#include &lt;<a class="code" href="xblnklstord_8h.html">xblnklstord.h</a>&gt;</span></div>
-<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor">#include &lt;<a class="code" href="xbfile_8h.html">xbfile.h</a>&gt;</span></div>
-<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#include &lt;<a class="code" href="xblog_8h.html">xblog.h</a>&gt;</span></div>
-<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="preprocessor">#include &lt;<a class="code" href="xbmemo_8h.html">xbmemo.h</a>&gt;</span></div>
-<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="preprocessor">#include &lt;<a class="code" href="xbbcd_8h.html">xbbcd.h</a>&gt;</span></div>
-<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="preprocessor">#include &lt;<a class="code" href="xbuda_8h.html">xbuda.h</a>&gt;</span></div>
-<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#include &lt;<a class="code" href="xbexpnode_8h.html">xbexpnode.h</a>&gt;</span></div>
-<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor">#include &lt;<a class="code" href="xbexp_8h.html">xbexp.h</a>&gt;</span></div>
-<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
-<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#include &lt;<a class="code" href="xbtag_8h.html">xbtag.h</a>&gt;</span></div>
-<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor">#include &lt;<a class="code" href="xbdbf_8h.html">xbdbf.h</a>&gt;</span> <span class="comment">/* dbf base class */</span></div>
-<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#include &lt;<a class="code" href="xbindex_8h.html">xbindex.h</a>&gt;</span> <span class="comment">/* index base class */</span></div>
-<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor">#include &lt;<a class="code" href="xbfilter_8h.html">xbfilter.h</a>&gt;</span></div>
-<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor">#include &lt;<a class="code" href="xbsql_8h.html">xbsql.h</a>&gt;</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#ifdef HAVE_VARARGS_H</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#ifndef HAVE_STDARG_H</span></div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#include &lt;varargs.h&gt;</span></div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#ifdef HAVE_WINDOWS_H</span></div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="preprocessor">#include &lt;windows.h&gt;</span></div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="preprocessor">#include &lt;io.h&gt;</span></div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor">#include &lt;<a class="code" href="xbretcod_8h.html">xbretcod.h</a>&gt;</span></div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="preprocessor">#include &lt;<a class="code" href="xbtypes_8h.html">xbtypes.h</a>&gt;</span></div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor">#include &lt;<a class="code" href="xbstring_8h.html">xbstring.h</a>&gt;</span></div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="preprocessor">#include &lt;<a class="code" href="xbssv_8h.html">xbssv.h</a>&gt;</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="preprocessor">#include &lt;<a class="code" href="xbdate_8h.html">xbdate.h</a>&gt;</span></div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="preprocessor">#include &lt;<a class="code" href="xbtblmgr_8h.html">xbtblmgr.h</a>&gt;</span></div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="preprocessor">#include &lt;<a class="code" href="xbxbase_8h.html">xbxbase.h</a>&gt;</span></div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="preprocessor">#include &lt;<a class="code" href="xblnknod_8h.html">xblnknod.h</a>&gt;</span></div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span><span class="preprocessor">#include &lt;<a class="code" href="xblnklst_8h.html">xblnklst.h</a>&gt;</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span><span class="preprocessor">#include &lt;<a class="code" href="xblnklstord_8h.html">xblnklstord.h</a>&gt;</span></div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="preprocessor">#include &lt;<a class="code" href="xbfile_8h.html">xbfile.h</a>&gt;</span></div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span><span class="preprocessor">#include &lt;<a class="code" href="xblog_8h.html">xblog.h</a>&gt;</span></div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor">#include &lt;<a class="code" href="xbmemo_8h.html">xbmemo.h</a>&gt;</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor">#include &lt;<a class="code" href="xbbcd_8h.html">xbbcd.h</a>&gt;</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="preprocessor">#include &lt;<a class="code" href="xbuda_8h.html">xbuda.h</a>&gt;</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor">#include &lt;<a class="code" href="xbexpnode_8h.html">xbexpnode.h</a>&gt;</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#include &lt;<a class="code" href="xbexp_8h.html">xbexp.h</a>&gt;</span></div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor">#include &lt;<a class="code" href="xbtag_8h.html">xbtag.h</a>&gt;</span></div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#include &lt;<a class="code" href="xbblkread_8h.html">xbblkread.h</a>&gt;</span></div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor">#include &lt;<a class="code" href="xbdbf_8h.html">xbdbf.h</a>&gt;</span> <span class="comment">/* dbf base class */</span></div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="preprocessor">#include &lt;<a class="code" href="xbindex_8h.html">xbindex.h</a>&gt;</span> <span class="comment">/* index base class */</span></div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="preprocessor">#include &lt;<a class="code" href="xbfilter_8h.html">xbfilter.h</a>&gt;</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="preprocessor">#include &lt;<a class="code" href="xbsql_8h.html">xbsql.h</a>&gt;</span></div>
<div class="ttc" id="axbbcd_8h_html"><div class="ttname"><a href="xbbcd_8h.html">xbbcd.h</a></div></div>
+<div class="ttc" id="axbblkread_8h_html"><div class="ttname"><a href="xbblkread_8h.html">xbblkread.h</a></div></div>
<div class="ttc" id="axbdate_8h_html"><div class="ttname"><a href="xbdate_8h.html">xbdate.h</a></div></div>
<div class="ttc" id="axbdbf_8h_html"><div class="ttname"><a href="xbdbf_8h.html">xbdbf.h</a></div></div>
<div class="ttc" id="axbexp_8h_html"><div class="ttname"><a href="xbexp_8h.html">xbexp.h</a></div></div>
diff --git a/docs/doxygen/html/xbbcd_8cpp.html b/docs/doxygen/html/xbbcd_8cpp.html
index 54c4b5f..26f5cf0 100644
--- a/docs/doxygen/html/xbbcd_8cpp.html
+++ b/docs/doxygen/html/xbbcd_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbbcd.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbbcd.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbbcd_8h.html b/docs/doxygen/html/xbbcd_8h.html
index 656c563..c8ad04d 100644
--- a/docs/doxygen/html/xbbcd_8h.html
+++ b/docs/doxygen/html/xbbcd_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbbcd.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbbcd.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbbcd_8h_source.html b/docs/doxygen/html/xbbcd_8h_source.html
index d442eb4..a76c0ce 100644
--- a/docs/doxygen/html/xbbcd_8h_source.html
+++ b/docs/doxygen/html/xbbcd_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbbcd.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbbcd.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbblkread_8h.html b/docs/doxygen/html/xbblkread_8h.html
new file mode 100644
index 0000000..f79f691
--- /dev/null
+++ b/docs/doxygen/html/xbblkread_8h.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbblkread.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#namespaces">Namespaces</a> </div>
+ <div class="headertitle"><div class="title">xbblkread.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="xbblkread_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:namespacexb"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacexb.html">xb</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xbblkread_8h_source.html b/docs/doxygen/html/xbblkread_8h_source.html
new file mode 100644
index 0000000..6da459b
--- /dev/null
+++ b/docs/doxygen/html/xbblkread_8h_source.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbblkread.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_b0856f6b0d80ccb263b2f415c91f9e17.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">xbblkread.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="xbblkread_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/* xbblkread.h</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">XBase64 Software Library</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"></span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">Email Contact:</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"></span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> XDB-devel@lists.sourceforge.net</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> XDB-users@lists.sourceforge.net</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"></span> </div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">*/</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#ifndef __XB_BLKREAD_H__</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#define __XB_BLKREAD_H__</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacexb.html">xb</a>{</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">class </span>XBDLLEXPORT xbBlockRead {</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> xbBlockRead( <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> * d );</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> ~xbBlockRead();</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor"> #ifdef XB_DEBUG_SUPPORT</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> DumpReadBlockInternals();</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> xbInt16 Init( xbUInt32 ulBlkSize = 0 );</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> xbUInt32 GetBlockFirstRecNo() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> xbUInt32 GetBlockRecCnt() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> xbUInt32 GetBlockSize() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> xbInt16 GetRecord( xbUInt32 ulRecNo ); <span class="comment">// retrieve a data record from a block to RecBuf</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xbInt16 SetBlockSize( xbUInt32 ulBlkSize );</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> xbInt16 GetBlockForRecNo( xbUInt32 ulRecNo ); <span class="comment">// retrieve block from disk for a given record number</span></div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">char</span> *pBlock; <span class="comment">// block pointer</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> xbUInt32 ulBlkSize; <span class="comment">// block size in bytes</span></div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> xbUInt32 ulFirstBlkRec; <span class="comment">// first recod number in the block</span></div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> xbUInt32 ulRecCnt; <span class="comment">// number of records in block</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> xbUInt32 ulMaxRecs; <span class="comment">// max number of records block can handle</span></div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bEof; <span class="comment">// EOF flag</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> *dbf; <span class="comment">// reference to associated dbf file</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment">// xbXBase *xbase; // reference to main xbXBase structure</span></div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> time_t tFmTime; <span class="comment">// file modify time at time of block read</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>};</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#endif </span><span class="comment">// XB_BLOCKREAD</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span>} <span class="comment">/* namespace */</span></div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_BLOCKREAD_H__ */</span><span class="preprocessor"></span></div>
+<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
+<div class="ttc" id="anamespacexb_html_ab1a750481dd487f0d384aa1d200dff0f"><div class="ttname"><a href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xb::xbBool</a></div><div class="ttdeci">short int xbBool</div><div class="ttdef"><b>Definition:</b> xbtypes.h:24</div></div>
+<div class="ttc" id="anamespacexb_html_ab2eae4b4732466698a7fdd89d77ba53b"><div class="ttname"><a href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xb::xbDbf</a></div><div class="ttdeci">class XBDLLEXPORT xbDbf</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:28</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xbblockread_8cpp.html b/docs/doxygen/html/xbblockread_8cpp.html
new file mode 100644
index 0000000..e75a40c
--- /dev/null
+++ b/docs/doxygen/html/xbblockread_8cpp.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbblockread.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.html">core</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">xbblockread.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xbcrix_8cpp.html b/docs/doxygen/html/xbcrix_8cpp.html
index 9da453c..a7fc095 100644
--- a/docs/doxygen/html/xbcrix_8cpp.html
+++ b/docs/doxygen/html/xbcrix_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbcrix.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbcrix.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbcrtbl_8cpp.html b/docs/doxygen/html/xbcrtbl_8cpp.html
index 830c956..816b297 100644
--- a/docs/doxygen/html/xbcrtbl_8cpp.html
+++ b/docs/doxygen/html/xbcrtbl_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbcrtbl.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbcrtbl.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbcrtbl_8save_8cpp.html b/docs/doxygen/html/xbcrtbl_8save_8cpp.html
new file mode 100644
index 0000000..fce08f6
--- /dev/null
+++ b/docs/doxygen/html/xbcrtbl_8save_8cpp.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbcrtbl.save.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_25b94c3afce00ed38231227d8141f932.html">sql</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">xbcrtbl.save.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xbdate_8cpp.html b/docs/doxygen/html/xbdate_8cpp.html
index 933fca7..7db59c4 100644
--- a/docs/doxygen/html/xbdate_8cpp.html
+++ b/docs/doxygen/html/xbdate_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbdate.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbdate.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdate_8h.html b/docs/doxygen/html/xbdate_8h.html
index 0787c5e..d910af4 100644
--- a/docs/doxygen/html/xbdate_8h.html
+++ b/docs/doxygen/html/xbdate_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbdate.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbdate.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdate_8h_source.html b/docs/doxygen/html/xbdate_8h_source.html
index 087d5ed..fbebea0 100644
--- a/docs/doxygen/html/xbdate_8h_source.html
+++ b/docs/doxygen/html/xbdate_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbdate.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbdate.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -139,35 +139,34 @@ $(function() {
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> DateIsValid ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDate8 ) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> xbInt16 DayOf( xbInt16 iFormat ) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> xbInt16 CTOD( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCtodInDate );</div>
-<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="comment">// xbInt16 FormatDate( const char *sFmtIn, xbString &amp;sFmtOut );</span></div>
-<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> xbInt16 FormatDate( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFmtIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFmtOut );</div>
-<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Str() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> IsLeapYear( xbInt16 iYear ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> IsLeapYear() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> xbInt32 JulianDays() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> xbInt16 JulToDate8( xbInt32 lJulDate );</div>
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> xbInt16 LastDayOfMonth();</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> xbInt16 MonthOf() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> xbInt16 Set( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Date8 );</div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> xbInt16 Sysdate();</div>
-<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> xbInt16 YearOf() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
-<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#ifdef XB_DEBUG_SUPPORT</span></div>
-<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> Dump( <span class="keyword">const</span> <span class="keywordtype">char</span> * title );</div>
-<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">void</span> DumpDateTables();</div>
-<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
-<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">void</span> SetDateTables();</div>
-<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDate8; <span class="comment">/* CCYYMMDD date format ie; 20140718 */</span></div>
-<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
-<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">static</span> <span class="keywordtype">int</span> iAggregatedDaysInMonths[2][13];</div>
-<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">static</span> <span class="keywordtype">int</span> iDaysInMonths[2][13];</div>
-<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>};</div>
-<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
-<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span>} <span class="comment">/* namespace */</span></div>
-<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor">#endif </span><span class="comment">/*__XB_XBDATE_H__ */</span><span class="preprocessor"></span></div>
-<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> xbInt16 FormatDate( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFmtIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFmtOut );</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Str() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> IsLeapYear( xbInt16 iYear ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> IsLeapYear() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> xbInt32 JulianDays() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> xbInt16 JulToDate8( xbInt32 lJulDate );</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> xbInt16 LastDayOfMonth();</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> xbInt16 MonthOf() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> xbInt16 Set( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Date8 );</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> xbInt16 Sysdate();</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> xbInt16 YearOf() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor">#ifdef XB_DEBUG_SUPPORT</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">void</span> Dump( <span class="keyword">const</span> <span class="keywordtype">char</span> * title );</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> DumpDateTables();</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">void</span> SetDateTables();</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDate8; <span class="comment">/* CCYYMMDD date format ie; 20140718 */</span></div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">static</span> <span class="keywordtype">int</span> iAggregatedDaysInMonths[2][13];</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keyword">static</span> <span class="keywordtype">int</span> iDaysInMonths[2][13];</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>};</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span>} <span class="comment">/* namespace */</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#endif </span><span class="comment">/*__XB_XBDATE_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="ttc" id="aclassxb_1_1xbDate_html"><div class="ttname"><a href="classxb_1_1xbDate.html">xb::xbDate</a></div><div class="ttdoc">xbDate class.</div><div class="ttdef"><b>Definition:</b> xbdate.h:62</div></div>
<div class="ttc" id="aclassxb_1_1xbSsv_html"><div class="ttname"><a href="classxb_1_1xbSsv.html">xb::xbSsv</a></div><div class="ttdoc">Class for handling shared system variables.</div><div class="ttdef"><b>Definition:</b> xbssv.h:59</div></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
diff --git a/docs/doxygen/html/xbdbf3_8cpp.html b/docs/doxygen/html/xbdbf3_8cpp.html
index 406aa1f..84171c6 100644
--- a/docs/doxygen/html/xbdbf3_8cpp.html
+++ b/docs/doxygen/html/xbdbf3_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbdbf3.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbdbf3.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdbf4_8cpp.html b/docs/doxygen/html/xbdbf4_8cpp.html
index 8e11ded..7bf435f 100644
--- a/docs/doxygen/html/xbdbf4_8cpp.html
+++ b/docs/doxygen/html/xbdbf4_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbdbf4.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbdbf4.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdbf_8cpp.html b/docs/doxygen/html/xbdbf_8cpp.html
index 23135a7..918936e 100644
--- a/docs/doxygen/html/xbdbf_8cpp.html
+++ b/docs/doxygen/html/xbdbf_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbdbf.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbdbf.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdbf_8h.html b/docs/doxygen/html/xbdbf_8h.html
index b509172..39b2a14 100644
--- a/docs/doxygen/html/xbdbf_8h.html
+++ b/docs/doxygen/html/xbdbf_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbdbf.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbdbf.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdbf_8h_source.html b/docs/doxygen/html/xbdbf_8h_source.html
index 0a8b612..c871653 100644
--- a/docs/doxygen/html/xbdbf_8h_source.html
+++ b/docs/doxygen/html/xbdbf_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbdbf.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbdbf.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -74,7 +74,7 @@ $(function() {
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">XBase64 Software Library</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
-<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"></span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
@@ -198,373 +198,389 @@ $(function() {
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">virtual</span> xbInt16 DumpRecord ( xbUInt32 ulRecNo, xbInt16 iOutputDest = 0, xbInt16 iOutputFmt = 0 );</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keyword">virtual</span> xbInt16 GetAutoCommit () <span class="keyword">const</span>;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">virtual</span> xbInt16 GetAutoCommit ( xbInt16 iOption ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">virtual</span> xbUInt32 GetCurRecNo () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">virtual</span> xbInt16 GetDbfStatus () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keyword">virtual</span> xbInt32 GetFieldCnt () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">virtual</span> xbInt16 GetFirstRecord ();</div>
-<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keyword">virtual</span> xbInt16 GetFirstRecord ( xbInt16 iOption );</div>
-<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">virtual</span> xbInt16 GetLastRecord ();</div>
-<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keyword">virtual</span> xbInt16 GetLastRecord ( xbInt16 iOption );</div>
-<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
-<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">virtual</span> xbInt16 GetNextRecord ();</div>
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">virtual</span> xbInt16 GetNextRecord ( xbInt16 iOption );</div>
-<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keyword">virtual</span> xbInt16 GetNextRecord ( xbInt16 iOption, xbUInt32 ulStartRec );</div>
-<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">virtual</span> xbInt16 GetPrevRecord ();</div>
-<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">virtual</span> xbInt16 GetPrevRecord ( xbInt16 iOption );</div>
-<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">virtual</span> xbInt16 GetRecord ( xbUInt32 ulRecNo );</div>
-<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
-<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">virtual</span> xbUInt32 GetRecordCount ();</div>
-<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">virtual</span> xbInt16 GetRecordCnt ( xbUInt32 &amp; ulRecCnt );</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetBof ();</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">virtual</span> xbUInt32 GetCurRecNo () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keyword">virtual</span> xbInt16 GetDbfStatus () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetEof ();</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keyword">virtual</span> xbInt32 GetFieldCnt () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keyword">virtual</span> xbInt16 GetFirstRecord ();</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="keyword">virtual</span> xbInt16 GetFirstRecord ( xbInt16 iOption );</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb"> 178</a></span> <span class="keyword">virtual</span> xbUInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb">GetHeaderLen</a> () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">virtual</span> xbInt16 GetLastRecord ();</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">virtual</span> xbInt16 GetLastRecord ( xbInt16 iOption );</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> <span class="keyword">virtual</span> xbInt16 GetNextRecord ();</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="keyword">virtual</span> xbInt16 GetNextRecord ( xbInt16 iOption );</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <span class="keyword">virtual</span> xbInt16 GetNextRecord ( xbInt16 iOption, xbUInt32 ulStartRec );</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="keyword">virtual</span> xbInt16 GetPrevRecord ();</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keyword">virtual</span> xbInt16 GetPrevRecord ( xbInt16 iOption );</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> <span class="keyword">virtual</span> xbInt16 GetRecord ( xbUInt32 ulRecNo );</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
-<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">virtual</span> <span class="keywordtype">char</span> * GetRecordBuf ( xbInt16 iOpt = 0 ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keyword">virtual</span> xbUInt16 GetRecordLen () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;GetTblAlias() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6"> 192</a></span> <span class="keyword">virtual</span> xbInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6">GetVersion</a> () <span class="keyword">const</span> = 0; </div>
-<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> *GetXbasePtr () <span class="keyword">const</span>; <span class="comment">// return xbase pointer</span></div>
-<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
-<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> </div>
-<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> MemoFieldsExist () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">virtual</span> xbUInt32 GetRecordCount ();</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keyword">virtual</span> xbInt16 GetRecordCnt ( xbUInt32 &amp; ulRecCnt );</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="keyword">virtual</span> <span class="keywordtype">char</span> * GetRecordBuf ( xbInt16 iOpt = 0 ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <span class="keyword">virtual</span> xbUInt16 GetRecordLen () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;GetTblAlias() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6"> 195</a></span> <span class="keyword">virtual</span> xbInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6">GetVersion</a> () <span class="keyword">const</span> = 0; </div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> *GetXbasePtr () <span class="keyword">const</span>; <span class="comment">// return xbase pointer</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
-<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName );</div>
-<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias );</div>
-<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a4d018cbf44d8d8b2145c9acab02c8adf"> 200</a></span> <span class="keyword">virtual</span> xbInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#a4d018cbf44d8d8b2145c9acab02c8adf">Open</a> ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode ) = 0;</div>
-<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keyword">virtual</span> xbInt16 Pack ();</div>
-<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">virtual</span> xbInt16 Pack ( xbUInt32 &amp;ulDeletedRecCnt );</div>
-<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
-<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
-<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">virtual</span> xbInt16 PutRecord (); <span class="comment">// Put record to current location</span></div>
-<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keyword">virtual</span> xbInt16 PutRecord ( xbUInt32 ulRecNo );</div>
-<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">virtual</span> xbInt16 ReadHeader ( xbInt16 iFilePositionOption, xbInt16 iReadOption );</div>
-<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">virtual</span> xbInt16 RecordDeleted ( xbInt16 iOpt = 0 ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#aeeeb2eb5fabcd0f91d457df07b0e0708"> 209</a></span> <span class="keyword">virtual</span> xbInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#aeeeb2eb5fabcd0f91d457df07b0e0708">Rename</a> ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sNewName ) = 0;</div>
-<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> </div>
-<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">virtual</span> xbInt16 SetAutoCommit ( xbInt16 iAutoCommit );</div>
-<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
-<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keyword">virtual</span> xbInt16 UndeleteAllRecords();</div>
-<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">virtual</span> xbInt16 UndeleteRecord ();</div>
-<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keyword">virtual</span> xbInt16 Zap ();</div>
-<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> </div>
-<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
-<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="comment">/* field methods */</span></div>
-<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="comment">//virtual xbInt16 GetRawField( xbInt16 iFieldNo, char *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) const;</span></div>
-<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">virtual</span> xbInt16 GetField(xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldValue, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">virtual</span> xbInt16 GetField(xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldValue) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="keyword">virtual</span> xbInt16 GetField(<span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldValue) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keyword">virtual</span> xbInt16 GetFieldDecimal( xbInt16 iFieldNo, xbInt16 &amp;iFieldDecimal ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">virtual</span> xbInt16 GetFieldDecimal( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt16 &amp;iFieldDecimal ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">virtual</span> xbInt16 GetFieldLen( xbInt16 iFieldNo, xbInt16 &amp;iFieldLen ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">virtual</span> xbInt16 GetFieldLen( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt16 &amp;iFieldLen ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">virtual</span> xbInt16 GetFieldName( xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
-<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">virtual</span> xbInt16 GetFieldNo( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt16 &amp;iFieldNo ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">virtual</span> xbInt16 GetFieldNo( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> MemoFieldsExist () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName );</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias );</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a4d018cbf44d8d8b2145c9acab02c8adf"> 203</a></span> <span class="keyword">virtual</span> xbInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#a4d018cbf44d8d8b2145c9acab02c8adf">Open</a> ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode ) = 0;</div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">virtual</span> xbInt16 Pack ();</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">virtual</span> xbInt16 Pack ( xbUInt32 &amp;ulDeletedRecCnt );</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> </div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> <span class="keyword">virtual</span> xbInt16 PutRecord (); <span class="comment">// Put record to current location</span></div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">virtual</span> xbInt16 PutRecord ( xbUInt32 ulRecNo );</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">virtual</span> xbInt16 ReadHeader ( xbInt16 iFilePositionOption, xbInt16 iReadOption );</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">virtual</span> xbInt16 RecordDeleted ( xbInt16 iOpt = 0 ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#aeeeb2eb5fabcd0f91d457df07b0e0708"> 212</a></span> <span class="keyword">virtual</span> xbInt16 <a class="code hl_function" href="classxb_1_1xbDbf.html#aeeeb2eb5fabcd0f91d457df07b0e0708">Rename</a> ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sNewName ) = 0;</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> </div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">virtual</span> xbInt16 SetAutoCommit ( xbInt16 iAutoCommit );</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keyword">virtual</span> xbInt16 UndeleteAllRecords();</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">virtual</span> xbInt16 UndeleteRecord ();</div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keyword">virtual</span> xbInt16 Zap ();</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> </div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="comment">/* field methods */</span></div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="comment">//virtual xbInt16 GetRawField( xbInt16 iFieldNo, char *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) const;</span></div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> <span class="keyword">virtual</span> xbInt16 GetField(xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldValue, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keyword">virtual</span> xbInt16 GetField(xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldValue) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">virtual</span> xbInt16 GetField(<span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldValue) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> <span class="keyword">virtual</span> xbInt16 GetFieldDecimal( xbInt16 iFieldNo, xbInt16 &amp;iFieldDecimal ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="keyword">virtual</span> xbInt16 GetFieldDecimal( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt16 &amp;iFieldDecimal ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">virtual</span> xbInt16 GetFieldLen( xbInt16 iFieldNo, xbInt16 &amp;iFieldLen ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> <span class="keyword">virtual</span> xbInt16 GetFieldLen( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt16 &amp;iFieldLen ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="keyword">virtual</span> xbInt16 GetFieldName( xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName ) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
-<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keyword">virtual</span> xbInt16 GetFieldType( xbInt16 iFieldNo, <span class="keywordtype">char</span> &amp;cFieldType ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keyword">virtual</span> xbInt16 GetFieldType( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keywordtype">char</span> &amp;cFieldType ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keyword">virtual</span> xbInt16 PutField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
-<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">virtual</span> xbInt16 PutField( xbInt16 iFieldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
-<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
-<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( xbInt16 iFieldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
-<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
-<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> </div>
-<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bFieldData );</div>
-<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bFieldData );</div>
-<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bFieldData ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bFieldData, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bFieldData) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
-<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keyword">virtual</span> xbInt16 GetLongField( xbInt16 iFieldNo, xbInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keyword">virtual</span> xbInt16 GetLongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> <span class="keyword">virtual</span> xbInt16 PutLongField( xbInt16 iFieldNo, xbInt32 lFieldValue );</div>
-<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">virtual</span> xbInt16 PutLongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldNo, xbInt32 lFieldValue );</div>
-<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
-<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keyword">virtual</span> xbInt16 GetULongField( xbInt16 iFieldNo, xbUInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">virtual</span> xbInt16 GetULongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbUInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keyword">virtual</span> xbInt16 PutULongField( xbInt16 iFieldNo, xbUInt32 lFieldValue );</div>
-<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">virtual</span> xbInt16 PutULongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldNo, xbUInt32 lFieldValue );</div>
-<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
-<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keyword">virtual</span> xbInt16 GetDoubleField( xbInt16 FieldNo, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keyword">virtual</span> xbInt16 GetDoubleField( xbInt16 FieldNo, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dFieldValue, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keyword">virtual</span> xbInt16 GetDoubleField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keyword">virtual</span> xbInt16 PutDoubleField( xbInt16 FieldNo, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dFieldValue );</div>
-<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keyword">virtual</span> xbInt16 PutDoubleField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;FieldName, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dFieldValue );</div>
-<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> </div>
-<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keyword">virtual</span> xbInt16 GetFloatField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> &amp;fFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keyword">virtual</span> xbInt16 GetFloatField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> &amp;fFieldValue ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keyword">virtual</span> xbInt16 PutFloatField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> fFieldValue );</div>
-<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">virtual</span> xbInt16 PutFloatField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> fFieldValue );</div>
-<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> </div>
-<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">virtual</span> xbInt16 GetDateField( xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keyword">virtual</span> xbInt16 GetDateField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keyword">virtual</span> xbInt16 PutDateField( xbInt16 iFieldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt );</div>
-<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">virtual</span> xbInt16 PutDateField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt );</div>
-<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
-<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
-<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
-<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
-<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keyword">virtual</span> xbInt16 GetMemoFieldCnt () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> <span class="keyword">virtual</span> xbMemo *GetMemoPtr ();</div>
-<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <span class="keyword">virtual</span> xbUInt32 GetCreateMemoBlockSize() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keyword">virtual</span> xbInt16 GetMemoField ( xbInt16 iFldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
-<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">virtual</span> xbInt16 GetMemoField ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sFldName, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
-<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keyword">virtual</span> xbInt16 GetMemoFieldLen ( xbInt16 iFldNo, xbUInt32 &amp;ullMemoFieldLen );</div>
-<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">virtual</span> xbInt16 GetMemoFieldLen ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sFldName, xbUInt32 &amp;ulMemoFieldLen );</div>
-<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> MemoFieldExists ( xbInt16 iFieldNo ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> MemoFieldExists ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keyword">virtual</span> xbInt16 SetCreateMemoBlockSize( xbUInt32 ulBlockSize ) = 0;</div>
-<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">virtual</span> xbInt16 UpdateMemoField ( xbInt16 iFldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
-<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">virtual</span> xbInt16 UpdateMemoField ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sFldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
-<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span><span class="preprocessor"> #endif </span><span class="comment">// XB_MEMO_SUPPORT</span></div>
-<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> </div>
-<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> </div>
-<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="keyword">virtual</span> xbInt16 LockTable ( xbInt16 iLockFunction );</div>
-<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keyword">virtual</span> xbInt16 LockRecord ( xbInt16 iLockFunction, xbUInt32 ulRecNo );</div>
-<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keyword">virtual</span> xbInt16 LockAppend ( xbInt16 iLockFunction );</div>
-<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keyword">virtual</span> xbInt16 LockHeader ( xbInt16 iLockFunction );</div>
-<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
-<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
-<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keyword">virtual</span> xbInt16 LockMemo ( xbInt16 iLockFunction );</div>
-<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetMemoLocked () <span class="keyword">const</span>; </div>
-<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="preprocessor"> #endif </span><span class="comment">// XB_MEMO_LOCK</span></div>
-<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> </div>
-<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> <span class="keyword">virtual</span> xbInt16 LockIndices ( xbInt16 iLockFunction );</div>
-<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> </div>
-<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> xbInt16 GetAutoLock () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <span class="keywordtype">void</span> SetAutoLock ( xbInt16 iAutoLock );</div>
-<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> xbInt16 GetLockFlavor () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">void</span> SetLockFlavor ( xbInt16 iLockFlavor );</div>
-<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetTableLocked () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetHeaderLocked () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> xbUInt32 GetAppendLocked () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> xbLinkListNode&lt;xbUInt32&gt; * GetFirstRecLock () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
-<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span><span class="preprocessor"> #ifdef XB_DEBUG_SUPPORT</span></div>
-<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keywordtype">void</span> DumpTableLockStatus() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span><span class="preprocessor"> #endif </span><span class="comment">// XB_DEBUG_SUPPORT</span></div>
-<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="preprocessor"> #endif </span><span class="comment">// XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
-<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> </div>
-<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> <span class="keyword">virtual</span> xbInt16 CheckTagIntegrity( xbInt16 iTagOpt, xbInt16 iOutputOpt );</div>
-<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <span class="keyword">virtual</span> xbInt16 CloseIndexFile( xbIx *pIx );</div>
-<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keyword">virtual</span> xbInt16 CreateTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sKey, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFilter, </div>
-<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> xbInt16 iDescending, xbInt16 iUnique, xbInt16 iOverLay, xbIx **xbIxOut, <span class="keywordtype">void</span> **vpTagOut );</div>
-<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keyword">virtual</span> xbInt16 DeleteTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sName );</div>
-<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keyword">virtual</span> xbInt16 DeleteAllIndexFiles();</div>
-<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="keyword">virtual</span> xbInt16 Find( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sKey );</div>
-<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keyword">virtual</span> xbInt16 Find( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dtKey );</div>
-<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keyword">virtual</span> xbInt16 Find( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dKey );</div>
-<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keyword">virtual</span> xbIx *GetCurIx() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> *GetCurTag() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
-<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="keyword">virtual</span> xbInt16 GetFirstKey();</div>
-<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keyword">virtual</span> xbInt16 GetNextKey();</div>
-<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <span class="keyword">virtual</span> xbInt16 GetPrevKey();</div>
-<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">virtual</span> xbInt16 GetLastKey();</div>
-<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
-<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;GetCurIxType() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;GetCurTagName() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">virtual</span> xbIxList *GetIxList() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">virtual</span> xbInt32 GetPhysicalIxCnt () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> xbLinkListNode&lt;xbTag *&gt; *GetTagList () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
-<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keyword">virtual</span> xbInt16 OpenIndex( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIndexName );</div>
-<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> <span class="keyword">virtual</span> xbInt16 Reindex( xbInt16 iTagOpt );</div>
-<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="keyword">virtual</span> xbInt16 SetCurTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTagName );</div>
-<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetCurTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, xbIx *pIx, <span class="keywordtype">void</span> *vpTag );</div>
-<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> </div>
-<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> </div>
-<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <span class="keyword">virtual</span> xbInt16 AssociateIndex( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sName, xbInt16 iOption );</div>
-<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> xbLinkListNode&lt;xbString&gt; *GetInfList() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
-<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <span class="comment">//#ifdef XB_MDX_SUPPORT</span></div>
-<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="comment">//virtual xbInt16 GetCreateMdxBlockSize() const;</span></div>
-<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="comment">//virtual xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );</span></div>
-<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="comment">//#endif</span></div>
-<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> </div>
-<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> </div>
-<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> </div>
-<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keyword">friend</span> <span class="keyword">class </span>xbIx;</div>
-<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keyword">friend</span> <span class="keyword">class </span>xbIxMdx;</div>
-<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> </div>
-<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> xbInt16 AddIndex( xbIx *ix, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFmt );</div>
-<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> <span class="keywordtype">void</span> ClearTagList();</div>
-<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> xbInt16 RemoveIndex( xbIx * ix );</div>
-<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> <span class="keywordtype">void</span> UpdateSchemaIxFlag( xbInt16 iFldNo, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cVal );</div>
-<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keyword">virtual</span> xbInt16 UpdateTagList ();</div>
-<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keyword">virtual</span> xbInt16 GetFieldNo( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt16 &amp;iFieldNo ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keyword">virtual</span> xbInt16 GetFieldNo( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> </div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <span class="keyword">virtual</span> xbInt16 GetFieldType( xbInt16 iFieldNo, <span class="keywordtype">char</span> &amp;cFieldType ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keyword">virtual</span> xbInt16 GetFieldType( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keywordtype">char</span> &amp;cFieldType ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> <span class="keyword">virtual</span> xbInt16 PutField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="keyword">virtual</span> xbInt16 PutField( xbInt16 iFieldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( xbInt16 iFieldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData );</div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldData) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> </div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bFieldData );</div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="keyword">virtual</span> xbInt16 PutLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bFieldData );</div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bFieldData ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bFieldData, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> <span class="keyword">virtual</span> xbInt16 GetLogicalField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bFieldData) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keyword">virtual</span> xbInt16 GetLongField( xbInt16 iFieldNo, xbInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keyword">virtual</span> xbInt16 GetLongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> <span class="keyword">virtual</span> xbInt16 PutLongField( xbInt16 iFieldNo, xbInt32 lFieldValue );</div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keyword">virtual</span> xbInt16 PutLongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldNo, xbInt32 lFieldValue );</div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="keyword">virtual</span> xbInt16 GetULongField( xbInt16 iFieldNo, xbUInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <span class="keyword">virtual</span> xbInt16 GetULongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, xbUInt32 &amp;lFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="keyword">virtual</span> xbInt16 PutULongField( xbInt16 iFieldNo, xbUInt32 lFieldValue );</div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <span class="keyword">virtual</span> xbInt16 PutULongField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldNo, xbUInt32 lFieldValue );</div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> </div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <span class="keyword">virtual</span> xbInt16 GetDoubleField( xbInt16 FieldNo, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="keyword">virtual</span> xbInt16 GetDoubleField( xbInt16 FieldNo, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dFieldValue, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> <span class="keyword">virtual</span> xbInt16 GetDoubleField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="keyword">virtual</span> xbInt16 PutDoubleField( xbInt16 FieldNo, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dFieldValue );</div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="keyword">virtual</span> xbInt16 PutDoubleField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;FieldName, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dFieldValue );</div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> </div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">virtual</span> xbInt16 GetFloatField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> &amp;fFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keyword">virtual</span> xbInt16 GetFloatField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> &amp;fFieldValue ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">virtual</span> xbInt16 PutFloatField( xbInt16 iFieldNo, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> fFieldValue );</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="keyword">virtual</span> xbInt16 PutFloatField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_typedef" href="namespacexb.html#a83aa6a550398db55973aa9fb4257e66e">xbFloat</a> fFieldValue );</div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> <span class="keyword">virtual</span> xbInt16 GetDateField( xbInt16 iFieldNo, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <span class="keyword">virtual</span> xbInt16 GetDateField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">virtual</span> xbInt16 PutDateField( xbInt16 iFieldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt );</div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">virtual</span> xbInt16 PutDateField( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dt );</div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> </div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <span class="keyword">virtual</span> xbInt16 GetMemoFieldCnt () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">virtual</span> xbMemo *GetMemoPtr ();</div>
+<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keyword">virtual</span> xbUInt32 GetCreateMemoBlockSize() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <span class="keyword">virtual</span> xbInt16 GetMemoField ( xbInt16 iFldNo, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
+<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">virtual</span> xbInt16 GetMemoField ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sFldName, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
+<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <span class="keyword">virtual</span> xbInt16 GetMemoFieldLen ( xbInt16 iFldNo, xbUInt32 &amp;ullMemoFieldLen );</div>
+<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <span class="keyword">virtual</span> xbInt16 GetMemoFieldLen ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sFldName, xbUInt32 &amp;ulMemoFieldLen );</div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> MemoFieldExists ( xbInt16 iFieldNo ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> MemoFieldExists ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFieldName ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <span class="keyword">virtual</span> xbInt16 SetCreateMemoBlockSize( xbUInt32 ulBlockSize ) = 0;</div>
+<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keyword">virtual</span> xbInt16 UpdateMemoField ( xbInt16 iFldNo, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
+<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <span class="keyword">virtual</span> xbInt16 UpdateMemoField ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sFldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMemoData );</div>
+<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span><span class="preprocessor"> #endif </span><span class="comment">// XB_MEMO_SUPPORT</span></div>
+<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> </div>
+<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keyword">virtual</span> xbInt16 LockTable ( xbInt16 iLockFunction );</div>
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="keyword">virtual</span> xbInt16 LockRecord ( xbInt16 iLockFunction, xbUInt32 ulRecNo );</div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <span class="keyword">virtual</span> xbInt16 LockAppend ( xbInt16 iLockFunction );</div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> <span class="keyword">virtual</span> xbInt16 LockHeader ( xbInt16 iLockFunction );</div>
+<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> </div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
+<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <span class="keyword">virtual</span> xbInt16 LockMemo ( xbInt16 iLockFunction );</div>
+<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keyword">virtual</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetMemoLocked () <span class="keyword">const</span>; </div>
+<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span><span class="preprocessor"> #endif </span><span class="comment">// XB_MEMO_LOCK</span></div>
+<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> </div>
+<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <span class="keyword">virtual</span> xbInt16 LockIndices ( xbInt16 iLockFunction );</div>
+<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> </div>
+<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> xbInt16 GetAutoLock () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <span class="keywordtype">void</span> SetAutoLock ( xbInt16 iAutoLock );</div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> xbInt16 GetLockFlavor () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> <span class="keywordtype">void</span> SetLockFlavor ( xbInt16 iLockFlavor );</div>
+<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetTableLocked () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetHeaderLocked () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> xbUInt32 GetAppendLocked () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> xbLinkListNode&lt;xbUInt32&gt; * GetFirstRecLock () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> </div>
+<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span><span class="preprocessor"> #ifdef XB_DEBUG_SUPPORT</span></div>
+<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="keywordtype">void</span> DumpTableLockStatus() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span><span class="preprocessor"> #endif </span><span class="comment">// XB_DEBUG_SUPPORT</span></div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span><span class="preprocessor"> #endif </span><span class="comment">// XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> </div>
+<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> </div>
+<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <span class="keyword">virtual</span> xbInt16 CheckTagIntegrity( xbInt16 iTagOpt, xbInt16 iOutputOpt );</div>
+<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keyword">virtual</span> xbInt16 CloseIndexFile( xbIx *pIx );</div>
+<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <span class="keyword">virtual</span> xbInt16 CreateTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sKey, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFilter, </div>
+<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> xbInt16 iDescending, xbInt16 iUnique, xbInt16 iOverLay, xbIx **xbIxOut, <span class="keywordtype">void</span> **vpTagOut );</div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keyword">virtual</span> xbInt16 DeleteTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sName );</div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="keyword">virtual</span> xbInt16 DeleteAllIndexFiles();</div>
+<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keyword">virtual</span> xbInt16 Find( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sKey );</div>
+<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keyword">virtual</span> xbInt16 Find( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dtKey );</div>
+<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> <span class="keyword">virtual</span> xbInt16 Find( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dKey );</div>
+<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <span class="keyword">virtual</span> xbIx *GetCurIx() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> *GetCurTag() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> <span class="keyword">virtual</span> xbInt16 GetFirstKey();</div>
+<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="keyword">virtual</span> xbInt16 GetNextKey();</div>
+<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">virtual</span> xbInt16 GetPrevKey();</div>
+<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="keyword">virtual</span> xbInt16 GetLastKey();</div>
+<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
+<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;GetCurIxType() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;GetCurTagName() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="keyword">virtual</span> xbIxList *GetIxList() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> <span class="keyword">virtual</span> xbInt32 GetPhysicalIxCnt () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> xbLinkListNode&lt;xbTag *&gt; *GetTagList () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> </div>
+<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <span class="keyword">virtual</span> xbInt16 OpenIndex( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIndexName );</div>
+<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> <span class="keyword">virtual</span> xbInt16 Reindex( xbInt16 iTagOpt );</div>
+<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="keyword">virtual</span> xbInt16 SetCurTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTagName );</div>
+<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetCurTag( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIxType, xbIx *pIx, <span class="keywordtype">void</span> *vpTag );</div>
+<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> </div>
+<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> </div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> <span class="keyword">virtual</span> xbInt16 AssociateIndex( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sType, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sName, xbInt16 iOption );</div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> xbLinkListNode&lt;xbString&gt; *GetInfList() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="comment">//#ifdef XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> <span class="comment">//virtual xbInt16 GetCreateMdxBlockSize() const;</span></div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="comment">//virtual xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );</span></div>
+<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="comment">//#endif</span></div>
+<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> </div>
+<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span><span class="preprocessor"> #ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> xbInt16 DisableBlockReadProcessing();</div>
+<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> xbInt16 EnableBlockReadProcessing();</div>
+<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetBlockReadStatus() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span><span class="preprocessor"> #endif </span><span class="comment">// XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
+<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keyword">friend</span> <span class="keyword">class </span>xbIx;</div>
+<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> <span class="keyword">friend</span> <span class="keyword">class </span>xbIxMdx;</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> </div>
-<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <span class="keyword">virtual</span> xbInt16 GetInfFileName( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sNdxIdxFileName );</div>
-<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> </div>
-<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
-<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <span class="keywordtype">void</span> SetHeaderLocked ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bTableLocked );</div>
-<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> <span class="keywordtype">void</span> SetTableLocked ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bTableLocked );</div>
-<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="preprocessor"> #endif </span><span class="comment">// XB_LOCKING_SUPORT</span></div>
-<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
-<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
-<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> xbInt16 iMemoFieldCnt; <span class="comment">// Memo field cnt in the table</span></div>
-<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> xbMemo *Memo; <span class="comment">// Pointer to memo class</span></div>
-<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> xbUInt32 ulCreateMemoBlockSize; <span class="comment">// blocksize to use when creating dbt file</span></div>
-<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> xbInt16 AddIndex( xbIx *ix, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFmt );</div>
+<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> <span class="keywordtype">void</span> ClearTagList();</div>
+<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> xbInt16 RemoveIndex( xbIx * ix );</div>
+<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <span class="keywordtype">void</span> UpdateSchemaIxFlag( xbInt16 iFldNo, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cVal );</div>
+<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="keyword">virtual</span> xbInt16 UpdateTagList ();</div>
+<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> <span class="keyword">virtual</span> xbInt16 GetInfFileName( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sNdxIdxFileName );</div>
+<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> </div>
+<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="preprocessor"> #ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> <span class="keyword">friend</span> <span class="keyword">class </span>xbBlockRead;</div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span><span class="preprocessor"> #endif </span><span class="comment">// XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> </div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
-<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keyword">virtual</span> xbInt16 DeleteInfData();</div>
-<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="keyword">virtual</span> xbInt16 LoadInfData();</div>
-<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="keyword">virtual</span> xbInt16 SaveInfData();</div>
-<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
-<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span><span class="comment">/*</span></div>
-<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span><span class="comment"> #ifdef XB_MDX_SUPPORT</span></div>
-<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span><span class="comment"> xbInt16 iCreateMdxBlockSize;</span></div>
-<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="comment"> #endif // XB_MDX_SUPPORT</span></div>
-<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span><span class="comment">*/</span></div>
-<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> </div>
-<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keyword">virtual</span> xbInt16 GetRawField( xbInt16 iFieldNo, <span class="keywordtype">char</span> *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a7e63e852418f337eb7c44de5dcd50323"> 406</a></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> InitVars(); </div>
-<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#aba5dcac3b4092261bc1669740cdd669d"> 407</a></span> <span class="keyword">virtual</span> xbInt16 SetVersion() = 0;</div>
-<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="keyword">virtual</span> xbInt16 ValidateSchema( <a class="code hl_struct" href="structxb_1_1xbSchema.html">xbSchema</a> * s ) = 0;</div>
-<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> xbInt16 WriteHeader( xbInt16 iPositionOption, xbInt16 iWriteOption );</div>
-<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> </div>
-<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#afcd99924606be0a9e1e25180bcd1abf8"> 411</a></span> </div>
-<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ab506450954bc86e7bf1d7c4efe681f43"> 412</a></span> xbUInt32 ulCurRec; <span class="comment">// Current record or zero</span></div>
-<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> xbInt16 iAutoCommit; <span class="comment">// Auto commit updates if not explicitly performed before moving off record?</span></div>
-<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="comment">// -1 --&gt; Use DBMS default</span></div>
-<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="comment">// 0 --&gt; No auto update on this table, regardless of DBMS setting</span></div>
-<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="comment">// 1 --&gt; Auto update on this table, regardless of DBMS setting</span></div>
-<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a15f495446f0d75bcf2fa89e3b699d388"> 417</a></span> </div>
-<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> xbInt16 iFileVersion; <span class="comment">// xBase file version - which class is in play</span></div>
-<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> </div>
-<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a73f9c792d0a769e2e604c1855245a276"> 420</a></span> </div>
-<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a5056757614c39f725cc775332494966a"> 421</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sAlias; <span class="comment">// table alias</span></div>
-<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a6d8e193da3ca414eef1e8866ec5ca81b"> 422</a></span> xbInt16 iNoOfFields;</div>
-<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> xbInt16 iDbfStatus; <span class="comment">// 0 = closed</span></div>
-<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <span class="comment">// 1 = open</span></div>
-<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="comment">// 2 = updates pending</span></div>
-<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ad8c8b5eb12063bb898da1b2cc02cfce7"> 426</a></span> </div>
-<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a8a9b3bce0b741e73473d3ebbd6e6f1cd"> 427</a></span> xbSchemaRec *SchemaPtr; <span class="comment">// Pointer to field data</span></div>
-<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a353ebfc8a2960ef827f429ec74025606"> 428</a></span> <span class="keywordtype">char</span> *RecBuf; <span class="comment">// Pointer to record buffer</span></div>
-<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="keywordtype">char</span> *RecBuf2; <span class="comment">// Pointer to original rec buf</span></div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keywordtype">void</span> SetHeaderLocked ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bTableLocked );</div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="keywordtype">void</span> SetTableLocked ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bTableLocked );</div>
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span><span class="preprocessor"> #endif </span><span class="comment">// XB_LOCKING_SUPORT</span></div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> </div>
+<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
+<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> xbInt16 iMemoFieldCnt; <span class="comment">// Memo field cnt in the table</span></div>
+<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> xbMemo *Memo; <span class="comment">// Pointer to memo class</span></div>
+<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> xbUInt32 ulCreateMemoBlockSize; <span class="comment">// blocksize to use when creating dbt file</span></div>
+<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> </div>
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> <span class="keyword">virtual</span> xbInt16 DeleteInfData();</div>
+<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <span class="keyword">virtual</span> xbInt16 LoadInfData();</div>
+<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keyword">virtual</span> xbInt16 SaveInfData();</div>
+<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> </div>
+<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span><span class="comment">/*</span></div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span><span class="comment"> #ifdef XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span><span class="comment"> xbInt16 iCreateMdxBlockSize;</span></div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span><span class="comment"> #endif // XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span><span class="comment">*/</span></div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keyword">virtual</span> xbInt16 GetRawField( xbInt16 iFieldNo, <span class="keywordtype">char</span> *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a7e63e852418f337eb7c44de5dcd50323"> 417</a></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> InitVars(); </div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#aba5dcac3b4092261bc1669740cdd669d"> 418</a></span> <span class="keyword">virtual</span> xbInt16 SetVersion() = 0;</div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> <span class="keyword">virtual</span> xbInt16 ValidateSchema( <a class="code hl_struct" href="structxb_1_1xbSchema.html">xbSchema</a> * s ) = 0;</div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> xbInt16 WriteHeader( xbInt16 iPositionOption, xbInt16 iWriteOption );</div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> </div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#afcd99924606be0a9e1e25180bcd1abf8"> 422</a></span> </div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ab506450954bc86e7bf1d7c4efe681f43"> 423</a></span> xbUInt32 ulCurRec; <span class="comment">// Current record or zero</span></div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> xbInt16 iAutoCommit; <span class="comment">// Auto commit updates if not explicitly performed before moving off record?</span></div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="comment">// -1 --&gt; Use DBMS default</span></div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="comment">// 0 --&gt; No auto update on this table, regardless of DBMS setting</span></div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="comment">// 1 --&gt; Auto update on this table, regardless of DBMS setting</span></div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a15f495446f0d75bcf2fa89e3b699d388"> 428</a></span> </div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> xbInt16 iFileVersion; <span class="comment">// xBase file version - which class is in play</span></div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> </div>
-<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> </div>
-<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a3a262abf658e5fa968b57ef457a69470"> 432</a></span><span class="comment">/* Next several variables are database header fields, up through dbase V */</span></div>
-<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a4fcd6a86ddd32d4a9d76a4074573440a"> 433</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cVersion;</div>
-<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a9340a5e8ee53eb0f3b6601eec2d71e1b"> 434</a></span> <span class="keywordtype">char</span> cUpdateYY;</div>
-<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a6021789d314cd41488991e708fcd0df2"> 435</a></span> <span class="keywordtype">char</span> cUpdateMM;</div>
-<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#acb594ab61dd35b17bdf28394083f8e87"> 436</a></span> <span class="keywordtype">char</span> cUpdateDD;</div>
-<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a62f5fa9149ae0f6dc75642823de66918"> 437</a></span> xbUInt32 ulNoOfRecs;</div>
-<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a1760e222567e2c849f9c799b9d896e91"> 438</a></span> xbUInt16 uiHeaderLen;</div>
-<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ac3c89fc3bc6a6abf385478a8adbed970"> 439</a></span> xbUInt16 uiRecordLen;</div>
-<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a8734e799707582f022fc341d515650f4"> 440</a></span> <span class="keywordtype">char</span> cTransactionFlag;</div>
-<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ad59074633641e03647e54d2b66c9102b"> 441</a></span> <span class="keywordtype">char</span> cEncryptionFlag;</div>
-<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#aea1dfe5cbd1f9cdbcfc8eb04b2c3d5f1"> 442</a></span> <span class="keywordtype">char</span> cIndexFlag;</div>
-<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordtype">char</span> cLangDriver; <span class="comment">// dbase 7 sets to 1B</span></div>
-<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
-<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> </div>
-<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> </div>
-<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keywordtype">void</span> ResetNoOfRecords(); </div>
-<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> </div>
-<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> </div>
-<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span><span class="preprocessor">#ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> xbInt16 iAutoLock; <span class="comment">// 0 - autolock off, 1 - autolock on</span></div>
-<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> xbInt16 iLockFlavor;</div>
-<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bTableLocked; <span class="comment">// is the table locked</span></div>
-<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bHeaderLocked; <span class="comment">// is the header locked</span></div>
-<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> xbUInt32 ulAppendLocked; <span class="comment">// record number of the new record for the append lock operation</span></div>
-<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> xbLinkListOrd&lt;xbUInt32&gt; lloRecLocks; <span class="comment">// ordered link list of locked records</span></div>
-<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> </div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a73f9c792d0a769e2e604c1855245a276"> 431</a></span> </div>
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a5056757614c39f725cc775332494966a"> 432</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sAlias; <span class="comment">// table alias</span></div>
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a6d8e193da3ca414eef1e8866ec5ca81b"> 433</a></span> xbInt16 iNoOfFields;</div>
+<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> xbInt16 iDbfStatus; <span class="comment">// 0 = closed</span></div>
+<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="comment">// 1 = open</span></div>
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="comment">// 2 = updates pending</span></div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ad8c8b5eb12063bb898da1b2cc02cfce7"> 437</a></span> </div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a8a9b3bce0b741e73473d3ebbd6e6f1cd"> 438</a></span> xbSchemaRec *SchemaPtr; <span class="comment">// Pointer to field data</span></div>
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a353ebfc8a2960ef827f429ec74025606"> 439</a></span> <span class="keywordtype">char</span> *RecBuf; <span class="comment">// Pointer to record buffer</span></div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordtype">char</span> *RecBuf2; <span class="comment">// Pointer to original rec buf allocation</span></div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> </div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a3a262abf658e5fa968b57ef457a69470"> 443</a></span><span class="comment">/* Next several variables are database header fields, up through dbase V */</span></div>
+<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a4fcd6a86ddd32d4a9d76a4074573440a"> 444</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cVersion;</div>
+<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a9340a5e8ee53eb0f3b6601eec2d71e1b"> 445</a></span> <span class="keywordtype">char</span> cUpdateYY;</div>
+<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a6021789d314cd41488991e708fcd0df2"> 446</a></span> <span class="keywordtype">char</span> cUpdateMM;</div>
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#acb594ab61dd35b17bdf28394083f8e87"> 447</a></span> <span class="keywordtype">char</span> cUpdateDD;</div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a62f5fa9149ae0f6dc75642823de66918"> 448</a></span> xbUInt32 ulNoOfRecs;</div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a1760e222567e2c849f9c799b9d896e91"> 449</a></span> xbUInt16 uiHeaderLen;</div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ac3c89fc3bc6a6abf385478a8adbed970"> 450</a></span> xbUInt16 uiRecordLen;</div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#a8734e799707582f022fc341d515650f4"> 451</a></span> <span class="keywordtype">char</span> cTransactionFlag;</div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#ad59074633641e03647e54d2b66c9102b"> 452</a></span> <span class="keywordtype">char</span> cEncryptionFlag;</div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="classxb_1_1xbDbf.html#aea1dfe5cbd1f9cdbcfc8eb04b2c3d5f1"> 453</a></span> <span class="keywordtype">char</span> cIndexFlag;</div>
+<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keywordtype">char</span> cLangDriver; <span class="comment">// dbase 7 sets to 1B</span></div>
+<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
+<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> </div>
+<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> </div>
+<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keywordtype">void</span> ResetNoOfRecords(); </div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
-<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span><span class="preprocessor">#ifdef XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> xbIxList *ixList; <span class="comment">// pointer to a list of indices associated with the table</span></div>
-<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> xbIx *pCurIx; <span class="comment">// Pointer to current index class</span></div>
-<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keywordtype">void</span> *vpCurIxTag; <span class="comment">// Pointer to current tag</span></div>
-<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sCurIxType; <span class="comment">// Current index type</span></div>
-<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> xbLinkList&lt;xbTag *&gt; llTags; <span class="comment">// linked list of open tags</span></div>
-<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
-<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="preprocessor">#endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> </div>
-<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="preprocessor">#ifdef XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> xbLinkList&lt;xbString&gt; llInfData; <span class="comment">// linked list of strings containing ndx file entries</span></div>
-<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span><span class="preprocessor">#endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
-<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> </div>
-<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> </div>
-<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span>};</div>
-<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> </div>
-<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span> </div>
-<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span><span class="preprocessor">#ifdef XB_DBF3_SUPPORT</span></div>
-<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> </div>
-<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="keyword">class </span>XBDLLEXPORT xbDbf3 : <span class="keyword">public</span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> {</div>
-<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> xbDbf3(<a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> *x);</div>
-<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> ~xbDbf3();</div>
-<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="keyword">virtual</span> xbInt16 CreateTable ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias, <a class="code hl_struct" href="structxb_1_1xbSchema.html">xbSchema</a> *, xbInt16 iOverlay, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="keyword">virtual</span> xbInt16 GetVersion () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> <span class="keyword">virtual</span> xbInt16 Rename ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sNewName );</div>
-<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> </div>
-<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
-<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> <span class="keyword">virtual</span> xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );</div>
-<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> </div>
-<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> xbInt16 SetVersion ();</div>
-<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="keyword">virtual</span> xbInt16 ValidateSchema( <a class="code hl_struct" href="structxb_1_1xbSchema.html">xbSchema</a> *s );</div>
-<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> </div>
-<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> </div>
-<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span>};</div>
-<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span><span class="preprocessor">#endif </span><span class="comment">/* XB_DBF3_SUPPORT */</span><span class="preprocessor"></span></div>
-<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> </div>
-<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> </div>
-<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span><span class="preprocessor">#ifdef XB_DBF4_SUPPORT</span></div>
-<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> </div>
-<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span><span class="keyword">class </span>XBDLLEXPORT xbDbf4 : <span class="keyword">public</span> <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> {</div>
-<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> xbDbf4( <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *x );</div>
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> </div>
+<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> xbInt16 iAutoLock; <span class="comment">// 0 - autolock off, 1 - autolock on</span></div>
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> xbInt16 iLockFlavor;</div>
+<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bTableLocked; <span class="comment">// is the table locked</span></div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bHeaderLocked; <span class="comment">// is the header locked</span></div>
+<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> xbUInt32 ulAppendLocked; <span class="comment">// record number of the new record for the append lock operation</span></div>
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span> xbLinkListOrd&lt;xbUInt32&gt; lloRecLocks; <span class="comment">// ordered link list of locked records</span></div>
+<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> </div>
+<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> xbIxList *ixList; <span class="comment">// pointer to a list of indices associated with the table</span></div>
+<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> xbIx *pCurIx; <span class="comment">// Pointer to current index class</span></div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> <span class="keywordtype">void</span> *vpCurIxTag; <span class="comment">// Pointer to current tag</span></div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sCurIxType; <span class="comment">// Current index type</span></div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> xbLinkList&lt;xbTag *&gt; llTags; <span class="comment">// linked list of open tags</span></div>
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> </div>
+<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span><span class="preprocessor"> #ifdef XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> xbLinkList&lt;xbString&gt; llInfData; <span class="comment">// linked list of strings containing ndx file entries</span></div>
+<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INF_SUPPORT</span></div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> </div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span><span class="preprocessor"> #ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> xbBlockRead *pRb;</div>
+<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bBlockReadEnabled; <span class="comment">// if true, then block read mode is on</span></div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> </div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span> </div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> </div>
+<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span>};</div>
+<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> </div>
+<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> </div>
+<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="preprocessor">#ifdef XB_DBF3_SUPPORT</span></div>
+<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> </div>
+<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span><span class="keyword">class </span>XBDLLEXPORT xbDbf3 : <span class="keyword">public</span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> {</div>
+<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> xbDbf3(<a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> *x);</div>
+<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> ~xbDbf3();</div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keyword">virtual</span> xbInt16 CreateTable ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias, <a class="code hl_struct" href="structxb_1_1xbSchema.html">xbSchema</a> *, xbInt16 iOverlay, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keyword">virtual</span> xbInt16 GetVersion () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTableName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="keyword">virtual</span> xbInt16 Rename ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sNewName );</div>
+<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> </div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
+<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keyword">virtual</span> xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );</div>
+<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> </div>
+<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> xbInt16 SetVersion ();</div>
+<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> <span class="keyword">virtual</span> xbInt16 ValidateSchema( <a class="code hl_struct" href="structxb_1_1xbSchema.html">xbSchema</a> *s );</div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> </div>
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> </div>
-<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> ~xbDbf4();</div>
-<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> </div>
-<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="keyword">virtual</span> xbInt16 CreateTable ( <span class="keyword">const</span> xbString &amp;sTableName, <span class="keyword">const</span> xbString &amp;sAlias, xbSchema *, xbInt16 iOverlay, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keyword">virtual</span> xbInt16 GetVersion () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> xbString &amp;sTableName, <span class="keyword">const</span> xbString &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keyword">virtual</span> xbInt16 Rename ( <span class="keyword">const</span> xbString sNewName );</div>
+<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span>};</div>
+<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span><span class="preprocessor">#endif </span><span class="comment">/* XB_DBF3_SUPPORT */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> </div>
+<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> </div>
+<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span><span class="preprocessor">#ifdef XB_DBF4_SUPPORT</span></div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
-<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
-<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> <span class="keyword">virtual</span> xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );</div>
-<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> </div>
-<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="comment">// void InitVars ();</span></div>
-<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> xbInt16 SetVersion();</div>
-<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="keyword">virtual</span> xbInt16 ValidateSchema ( xbSchema *s );</div>
-<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> </div>
-<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> </div>
-<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span>};</div>
-<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> </div>
-<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span><span class="preprocessor">#endif </span><span class="comment">/* XB_DBF4_SUPPORT */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span><span class="keyword">class </span>XBDLLEXPORT xbDbf4 : <span class="keyword">public</span> <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> {</div>
+<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> xbDbf4( <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *x );</div>
+<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> </div>
+<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> ~xbDbf4();</div>
+<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> </div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="keyword">virtual</span> xbInt16 CreateTable ( <span class="keyword">const</span> xbString &amp;sTableName, <span class="keyword">const</span> xbString &amp;sAlias, xbSchema *, xbInt16 iOverlay, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keyword">virtual</span> xbInt16 GetVersion () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <span class="keyword">virtual</span> xbInt16 Open ( <span class="keyword">const</span> xbString &amp;sTableName, <span class="keyword">const</span> xbString &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="keyword">virtual</span> xbInt16 Rename ( <span class="keyword">const</span> xbString sNewName );</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> </div>
-<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span>} <span class="comment">/* namespace xb */</span></div>
-<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_DBF_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span><span class="preprocessor"> #ifdef XB_MEMO_SUPPORT</span></div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="keyword">virtual</span> xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );</div>
+<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> </div>
+<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="comment">// void InitVars ();</span></div>
+<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> xbInt16 SetVersion();</div>
+<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> <span class="keyword">virtual</span> xbInt16 ValidateSchema ( xbSchema *s );</div>
+<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> </div>
+<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> </div>
+<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span>};</div>
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> </div>
+<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span><span class="preprocessor">#endif </span><span class="comment">/* XB_DBF4_SUPPORT */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> </div>
+<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span>} <span class="comment">/* namespace xb */</span></div>
+<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_DBF_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassxb_1_1xbDate_html"><div class="ttname"><a href="classxb_1_1xbDate.html">xb::xbDate</a></div><div class="ttdoc">xbDate class.</div><div class="ttdef"><b>Definition:</b> xbdate.h:62</div></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html"><div class="ttname"><a href="classxb_1_1xbDbf.html">xb::xbDbf</a></div><div class="ttdoc">Base class for handling dbf files/tables.</div><div class="ttdef"><b>Definition:</b> xbdbf.h:150</div></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html_a49212a9eb17f7fa9f303e08d5fc50fc6"><div class="ttname"><a href="classxb_1_1xbDbf.html#a49212a9eb17f7fa9f303e08d5fc50fc6">xb::xbDbf::GetVersion</a></div><div class="ttdeci">virtual xbInt16 GetVersion() const =0</div></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html_a4d018cbf44d8d8b2145c9acab02c8adf"><div class="ttname"><a href="classxb_1_1xbDbf.html#a4d018cbf44d8d8b2145c9acab02c8adf">xb::xbDbf::Open</a></div><div class="ttdeci">virtual xbInt16 Open(const xbString &amp;sTableName, const xbString &amp;sAlias, xbInt16 iOpenMode, xbInt16 iShareMode)=0</div></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html_a73e41bfe679dd06ab16c436652df93f1"><div class="ttname"><a href="classxb_1_1xbDbf.html#a73e41bfe679dd06ab16c436652df93f1">xb::xbDbf::CreateTable</a></div><div class="ttdeci">virtual xbInt16 CreateTable(const xbString &amp;sTableName, const xbString &amp;sAlias, xbSchema *pSchema, xbInt16 iOverlay, xbInt16 iShareMode)=0</div></div>
+<div class="ttc" id="aclassxb_1_1xbDbf_html_ad56be2756b7a9f8318d9ba5cf215dafb"><div class="ttname"><a href="classxb_1_1xbDbf.html#ad56be2756b7a9f8318d9ba5cf215dafb">xb::xbDbf::GetHeaderLen</a></div><div class="ttdeci">virtual xbUInt16 GetHeaderLen() const</div></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html_aeeeb2eb5fabcd0f91d457df07b0e0708"><div class="ttname"><a href="classxb_1_1xbDbf.html#aeeeb2eb5fabcd0f91d457df07b0e0708">xb::xbDbf::Rename</a></div><div class="ttdeci">virtual xbInt16 Rename(const xbString sNewName)=0</div></div>
<div class="ttc" id="aclassxb_1_1xbFile_html"><div class="ttname"><a href="classxb_1_1xbFile.html">xb::xbFile</a></div><div class="ttdoc">Class for handling low level file I/O.</div><div class="ttdef"><b>Definition:</b> xbfile.h:56</div></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
diff --git a/docs/doxygen/html/xbdelete_8cpp.html b/docs/doxygen/html/xbdelete_8cpp.html
index 98abf7b..24c2f92 100644
--- a/docs/doxygen/html/xbdelete_8cpp.html
+++ b/docs/doxygen/html/xbdelete_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbdelete.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbdelete.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdrpix_8cpp.html b/docs/doxygen/html/xbdrpix_8cpp.html
index 5ee81fc..c156992 100644
--- a/docs/doxygen/html/xbdrpix_8cpp.html
+++ b/docs/doxygen/html/xbdrpix_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbdrpix.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbdrpix.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbdrptbl_8cpp.html b/docs/doxygen/html/xbdrptbl_8cpp.html
index e1868e1..dbb9d11 100644
--- a/docs/doxygen/html/xbdrptbl_8cpp.html
+++ b/docs/doxygen/html/xbdrptbl_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbdrptbl.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbdrptbl.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbexp_8cpp.html b/docs/doxygen/html/xbexp_8cpp.html
index ba70747..dbbc593 100644
--- a/docs/doxygen/html/xbexp_8cpp.html
+++ b/docs/doxygen/html/xbexp_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbexp.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbexp.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbexp_8h.html b/docs/doxygen/html/xbexp_8h.html
index 307d9d2..15d6430 100644
--- a/docs/doxygen/html/xbexp_8h.html
+++ b/docs/doxygen/html/xbexp_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbexp.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbexp.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbexp_8h_source.html b/docs/doxygen/html/xbexp_8h_source.html
index 0061537..a5195d7 100644
--- a/docs/doxygen/html/xbexp_8h_source.html
+++ b/docs/doxygen/html/xbexp_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbexp.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbexp.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbexpnode_8cpp.html b/docs/doxygen/html/xbexpnode_8cpp.html
index e8df7a8..d26df29 100644
--- a/docs/doxygen/html/xbexpnode_8cpp.html
+++ b/docs/doxygen/html/xbexpnode_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbexpnode.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbexpnode.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbexpnode_8h.html b/docs/doxygen/html/xbexpnode_8h.html
index a72834f..079ab87 100644
--- a/docs/doxygen/html/xbexpnode_8h.html
+++ b/docs/doxygen/html/xbexpnode_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbexpnode.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbexpnode.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbexpnode_8h_source.html b/docs/doxygen/html/xbexpnode_8h_source.html
index f58824d..0043f29 100644
--- a/docs/doxygen/html/xbexpnode_8h_source.html
+++ b/docs/doxygen/html/xbexpnode_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbexpnode.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbexpnode.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbfields_8cpp.html b/docs/doxygen/html/xbfields_8cpp.html
index 8b99d8e..f2cd472 100644
--- a/docs/doxygen/html/xbfields_8cpp.html
+++ b/docs/doxygen/html/xbfields_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbfields.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbfields.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbfile_8cpp.html b/docs/doxygen/html/xbfile_8cpp.html
index 929f40c..26e8b99 100644
--- a/docs/doxygen/html/xbfile_8cpp.html
+++ b/docs/doxygen/html/xbfile_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbfile.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbfile.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbfile_8h.html b/docs/doxygen/html/xbfile_8h.html
index 4fee508..d778f87 100644
--- a/docs/doxygen/html/xbfile_8h.html
+++ b/docs/doxygen/html/xbfile_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbfile.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbfile.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbfile_8h_source.html b/docs/doxygen/html/xbfile_8h_source.html
index 898a60b..11c4fcd 100644
--- a/docs/doxygen/html/xbfile_8h_source.html
+++ b/docs/doxygen/html/xbfile_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbfile.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbfile.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -112,140 +112,144 @@ $(function() {
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <a class="code hl_class" href="classxb_1_1xbFile.html">xbFile</a>( <a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> * x );</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_class" href="classxb_1_1xbFile.html">~xbFile</a>();</div>
-<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> xbInt16 CreateUniqueFileName( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDirIn, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sExtIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqnOut );</div>
-<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> xbInt16 CreateUniqueFileName( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDirIn, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sExtIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqnOut, xbInt16 iOption );</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> xbInt16 SetHomeFolders();</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
-<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetDirectory() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetFileName() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetFqFileName() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
-<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">void</span> SetDirectory ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDirectory);</div>
-<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">void</span> SetFileName ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName );</div>
-<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordtype">void</span> SetFqFileName( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqName );</div>
-<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
-<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> xbUInt32 GetBlockSize () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> xbInt16 CreateUniqueFileName( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDirIn, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sExtIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqnOut );</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> xbInt16 CreateUniqueFileName( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDirIn, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sExtIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqnOut, xbInt16 iOption );</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetDirectory() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetFileName() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetFqFileName() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordtype">void</span> SetDirectory ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDirectory);</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">void</span> SetFileName ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName );</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">void</span> SetFqFileName( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqName );</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
-<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> xbInt16 GetOpenMode () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> xbInt16 GetShareMode () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> xbUInt32 GetBlockSize () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> xbInt16 GetFileDirPart ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileDirPartOut ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> xbInt16 GetFileDirPart ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCompleteFileNameIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileDirPartOut ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> xbInt16 GetFileExtPart ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileExtPartOut ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> xbInt16 GetFileExtPart ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCompleteFileNameIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileExtPartOut ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> xbInt16 GetFileNamePart( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileNamePartOut ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> xbInt16 GetFileNamePart( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCompleteFileNameIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileNamePartOut ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> xbInt16 GetFileType ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileType ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
-<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> xbInt16 GetXbaseFileTypeByte( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 &amp;iVersion );</div>
-<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> xbInt16 GetXbaseFileTypeByte( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &amp;cFileTypeByte );</div>
-<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> xbInt16 GetXbaseFileTypeByte( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &amp;cFileTypeByte, xbInt16 &amp;iVersion );</div>
-<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> xbInt16 DetermineXbaseTableVersion( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cFileTypeByte ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> xbInt16 DetermineXbaseMemoVersion( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cFileTypeByte ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
-<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists ( xbInt16 iOption ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iOption ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
-<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileIsOpen () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
-<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> xbInt16 ReadBlock ( xbUInt32 ulBlockNo, <span class="keywordtype">size_t</span> readSize, <span class="keywordtype">void</span> *buf );</div>
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> xbInt16 ReadBlock ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, <span class="keywordtype">size_t</span> readSize, <span class="keywordtype">void</span> *buf );</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> xbInt16 WriteBlock( xbUInt32 ulBlockNo, <span class="keywordtype">size_t</span> writeSize, <span class="keywordtype">void</span> *buf );</div>
-<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> xbInt16 GetFileSize( xbUInt64 &amp;ullFileSize );</div>
-<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> xbInt16 GetFileMtime( time_t &amp;mtime );</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> xbInt16 GetOpenMode () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> xbInt16 GetShareMode () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> xbInt16 GetFileDirPart ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileDirPartOut ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> xbInt16 GetFileDirPart ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCompleteFileNameIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileDirPartOut ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> xbInt16 GetFileExtPart ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileExtPartOut ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> xbInt16 GetFileExtPart ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCompleteFileNameIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileExtPartOut ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> xbInt16 GetFileNamePart( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileNamePartOut ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> xbInt16 GetFileNamePart( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sCompleteFileNameIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileNamePartOut ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> xbInt16 GetFileType ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileType ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> xbInt16 GetXbaseFileTypeByte( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 &amp;iVersion );</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> xbInt16 GetXbaseFileTypeByte( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &amp;cFileTypeByte );</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> xbInt16 GetXbaseFileTypeByte( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &amp;cFileTypeByte, xbInt16 &amp;iVersion );</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> xbInt16 DetermineXbaseTableVersion( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cFileTypeByte ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> xbInt16 DetermineXbaseMemoVersion( <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> cFileTypeByte ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists ( xbInt16 iOption ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileExists ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iOption ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> FileIsOpen () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> </div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> xbInt16 ReadBlock ( xbUInt32 ulBlockNo, <span class="keywordtype">size_t</span> readSize, <span class="keywordtype">void</span> *buf );</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> xbInt16 ReadBlock ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, <span class="keywordtype">size_t</span> readSize, <span class="keywordtype">void</span> *buf );</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> xbInt16 WriteBlock( xbUInt32 ulBlockNo, <span class="keywordtype">size_t</span> writeSize, <span class="keywordtype">void</span> *buf );</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
-<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> eGetDouble( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> xbInt32 eGetInt32 ( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> xbUInt32 eGetUInt32( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> xbInt16 eGetInt16 ( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> xbUInt16 eGetUInt16( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">void</span> ePutDouble( <span class="keywordtype">char</span> *p, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> d );</div>
-<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">void</span> ePutInt32 ( <span class="keywordtype">char</span> *p, xbInt32 l );</div>
-<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordtype">void</span> ePutUInt32( <span class="keywordtype">char</span> *p, xbUInt32 ul );</div>
-<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">void</span> ePutInt16 ( <span class="keywordtype">char</span> *p, xbInt16 s );</div>
-<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">void</span> ePutUInt16( <span class="keywordtype">char</span> *p, xbUInt16 s );</div>
-<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> </div>
-<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> xbInt16 xbFclose ();</div>
-<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> xbInt16 xbFeof ();</div>
-<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> xbInt16 xbFflush ();</div>
-<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> xbInt16 xbFgetc ( xbInt32 &amp;c );</div>
-<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> xbInt16 xbFgetc ( <span class="keywordtype">char</span> &amp;c );</div>
-<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
-<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> xbInt16 xbLock ( xbInt16 iFunction, xbInt64 llOffset, <span class="keywordtype">size_t</span> stLen );</div>
-<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> xbInt16 GetLockRetryCount() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keywordtype">void</span> SetLockRetryCount( xbInt16 iLockRetries );</div>
-<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
-<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"><a class="line" href="classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c"> 131</a></span> xbInt16 <a class="code hl_function" href="classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c">xbFopen</a> ( xbInt16 iOpenMode );</div>
-<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> xbInt16 xbFopen ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOpenMode, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> xbInt16 xbFopen ( xbInt16 iOpenMode, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> xbInt16 xbFopen ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMode, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iShareMode );</div>
-<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
-<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> xbInt16 xbFputc ( xbInt32 c );</div>
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> xbInt16 xbFputc ( xbInt32 c, xbInt32 iNoTimes );</div>
-<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> xbInt16 xbFputs ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s );</div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> xbInt16 xbFread ( <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> nmemb );</div>
-<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> xbInt16 xbFgets ( <span class="keywordtype">size_t</span> lSize, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sLine );</div>
-<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
-<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">size_t</span> xbFtell ();</div>
-<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> xbInt16 xbFseek ( xbInt64 llOffset, xbInt32 whence );</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> xbInt16 GetFileSize( xbUInt64 &amp;ullFileSize );</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> xbInt16 GetFileMtime( time_t &amp;mtime );</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> </div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> eGetDouble( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> xbInt32 eGetInt32 ( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> xbUInt32 eGetUInt32( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> xbInt16 eGetInt16 ( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> xbUInt16 eGetUInt16( <span class="keyword">const</span> <span class="keywordtype">char</span> *p ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> <span class="keywordtype">void</span> ePutDouble( <span class="keywordtype">char</span> *p, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> d );</div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="keywordtype">void</span> ePutInt32 ( <span class="keywordtype">char</span> *p, xbInt32 l );</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">void</span> ePutUInt32( <span class="keywordtype">char</span> *p, xbUInt32 ul );</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keywordtype">void</span> ePutInt16 ( <span class="keywordtype">char</span> *p, xbInt16 s );</div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">void</span> ePutUInt16( <span class="keywordtype">char</span> *p, xbUInt16 s );</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> xbInt16 xbFclose ();</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> xbInt16 xbFeof ();</div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> xbInt16 xbFflush ();</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> xbInt16 xbFgetc ( xbInt32 &amp;c );</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> xbInt16 xbFgetc ( <span class="keywordtype">char</span> &amp;c );</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> xbInt16 xbLock ( xbInt16 iFunction, xbInt64 llOffset, <span class="keywordtype">size_t</span> stLen );</div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> xbInt16 GetLockRetryCount() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">void</span> SetLockRetryCount( xbInt16 iLockRetries );</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c"> 134</a></span> xbInt16 <a class="code hl_function" href="classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c">xbFopen</a> ( xbInt16 iOpenMode );</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> xbInt16 xbFopen ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOpenMode, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> xbInt16 xbFopen ( xbInt16 iOpenMode, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> xbInt16 xbFopen ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sMode, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iShareMode );</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> xbInt16 xbFputc ( xbInt32 c );</div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> xbInt16 xbFputc ( xbInt32 c, xbInt32 iNoTimes );</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> xbInt16 xbFputs ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s );</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> xbInt16 xbFread ( <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> nmemb );</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> xbInt16 xbFgets ( <span class="keywordtype">size_t</span> lSize, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sLine );</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
-<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">void</span> xbFTurnOffFileBuffering();</div>
-<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> xbInt16 xbFwrite ( <span class="keyword">const</span> <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> lSize, <span class="keywordtype">size_t</span> lNmemb );</div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">size_t</span> xbFtell ();</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> xbInt16 xbFseek ( xbInt64 llOffset, xbInt32 whence );</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
-<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> xbInt16 xbReadUntil ( <span class="keyword">const</span> <span class="keywordtype">char</span> cDelim, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> xbInt16 xbRemove ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iOption );</div>
-<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> xbInt16 xbRemove ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName );</div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> xbInt16 xbRemove ();</div>
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
-<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> xbInt16 xbRename ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sNewName );</div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordtype">void</span> xbRewind ();</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="keywordtype">void</span> xbFTurnOffFileBuffering();</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> xbInt16 xbFwrite ( <span class="keyword">const</span> <span class="keywordtype">void</span> *ptr, <span class="keywordtype">size_t</span> lSize, <span class="keywordtype">size_t</span> lNmemb );</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> xbInt16 xbReadUntil ( <span class="keyword">const</span> <span class="keywordtype">char</span> cDelim, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> xbInt16 xbRemove ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iOption );</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> xbInt16 xbRemove ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName );</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> xbInt16 xbRemove ();</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> xbInt16 xbTruncate ( xbInt64 llSize );</div>
-<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> xbInt16 NameSuffixMissing( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iOption ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> xbInt16 xbRename ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOldName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sNewName );</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">void</span> xbRewind ();</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
-<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="preprocessor"> #ifdef XB_DEBUG_SUPPORT</span></div>
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, <span class="keywordtype">size_t</span> lBlockSize );</div>
-<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
-<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
-<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> </div>
-<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004"> 166</a></span> <a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> *<a class="code hl_variable" href="classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004">xbase</a>; <span class="comment">/* pointer to the main structures */</span></div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> xbInt16 xbTruncate ( xbInt64 llSize );</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> xbInt16 NameSuffixMissing( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFileName, xbInt16 iOption ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor"> #ifdef XB_DEBUG_SUPPORT</span></div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, <span class="keywordtype">size_t</span> lBlockSize );</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> xbInt16 DumpMemToDisk ( <span class="keywordtype">char</span> *p, <span class="keywordtype">size_t</span> lBlockSize );</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
-<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> FILE *fp;</div>
-<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sFqFileName; <span class="comment">/* fully qualified file name */</span></div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sFileName; <span class="comment">/* file name */</span></div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDirectory; <span class="comment">/* directory, ends with / or \ */</span></div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bFileOpen; <span class="comment">/* true if file is open */</span></div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> xbUInt32 ulBlockSize; <span class="comment">/* used for memo and index files */</span></div>
-<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
-<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> xbInt16 iOpenMode; <span class="comment">/* XB_READ || XB_READ_WRITE || XB_WRITE */</span></div>
-<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> xbInt16 iShareMode; <span class="comment">/* XB_SINGLE_USER || XB_MULTI_USER - set file buffering */</span></div>
-<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> xbInt32 iFileNo; <span class="comment">/* Library File No */</span></div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"><a class="line" href="classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004"> 170</a></span> <a class="code hl_class" href="classxb_1_1xbXBase.html">xbXBase</a> *<a class="code hl_variable" href="classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004">xbase</a>; <span class="comment">/* pointer to the main structures */</span></div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> FILE *fp;</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sFqFileName; <span class="comment">/* fully qualified file name */</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sFileName; <span class="comment">/* file name */</span></div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDirectory; <span class="comment">/* directory, ends with / or \ */</span></div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bFileOpen; <span class="comment">/* true if file is open */</span></div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> xbUInt32 ulBlockSize; <span class="comment">/* used for memo and index files */</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> xbInt16 iLockRetries; <span class="comment">/* file override number of lock attempts */</span></div>
-<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> xbInt16 iOpenMode; <span class="comment">/* XB_READ || XB_READ_WRITE || XB_WRITE */</span></div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> xbInt16 iShareMode; <span class="comment">/* XB_SINGLE_USER || XB_MULTI_USER - set file buffering */</span></div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> xbInt32 iFileNo; <span class="comment">/* Library File No */</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
-<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor"> #ifdef HAVE_SETENDOFFILE_F</span></div>
-<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> HANDLE fHandle;</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> xbInt16 iLockRetries; <span class="comment">/* file override number of lock attempts */</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
-<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
-<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span>};</div>
-<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> </div>
-<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span>} <span class="comment">/* namespace */</span></div>
-<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="preprocessor">#endif </span><span class="comment">/* __XBFILE_H__ */</span><span class="preprocessor"></span></div>
-<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor"> #ifdef HAVE_SETENDOFFILE_F</span></div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> HANDLE fHandle;</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> </div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span>};</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span>} <span class="comment">/* namespace */</span></div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="preprocessor">#endif </span><span class="comment">/* __XBFILE_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="ttc" id="aclassxb_1_1xbFile_html"><div class="ttname"><a href="classxb_1_1xbFile.html">xb::xbFile</a></div><div class="ttdoc">Class for handling low level file I/O.</div><div class="ttdef"><b>Definition:</b> xbfile.h:56</div></div>
<div class="ttc" id="aclassxb_1_1xbFile_html_a7cdfef5ede9ac98d44a28a6b7a70972c"><div class="ttname"><a href="classxb_1_1xbFile.html#a7cdfef5ede9ac98d44a28a6b7a70972c">xb::xbFile::xbFopen</a></div><div class="ttdeci">xbInt16 xbFopen(xbInt16 iOpenMode)</div></div>
-<div class="ttc" id="aclassxb_1_1xbFile_html_ae39a67ea391b46055d4ca299cb222004"><div class="ttname"><a href="classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004">xb::xbFile::xbase</a></div><div class="ttdeci">xbXBase * xbase</div><div class="ttdef"><b>Definition:</b> xbfile.h:166</div></div>
+<div class="ttc" id="aclassxb_1_1xbFile_html_ae39a67ea391b46055d4ca299cb222004"><div class="ttname"><a href="classxb_1_1xbFile.html#ae39a67ea391b46055d4ca299cb222004">xb::xbFile::xbase</a></div><div class="ttdeci">xbXBase * xbase</div><div class="ttdef"><b>Definition:</b> xbfile.h:170</div></div>
<div class="ttc" id="aclassxb_1_1xbSsv_html"><div class="ttname"><a href="classxb_1_1xbSsv.html">xb::xbSsv</a></div><div class="ttdoc">Class for handling shared system variables.</div><div class="ttdef"><b>Definition:</b> xbssv.h:59</div></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
<div class="ttc" id="aclassxb_1_1xbXBase_html"><div class="ttname"><a href="classxb_1_1xbXBase.html">xb::xbXBase</a></div><div class="ttdoc">xbXbase class.</div><div class="ttdef"><b>Definition:</b> xbxbase.h:123</div></div>
diff --git a/docs/doxygen/html/xbfilter_8cpp.html b/docs/doxygen/html/xbfilter_8cpp.html
index c04e8ae..5af181c 100644
--- a/docs/doxygen/html/xbfilter_8cpp.html
+++ b/docs/doxygen/html/xbfilter_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbfilter.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbfilter.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbfilter_8h.html b/docs/doxygen/html/xbfilter_8h.html
index 4b47ef8..211aada 100644
--- a/docs/doxygen/html/xbfilter_8h.html
+++ b/docs/doxygen/html/xbfilter_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbfilter.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbfilter.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbfilter_8h_source.html b/docs/doxygen/html/xbfilter_8h_source.html
index 0521f4e..854676f 100644
--- a/docs/doxygen/html/xbfilter_8h_source.html
+++ b/docs/doxygen/html/xbfilter_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbfilter.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbfilter.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -109,20 +109,20 @@ $(function() {
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="keyword">class </span>XBDLLEXPORT xbFilter {</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> xbFilter( <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *xbase, <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> *dbf );</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> xbFilter( <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> *dbf );</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> ~xbFilter();</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> xbInt16 Set( xbString &amp;sFilterExpression );</div>
-<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> xbInt16 GetFirstRecord( xbInt16 iOpt = 1 );</div>
-<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> xbInt16 GetNextRecord ( xbInt16 iOpt = 1 );</div>
-<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> xbInt16 GetPrevRecord ( xbInt16 iOpt = 1 );</div>
-<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> xbInt16 GetLastRecord ( xbInt16 iOpt = 1 );</div>
-<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> SetLimit( xbInt32 ulLimit );</div>
-<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> xbInt32 GetLimit() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">void</span> ResetQryCnt();</div>
-<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> xbInt32 GetQryCnt() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
-<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="comment">// void Set( xbIx *pIx, void *vpTag );</span></div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> xbInt16 Set( <span class="keyword">const</span> <span class="keywordtype">char</span> *sFilterExpression );</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> xbInt16 GetFirstRecord( xbInt16 iOpt = 1 );</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> xbInt16 GetNextRecord ( xbInt16 iOpt = 1 );</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> xbInt16 GetPrevRecord ( xbInt16 iOpt = 1 );</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> xbInt16 GetLastRecord ( xbInt16 iOpt = 1 );</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> SetLimit( xbInt32 ulLimit );</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xbInt32 GetLimit() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">void</span> ResetQryCnt();</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> xbInt32 GetQryCnt() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> xbInt16 GetFirstRecordIx( xbInt16 iOpt = 1 );</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> xbInt16 GetNextRecordIx ( xbInt16 iOpt = 1 );</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> xbInt16 GetPrevRecordIx ( xbInt16 iOpt = 1 );</div>
@@ -131,7 +131,7 @@ $(function() {
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *xbase;</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">// xbXBase *xbase;</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> *dbf;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> xbExp *exp;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
@@ -149,7 +149,6 @@ $(function() {
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor">#endif </span><span class="comment">/* XB_FILTER_SUPPORT */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="preprocessor">#endif </span><span class="comment">/* __XBFILTER_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
-<div class="ttc" id="anamespacexb_html_a97858ddeb1c4b0100f3edc1a46d3a8b0"><div class="ttname"><a href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xb::xbXBase</a></div><div class="ttdeci">class XBDLLEXPORT xbXBase</div><div class="ttdef"><b>Definition:</b> xbssv.h:27</div></div>
<div class="ttc" id="anamespacexb_html_ab2eae4b4732466698a7fdd89d77ba53b"><div class="ttname"><a href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xb::xbDbf</a></div><div class="ttdeci">class XBDLLEXPORT xbDbf</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:28</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/xbfuncs_8cpp.html b/docs/doxygen/html/xbfuncs_8cpp.html
index 2bf9e11..6cc894f 100644
--- a/docs/doxygen/html/xbfuncs_8cpp.html
+++ b/docs/doxygen/html/xbfuncs_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbfuncs.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbfuncs.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbindex_8h.html b/docs/doxygen/html/xbindex_8h.html
index e78a885..1181fa0 100644
--- a/docs/doxygen/html/xbindex_8h.html
+++ b/docs/doxygen/html/xbindex_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbindex.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbindex.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbindex_8h_source.html b/docs/doxygen/html/xbindex_8h_source.html
index ef3da6e..823e568 100644
--- a/docs/doxygen/html/xbindex_8h_source.html
+++ b/docs/doxygen/html/xbindex_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbindex.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbindex.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbinsert_8cpp.html b/docs/doxygen/html/xbinsert_8cpp.html
index 5d22052..3dfc6a6 100644
--- a/docs/doxygen/html/xbinsert_8cpp.html
+++ b/docs/doxygen/html/xbinsert_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbinsert.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbinsert.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbixbase_8cpp.html b/docs/doxygen/html/xbixbase_8cpp.html
index ec52c20..71f1dc6 100644
--- a/docs/doxygen/html/xbixbase_8cpp.html
+++ b/docs/doxygen/html/xbixbase_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbixbase.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbixbase.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbixmdx_8cpp.html b/docs/doxygen/html/xbixmdx_8cpp.html
index 89de78c..7d15f64 100644
--- a/docs/doxygen/html/xbixmdx_8cpp.html
+++ b/docs/doxygen/html/xbixmdx_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbixmdx.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbixmdx.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbixndx_8cpp.html b/docs/doxygen/html/xbixndx_8cpp.html
index b1bebfa..26fc15e 100644
--- a/docs/doxygen/html/xbixndx_8cpp.html
+++ b/docs/doxygen/html/xbixndx_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbixndx.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbixndx.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblnklst_8h.html b/docs/doxygen/html/xblnklst_8h.html
index 2b8d005..7d4be72 100644
--- a/docs/doxygen/html/xblnklst_8h.html
+++ b/docs/doxygen/html/xblnklst_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblnklst.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblnklst.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblnklst_8h_source.html b/docs/doxygen/html/xblnklst_8h_source.html
index d08082a..c8ed015 100644
--- a/docs/doxygen/html/xblnklst_8h_source.html
+++ b/docs/doxygen/html/xblnklst_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblnklst.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblnklst.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -329,7 +329,7 @@ $(function() {
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
<div class="ttc" id="axbretcod_8h_html_a13e6876470bd34c8c4e5533f115e04eb"><div class="ttname"><a href="xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb">XB_INVALID_NODELINK</a></div><div class="ttdeci">#define XB_INVALID_NODELINK</div><div class="ttdef"><b>Definition:</b> xbretcod.h:28</div></div>
-<div class="ttc" id="axbretcod_8h_html_ac2606659a54111334f5b02861e533700"><div class="ttname"><a href="xbretcod_8h.html#ac2606659a54111334f5b02861e533700">XB_NOT_FOUND</a></div><div class="ttdeci">#define XB_NOT_FOUND</div><div class="ttdef"><b>Definition:</b> xbretcod.h:39</div></div>
+<div class="ttc" id="axbretcod_8h_html_ac2606659a54111334f5b02861e533700"><div class="ttname"><a href="xbretcod_8h.html#ac2606659a54111334f5b02861e533700">XB_NOT_FOUND</a></div><div class="ttdeci">#define XB_NOT_FOUND</div><div class="ttdef"><b>Definition:</b> xbretcod.h:40</div></div>
<div class="ttc" id="axbretcod_8h_html_ac720d5b4ec45bfd606f5865d40816e23"><div class="ttname"><a href="xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23">XB_NO_ERROR</a></div><div class="ttdeci">#define XB_NO_ERROR</div><div class="ttdef"><b>Definition:</b> xbretcod.h:24</div></div>
<div class="ttc" id="axbretcod_8h_html_ae687fc7d872ba0475a8477e4447f9b54"><div class="ttname"><a href="xbretcod_8h.html#ae687fc7d872ba0475a8477e4447f9b54">XB_NO_MEMORY</a></div><div class="ttdeci">#define XB_NO_MEMORY</div><div class="ttdef"><b>Definition:</b> xbretcod.h:25</div></div>
</div><!-- fragment --></div><!-- contents -->
diff --git a/docs/doxygen/html/xblnklstord_8h.html b/docs/doxygen/html/xblnklstord_8h.html
index f68fe19..44e4332 100644
--- a/docs/doxygen/html/xblnklstord_8h.html
+++ b/docs/doxygen/html/xblnklstord_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblnklstord.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblnklstord.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblnklstord_8h_source.html b/docs/doxygen/html/xblnklstord_8h_source.html
index e955255..51c83ec 100644
--- a/docs/doxygen/html/xblnklstord_8h_source.html
+++ b/docs/doxygen/html/xblnklstord_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblnklstord.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblnklstord.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -440,7 +440,7 @@ $(function() {
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
<div class="ttc" id="anamespacexb_html_ab1a750481dd487f0d384aa1d200dff0f"><div class="ttname"><a href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xb::xbBool</a></div><div class="ttdeci">short int xbBool</div><div class="ttdef"><b>Definition:</b> xbtypes.h:24</div></div>
<div class="ttc" id="axbretcod_8h_html_a13e6876470bd34c8c4e5533f115e04eb"><div class="ttname"><a href="xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb">XB_INVALID_NODELINK</a></div><div class="ttdeci">#define XB_INVALID_NODELINK</div><div class="ttdef"><b>Definition:</b> xbretcod.h:28</div></div>
-<div class="ttc" id="axbretcod_8h_html_ac2606659a54111334f5b02861e533700"><div class="ttname"><a href="xbretcod_8h.html#ac2606659a54111334f5b02861e533700">XB_NOT_FOUND</a></div><div class="ttdeci">#define XB_NOT_FOUND</div><div class="ttdef"><b>Definition:</b> xbretcod.h:39</div></div>
+<div class="ttc" id="axbretcod_8h_html_ac2606659a54111334f5b02861e533700"><div class="ttname"><a href="xbretcod_8h.html#ac2606659a54111334f5b02861e533700">XB_NOT_FOUND</a></div><div class="ttdeci">#define XB_NOT_FOUND</div><div class="ttdef"><b>Definition:</b> xbretcod.h:40</div></div>
<div class="ttc" id="axbretcod_8h_html_ac720d5b4ec45bfd606f5865d40816e23"><div class="ttname"><a href="xbretcod_8h.html#ac720d5b4ec45bfd606f5865d40816e23">XB_NO_ERROR</a></div><div class="ttdeci">#define XB_NO_ERROR</div><div class="ttdef"><b>Definition:</b> xbretcod.h:24</div></div>
<div class="ttc" id="axbretcod_8h_html_ad60dbb1862c0c1c2dc0464cfbfd93a34"><div class="ttname"><a href="xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34">XB_KEY_NOT_UNIQUE</a></div><div class="ttdeci">#define XB_KEY_NOT_UNIQUE</div><div class="ttdef"><b>Definition:</b> xbretcod.h:29</div></div>
<div class="ttc" id="axbretcod_8h_html_ae687fc7d872ba0475a8477e4447f9b54"><div class="ttname"><a href="xbretcod_8h.html#ae687fc7d872ba0475a8477e4447f9b54">XB_NO_MEMORY</a></div><div class="ttdeci">#define XB_NO_MEMORY</div><div class="ttdef"><b>Definition:</b> xbretcod.h:25</div></div>
diff --git a/docs/doxygen/html/xblnknod_8h.html b/docs/doxygen/html/xblnknod_8h.html
index bc75c3a..381c054 100644
--- a/docs/doxygen/html/xblnknod_8h.html
+++ b/docs/doxygen/html/xblnknod_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblnknod.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblnknod.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblnknod_8h_source.html b/docs/doxygen/html/xblnknod_8h_source.html
index a366dc3..db7f8d3 100644
--- a/docs/doxygen/html/xblnknod_8h_source.html
+++ b/docs/doxygen/html/xblnknod_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblnknod.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblnknod.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblog_8cpp.html b/docs/doxygen/html/xblog_8cpp.html
index 546a521..5114929 100644
--- a/docs/doxygen/html/xblog_8cpp.html
+++ b/docs/doxygen/html/xblog_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xblog.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xblog.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblog_8h.html b/docs/doxygen/html/xblog_8h.html
index 986b927..b53711a 100644
--- a/docs/doxygen/html/xblog_8h.html
+++ b/docs/doxygen/html/xblog_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblog.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblog.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xblog_8h_source.html b/docs/doxygen/html/xblog_8h_source.html
index 16bdee2..ef5ef49 100644
--- a/docs/doxygen/html/xblog_8h_source.html
+++ b/docs/doxygen/html/xblog_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xblog.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xblog.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbmemo3_8cpp.html b/docs/doxygen/html/xbmemo3_8cpp.html
index a40475e..e1bdf62 100644
--- a/docs/doxygen/html/xbmemo3_8cpp.html
+++ b/docs/doxygen/html/xbmemo3_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbmemo3.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbmemo3.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbmemo4_8cpp.html b/docs/doxygen/html/xbmemo4_8cpp.html
index 034208e..99b2580 100644
--- a/docs/doxygen/html/xbmemo4_8cpp.html
+++ b/docs/doxygen/html/xbmemo4_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbmemo4.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbmemo4.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbmemo_8cpp.html b/docs/doxygen/html/xbmemo_8cpp.html
index e70c07f..706b54a 100644
--- a/docs/doxygen/html/xbmemo_8cpp.html
+++ b/docs/doxygen/html/xbmemo_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbmemo.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbmemo.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbmemo_8h.html b/docs/doxygen/html/xbmemo_8h.html
index d592586..409d3ce 100644
--- a/docs/doxygen/html/xbmemo_8h.html
+++ b/docs/doxygen/html/xbmemo_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbmemo.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbmemo.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbmemo_8h_source.html b/docs/doxygen/html/xbmemo_8h_source.html
index a163c3c..da8fab4 100644
--- a/docs/doxygen/html/xbmemo_8h_source.html
+++ b/docs/doxygen/html/xbmemo_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbmemo.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbmemo.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbretcod_8h.html b/docs/doxygen/html/xbretcod_8h.html
index 7fbc99c..d5ac672 100644
--- a/docs/doxygen/html/xbretcod_8h.html
+++ b/docs/doxygen/html/xbretcod_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbretcod.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbretcod.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -95,6 +95,8 @@ Macros</h2></td></tr>
<tr class="separator:a13e6876470bd34c8c4e5533f115e04eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad60dbb1862c0c1c2dc0464cfbfd93a34"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34">XB_KEY_NOT_UNIQUE</a>&#160;&#160;&#160;-121</td></tr>
<tr class="separator:ad60dbb1862c0c1c2dc0464cfbfd93a34"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa2925f035e3b186d7efa14648ea0e86d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#aa2925f035e3b186d7efa14648ea0e86d">XB_MEMCPY_ERROR</a>&#160;&#160;&#160;-122</td></tr>
+<tr class="separator:aa2925f035e3b186d7efa14648ea0e86d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54303a9677dbd5342233f33dd08c64d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0">XB_FILE_EXISTS</a>&#160;&#160;&#160;-200</td></tr>
<tr class="separator:a54303a9677dbd5342233f33dd08c64d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2ff8301503f446c6a5f6510090e520f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f">XB_ALREADY_OPEN</a>&#160;&#160;&#160;-201</td></tr>
@@ -141,6 +143,10 @@ Macros</h2></td></tr>
<tr class="separator:a18068d0cbe0c7a1b4dd3176220180c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59f1a8a6aca19595c2d1804349a24850"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850">XB_LIMIT_REACHED</a>&#160;&#160;&#160;-222</td></tr>
<tr class="separator:a59f1a8a6aca19595c2d1804349a24850"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aae9241d91cfb37f5d236128b3bce0a4a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#aae9241d91cfb37f5d236128b3bce0a4a">XB_BLOCKREAD_NOT_ENABLED</a>&#160;&#160;&#160;-223</td></tr>
+<tr class="separator:aae9241d91cfb37f5d236128b3bce0a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af532df74147ce2d872f61abfee49c53e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#af532df74147ce2d872f61abfee49c53e">XB_DIRECTORY_ERROR</a>&#160;&#160;&#160;-224</td></tr>
+<tr class="separator:af532df74147ce2d872f61abfee49c53e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79e2588f067d6e236c0e5a2c0728ba9f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f">XB_INVALID_FIELD_TYPE</a>&#160;&#160;&#160;-300</td></tr>
<tr class="separator:a79e2588f067d6e236c0e5a2c0728ba9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09d6c08a44316f551108a74003efd381"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xbretcod_8h.html#a09d6c08a44316f551108a74003efd381">XB_INVALID_FIELD_NO</a>&#160;&#160;&#160;-301</td></tr>
@@ -207,6 +213,20 @@ Macros</h2></td></tr>
</div>
</div>
+<a id="aae9241d91cfb37f5d236128b3bce0a4a" name="aae9241d91cfb37f5d236128b3bce0a4a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aae9241d91cfb37f5d236128b3bce0a4a">&#9670;&nbsp;</a></span>XB_BLOCKREAD_NOT_ENABLED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define XB_BLOCKREAD_NOT_ENABLED&#160;&#160;&#160;-223</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="ade5f3a7cf1467d12761e4e21b5e4200f" name="ade5f3a7cf1467d12761e4e21b5e4200f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade5f3a7cf1467d12761e4e21b5e4200f">&#9670;&nbsp;</a></span>XB_BOF</h2>
@@ -263,6 +283,20 @@ Macros</h2></td></tr>
</div>
</div>
+<a id="af532df74147ce2d872f61abfee49c53e" name="af532df74147ce2d872f61abfee49c53e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af532df74147ce2d872f61abfee49c53e">&#9670;&nbsp;</a></span>XB_DIRECTORY_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define XB_DIRECTORY_ERROR&#160;&#160;&#160;-224</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="ac18036408d10e5eee1bf76cf92352b95" name="ac18036408d10e5eee1bf76cf92352b95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac18036408d10e5eee1bf76cf92352b95">&#9670;&nbsp;</a></span>XB_DUP_TABLE_OR_ALIAS</h2>
@@ -753,6 +787,20 @@ Macros</h2></td></tr>
</div>
</div>
+<a id="aa2925f035e3b186d7efa14648ea0e86d" name="aa2925f035e3b186d7efa14648ea0e86d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa2925f035e3b186d7efa14648ea0e86d">&#9670;&nbsp;</a></span>XB_MEMCPY_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define XB_MEMCPY_ERROR&#160;&#160;&#160;-122</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
<a id="ac720d5b4ec45bfd606f5865d40816e23" name="ac720d5b4ec45bfd606f5865d40816e23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac720d5b4ec45bfd606f5865d40816e23">&#9670;&nbsp;</a></span>XB_NO_ERROR</h2>
diff --git a/docs/doxygen/html/xbretcod_8h_source.html b/docs/doxygen/html/xbretcod_8h_source.html
index af195cb..95cf8c5 100644
--- a/docs/doxygen/html/xbretcod_8h_source.html
+++ b/docs/doxygen/html/xbretcod_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbretcod.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbretcod.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -74,7 +74,7 @@ $(function() {
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">XBase64 Software Library</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
-<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"></span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
@@ -99,71 +99,74 @@ $(function() {
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ac18036408d10e5eee1bf76cf92352b95"> 27</a></span><span class="preprocessor"> #define XB_DUP_TABLE_OR_ALIAS -110 </span><span class="comment">// table manager</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a13e6876470bd34c8c4e5533f115e04eb"> 28</a></span><span class="preprocessor"> #define XB_INVALID_NODELINK -120 </span><span class="comment">// linklist</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ad60dbb1862c0c1c2dc0464cfbfd93a34"> 29</a></span><span class="preprocessor"> #define XB_KEY_NOT_UNIQUE -121 </span><span class="comment">// linklist</span></div>
-<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
-<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0"> 31</a></span><span class="preprocessor"> #define XB_FILE_EXISTS -200 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f"> 32</a></span><span class="preprocessor"> #define XB_ALREADY_OPEN -201 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2"> 33</a></span><span class="preprocessor"> #define XB_DBF_FILE_NOT_OPEN -202 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ad090af330c93111d12f6de35dbb065bc"> 34</a></span><span class="preprocessor"> #define XB_FILE_NOT_FOUND -203 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ab7b9130a5f1df9975cfeaf6241933596"> 35</a></span><span class="preprocessor"> #define XB_FILE_TYPE_NOT_SUPPORTED -204 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a373f30b2efcbbab9f6d060fb3fe8cba3"> 36</a></span><span class="preprocessor"> #define XB_RENAME_ERROR -205 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a418c047353bc683d0fd6ecbbdd5b7885"> 37</a></span><span class="preprocessor"> #define XB_INVALID_OBJECT -206 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a9474b400f647bdefbbb07e5177e8d7a1"> 38</a></span><span class="preprocessor"> #define XB_NOT_OPEN -207 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ac2606659a54111334f5b02861e533700"> 39</a></span><span class="preprocessor"> #define XB_NOT_FOUND -208 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aaab55236993a1d3acb29206252a904c8"> 40</a></span><span class="preprocessor"> #define XB_OPEN_ERROR -209 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a030684d5541cf6127a76d81b0684b235"> 41</a></span><span class="preprocessor"> #define XB_CLOSE_ERROR -210 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a0455ad8719e153b08ec68b10c81e9f41"> 42</a></span><span class="preprocessor"> #define XB_SEEK_ERROR -211 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#adbd40585db8bb748d191f94a33bac710"> 43</a></span><span class="preprocessor"> #define XB_READ_ERROR -212 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aef34ebe6726057f805d6063130280549"> 44</a></span><span class="preprocessor"> #define XB_WRITE_ERROR -213 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a8b47031e90c3f86306c7058e4490d3b7"> 45</a></span><span class="preprocessor"> #define XB_EOF -214 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f"> 46</a></span><span class="preprocessor"> #define XB_BOF -215 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a1bd22921612389c37f6b2eac438c62c5"> 47</a></span><span class="preprocessor"> #define XB_INVALID_BLOCK_SIZE -216 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a4e13b529b486c43ca600ce7d8ddbf3c2"> 48</a></span><span class="preprocessor"> #define XB_INVALID_BLOCK_NO -217 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a0fd212f912b2e62700a66bae95bd73a1"> 49</a></span><span class="preprocessor"> #define XB_INVALID_RECORD -218 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2"> 50</a></span><span class="preprocessor"> #define XB_DELETE_FAILED -219 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a53891c95a78483704d2a8e14c4499f92"> 51</a></span><span class="preprocessor"> #define XB_INVALID_TABLE_NAME -220 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29"> 52</a></span><span class="preprocessor"> #define XB_EMPTY -221 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850"> 53</a></span><span class="preprocessor"> #define XB_LIMIT_REACHED -222 </span><span class="comment">// file</span></div>
-<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
-<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f"> 55</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_TYPE -300 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a09d6c08a44316f551108a74003efd381"> 56</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_NO -301 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#afb40bbed323ecb369dd430a2e1242f9a"> 57</a></span><span class="preprocessor"> #define XB_INVALID_DATA -302 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a59403978784130834cf39434cb73f96e"> 58</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_NAME -303 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a187c50745f51bfe4aa6f70a92f16c59f"> 59</a></span><span class="preprocessor"> #define XB_INVALID_MEMO_FIELD -304 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a34180b2e2bd350ba2ebcdd1335e15d7e"> 60</a></span><span class="preprocessor"> #define XB_INVALID_FIELD -305 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a7bd322c0efbba17f68ccccd6cf624411"> 61</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_LEN -306 </span><span class="comment">// field</span></div>
-<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a702475500357a27b8a34463be3e11925"> 62</a></span><span class="preprocessor"> #define XB_INVALID_DATE -307 </span><span class="comment">// date field</span></div>
-<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
-<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ab45735e63c208eb7e6d6df31fd527aec"> 64</a></span><span class="preprocessor"> #define XB_INVALID_LOCK_OPTION -400 </span><span class="comment">// lock</span></div>
-<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1"> 65</a></span><span class="preprocessor"> #define XB_LOCK_FAILED -401 </span><span class="comment">// lock</span></div>
-<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#af6aaf779fddecca521d785666f6dc56b"> 66</a></span><span class="preprocessor"> #define XB_TABLE_NOT_LOCKED -402 </span><span class="comment">// lock - need table locked for operation</span></div>
-<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
-<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aec713cac2b03a0d536a2d16336ae7c0b"> 68</a></span><span class="preprocessor"> #define XB_PARSE_ERROR -500 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a2b7e5e440dbcf5e6dc885b24dbe28742"> 69</a></span><span class="preprocessor"> #define XB_INVALID_FUNCTION -501 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a4cedf96581c9cbc9c14d07494143702d"> 70</a></span><span class="preprocessor"> #define XB_INVALID_PARM -502 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#adc4b24bfffa202f8df25409894e547b9"> 71</a></span><span class="preprocessor"> #define XB_INCONSISTENT_PARM_LENS -503 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#af141ec58b7ca7360e0be6c61d015ea74"> 72</a></span><span class="preprocessor"> #define XB_INCOMPATIBLE_OPERANDS -504 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aff5646a6b0884ff81004de6961473ea6"> 73</a></span><span class="preprocessor"> #define XB_UNBALANCED_PARENS -505 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aedfa20a6c4eb9ba3063ba56be8280eac"> 74</a></span><span class="preprocessor"> #define XB_UNBALANCED_QUOTES -506 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a54db562c3cae97581812b4fccd52b71a"> 75</a></span><span class="preprocessor"> #define XB_INVALID_EXPRESSION -507 </span><span class="comment">// expression</span></div>
-<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
-<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aec2c0ac2bd62e0329ef130e4fbda39f8"> 77</a></span><span class="preprocessor"> #define XB_INVALID_KEYNO -600 </span><span class="comment">// index</span></div>
-<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#acd175ef0541e2cad424791bd87619dd4"> 78</a></span><span class="preprocessor"> #define XB_INVALID_INDEX -601 </span><span class="comment">// index file error</span></div>
-<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a176d917912d3433f065483f905a4c50a"> 79</a></span><span class="preprocessor"> #define XB_INVALID_TAG -602 </span><span class="comment">// invalid index tag name, must be &lt;= 10 bytes</span></div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ad0aba12b5ae2137f8d6abd28b47f95f0"> 80</a></span><span class="preprocessor"> #define XB_INVALID_PAGE -603 </span><span class="comment">// invalid index page</span></div>
-<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
-<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
-<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a5db3a90f215534143bdde81253729c7f"> 83</a></span><span class="preprocessor"> #define XB_SYNTAX_ERROR -700 </span><span class="comment">// sql syntax error</span></div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aa2925f035e3b186d7efa14648ea0e86d"> 30</a></span><span class="preprocessor"> #define XB_MEMCPY_ERROR -122 </span><span class="comment">// memcpy failure</span></div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a54303a9677dbd5342233f33dd08c64d0"> 32</a></span><span class="preprocessor"> #define XB_FILE_EXISTS -200 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aa2ff8301503f446c6a5f6510090e520f"> 33</a></span><span class="preprocessor"> #define XB_ALREADY_OPEN -201 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a8104510b347c87998eadd0b27201e3c2"> 34</a></span><span class="preprocessor"> #define XB_DBF_FILE_NOT_OPEN -202 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ad090af330c93111d12f6de35dbb065bc"> 35</a></span><span class="preprocessor"> #define XB_FILE_NOT_FOUND -203 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ab7b9130a5f1df9975cfeaf6241933596"> 36</a></span><span class="preprocessor"> #define XB_FILE_TYPE_NOT_SUPPORTED -204 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a373f30b2efcbbab9f6d060fb3fe8cba3"> 37</a></span><span class="preprocessor"> #define XB_RENAME_ERROR -205 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a418c047353bc683d0fd6ecbbdd5b7885"> 38</a></span><span class="preprocessor"> #define XB_INVALID_OBJECT -206 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a9474b400f647bdefbbb07e5177e8d7a1"> 39</a></span><span class="preprocessor"> #define XB_NOT_OPEN -207 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ac2606659a54111334f5b02861e533700"> 40</a></span><span class="preprocessor"> #define XB_NOT_FOUND -208 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aaab55236993a1d3acb29206252a904c8"> 41</a></span><span class="preprocessor"> #define XB_OPEN_ERROR -209 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a030684d5541cf6127a76d81b0684b235"> 42</a></span><span class="preprocessor"> #define XB_CLOSE_ERROR -210 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a0455ad8719e153b08ec68b10c81e9f41"> 43</a></span><span class="preprocessor"> #define XB_SEEK_ERROR -211 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#adbd40585db8bb748d191f94a33bac710"> 44</a></span><span class="preprocessor"> #define XB_READ_ERROR -212 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aef34ebe6726057f805d6063130280549"> 45</a></span><span class="preprocessor"> #define XB_WRITE_ERROR -213 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a8b47031e90c3f86306c7058e4490d3b7"> 46</a></span><span class="preprocessor"> #define XB_EOF -214 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ade5f3a7cf1467d12761e4e21b5e4200f"> 47</a></span><span class="preprocessor"> #define XB_BOF -215 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a1bd22921612389c37f6b2eac438c62c5"> 48</a></span><span class="preprocessor"> #define XB_INVALID_BLOCK_SIZE -216 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a4e13b529b486c43ca600ce7d8ddbf3c2"> 49</a></span><span class="preprocessor"> #define XB_INVALID_BLOCK_NO -217 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a0fd212f912b2e62700a66bae95bd73a1"> 50</a></span><span class="preprocessor"> #define XB_INVALID_RECORD -218 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ada15513935d5ede9216f07c0438f34d2"> 51</a></span><span class="preprocessor"> #define XB_DELETE_FAILED -219 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a53891c95a78483704d2a8e14c4499f92"> 52</a></span><span class="preprocessor"> #define XB_INVALID_TABLE_NAME -220 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a18068d0cbe0c7a1b4dd3176220180c29"> 53</a></span><span class="preprocessor"> #define XB_EMPTY -221 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a59f1a8a6aca19595c2d1804349a24850"> 54</a></span><span class="preprocessor"> #define XB_LIMIT_REACHED -222 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aae9241d91cfb37f5d236128b3bce0a4a"> 55</a></span><span class="preprocessor"> #define XB_BLOCKREAD_NOT_ENABLED -223 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#af532df74147ce2d872f61abfee49c53e"> 56</a></span><span class="preprocessor"> #define XB_DIRECTORY_ERROR -224 </span><span class="comment">// file</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a79e2588f067d6e236c0e5a2c0728ba9f"> 58</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_TYPE -300 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a09d6c08a44316f551108a74003efd381"> 59</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_NO -301 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#afb40bbed323ecb369dd430a2e1242f9a"> 60</a></span><span class="preprocessor"> #define XB_INVALID_DATA -302 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a59403978784130834cf39434cb73f96e"> 61</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_NAME -303 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a187c50745f51bfe4aa6f70a92f16c59f"> 62</a></span><span class="preprocessor"> #define XB_INVALID_MEMO_FIELD -304 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a34180b2e2bd350ba2ebcdd1335e15d7e"> 63</a></span><span class="preprocessor"> #define XB_INVALID_FIELD -305 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a7bd322c0efbba17f68ccccd6cf624411"> 64</a></span><span class="preprocessor"> #define XB_INVALID_FIELD_LEN -306 </span><span class="comment">// field</span></div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a702475500357a27b8a34463be3e11925"> 65</a></span><span class="preprocessor"> #define XB_INVALID_DATE -307 </span><span class="comment">// date field</span></div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ab45735e63c208eb7e6d6df31fd527aec"> 67</a></span><span class="preprocessor"> #define XB_INVALID_LOCK_OPTION -400 </span><span class="comment">// lock</span></div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a001e24b39e0f155fb1e892f5b1b9cff1"> 68</a></span><span class="preprocessor"> #define XB_LOCK_FAILED -401 </span><span class="comment">// lock</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#af6aaf779fddecca521d785666f6dc56b"> 69</a></span><span class="preprocessor"> #define XB_TABLE_NOT_LOCKED -402 </span><span class="comment">// lock - need table locked for operation</span></div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aec713cac2b03a0d536a2d16336ae7c0b"> 71</a></span><span class="preprocessor"> #define XB_PARSE_ERROR -500 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a2b7e5e440dbcf5e6dc885b24dbe28742"> 72</a></span><span class="preprocessor"> #define XB_INVALID_FUNCTION -501 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a4cedf96581c9cbc9c14d07494143702d"> 73</a></span><span class="preprocessor"> #define XB_INVALID_PARM -502 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#adc4b24bfffa202f8df25409894e547b9"> 74</a></span><span class="preprocessor"> #define XB_INCONSISTENT_PARM_LENS -503 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#af141ec58b7ca7360e0be6c61d015ea74"> 75</a></span><span class="preprocessor"> #define XB_INCOMPATIBLE_OPERANDS -504 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aff5646a6b0884ff81004de6961473ea6"> 76</a></span><span class="preprocessor"> #define XB_UNBALANCED_PARENS -505 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aedfa20a6c4eb9ba3063ba56be8280eac"> 77</a></span><span class="preprocessor"> #define XB_UNBALANCED_QUOTES -506 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a54db562c3cae97581812b4fccd52b71a"> 78</a></span><span class="preprocessor"> #define XB_INVALID_EXPRESSION -507 </span><span class="comment">// expression</span></div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#aec2c0ac2bd62e0329ef130e4fbda39f8"> 80</a></span><span class="preprocessor"> #define XB_INVALID_KEYNO -600 </span><span class="comment">// index</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#acd175ef0541e2cad424791bd87619dd4"> 81</a></span><span class="preprocessor"> #define XB_INVALID_INDEX -601 </span><span class="comment">// index file error</span></div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a176d917912d3433f065483f905a4c50a"> 82</a></span><span class="preprocessor"> #define XB_INVALID_TAG -602 </span><span class="comment">// invalid index tag name, must be &lt;= 10 bytes</span></div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#ad0aba12b5ae2137f8d6abd28b47f95f0"> 83</a></span><span class="preprocessor"> #define XB_INVALID_PAGE -603 </span><span class="comment">// invalid index page</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
-<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d"> 86</a></span><span class="preprocessor"> #define XB_MAX_ERROR_NO -999</span></div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a5db3a90f215534143bdde81253729c7f"> 86</a></span><span class="preprocessor"> #define XB_SYNTAX_ERROR -700 </span><span class="comment">// sql syntax error</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
-<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment">/* when updating this table, also need to update messages in xbssv.cpp */</span></div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="xbretcod_8h.html#a299419a9c80e000b74bf97a2d24d6a3d"> 89</a></span><span class="preprocessor"> #define XB_MAX_ERROR_NO -999</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
-<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span>} <span class="comment">/* namespace */</span></div>
-<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_RETCODES_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment">/* when updating this table, also need to update messages in xbssv.cpp */</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span>} <span class="comment">/* namespace */</span></div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_RETCODES_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
diff --git a/docs/doxygen/html/xbselect_8cpp.html b/docs/doxygen/html/xbselect_8cpp.html
new file mode 100644
index 0000000..e21f0d9
--- /dev/null
+++ b/docs/doxygen/html/xbselect_8cpp.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbselect.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_25b94c3afce00ed38231227d8141f932.html">sql</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">xbselect.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xbset_8cpp.html b/docs/doxygen/html/xbset_8cpp.html
index 6d76230..7b8c360 100644
--- a/docs/doxygen/html/xbset_8cpp.html
+++ b/docs/doxygen/html/xbset_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbset.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbset.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbsql_8cpp.html b/docs/doxygen/html/xbsql_8cpp.html
index b3dff71..334b5f0 100644
--- a/docs/doxygen/html/xbsql_8cpp.html
+++ b/docs/doxygen/html/xbsql_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/sql/xbsql.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbsql.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbsql_8h.html b/docs/doxygen/html/xbsql_8h.html
index 33f8b86..bae3261 100644
--- a/docs/doxygen/html/xbsql_8h.html
+++ b/docs/doxygen/html/xbsql_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbsql.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbsql.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbsql_8h_source.html b/docs/doxygen/html/xbsql_8h_source.html
index 4f38716..d36d1b7 100644
--- a/docs/doxygen/html/xbsql_8h_source.html
+++ b/docs/doxygen/html/xbsql_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbsql.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbsql.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -101,53 +101,139 @@ $(function() {
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacexb.html">xb</a>{</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
-<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">class </span>XBDLLEXPORT xbSql : <span class="keyword">public</span> xbSsv {</div>
-<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// xbSql();</span></div>
-<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> xbSql( <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *x );</div>
-<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> ~xbSql();</div>
-<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
-<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> xbInt16 ExecuteNonQuery( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *GetXbasePtr() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
-<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> </div>
-<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">struct </span>XBDLLEXPORT xbSqlFld{</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">char</span> cType; <span class="comment">// F - Database field</span></div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// L - Literal</span></div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// E - Expression</span></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> xbInt16 iFldNo; <span class="comment">// Field number if db field</span></div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> xbExp * pExp; <span class="comment">// If cType=E, pointer to parsed expression</span></div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> xbString sFldAlias; <span class="comment">// Alias name for query display</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> xbSqlFld * Next; <span class="comment">// Next field in list</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span>};</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="keyword">class </span>xbStmt;</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
-<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> xbInt16 SqlAlterTable( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="keyword">struct </span>XBDLLEXPORT xbTblJoin { <span class="comment">// structure for defining joined tables in the query</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
-<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> xbInt16 SqlCreateTable( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
-<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xbInt16 SqlDelete( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> </div>
-<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> xbInt16 SqlDropTable( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
-<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
-<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
-<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> xbInt16 SqlCreateIndex( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> xbInt16 SqlDropIndex( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> xbString sTableName;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> xbString sAlias;</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xbString sJoinExp; <span class="comment">// table join expression</span></div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> *pDbf; <span class="comment">// pointer the the dbf structure for this table</span></div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> xbTag *pTag; <span class="comment">// pointer to relevant tag for this table, null for record order</span></div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> xbExp *pLinkExp; <span class="comment">// pointer to parsed linkage expression</span></div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">char</span> cJoinType; <span class="comment">// M - Master</span></div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// L - Left or Full Left</span></div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// R - Right or Full Right</span></div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// I - Inner</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// O - Outer or Full Outer Outer</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
-<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment">// xbInt16 SqlCreateView( const xbString &amp;sCmdLine );</span></div>
-<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment">// xbInt16 SqlDropView( const xbString &amp;sCmdLine );</span></div>
-<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">// xbInt16 SqlUpdate( const xbString &amp;sCmdLine );</span></div>
-<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment">// xbInt16 SqlSelect( const xbString &amp;sCmdLine );</span></div>
-<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
-<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">void</span> SqlHelp() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> xbInt16 SqlInsert( <span class="keyword">const</span> xbString &amp;sCmLine );</div>
-<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> xbInt16 SqlSet( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> xbInt16 SqlUse( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
-<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
-<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *xbase;</div>
-<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> xbUda uda;</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> xbTblJoin *pMaster; <span class="comment">// pointer to master table, null if this is the primary master</span></div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> xbLinkList&lt;xbTblJoin *&gt; llSubList; <span class="comment">// linked list of subordinate tables</span></div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment">// xbStmt *pSubQuery; // pointer to sub query</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> xbTblJoin *next; <span class="comment">// next tbl</span></div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span>};</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="keyword">class </span>XBDLLEXPORT xbStmt : <span class="keyword">public</span> xbSsv{</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> xbStmt( <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *x );</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> ~xbStmt();</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
-<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span>};</div>
-<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
-<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span>} <span class="comment">/* namespace xb */</span></div>
-<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#endif </span><span class="comment">/* XB_SQL_SUPPORT */</span><span class="preprocessor"></span></div>
-<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_XBSQL_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="preprocessor"> #ifdef XB_DEBUG_SUPPORT</span></div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> xbInt16 DumpStmtInternals();</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> xbInt16 Test();</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> xbInt16 ExecuteQuery( <span class="keyword">const</span> xbString &amp;sCmdLine ); </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="comment">// xbInt16 FetchFirst();</span></div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span><span class="comment">// xbInt16 FetchNext();</span></div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment">// xbInt16 FetchPrev();</span></div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span><span class="comment">// xbInt16 FetchLast();</span></div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment">// xbString &amp;GetField( const xbString sFldName );</span></div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> xbInt16 AddQryTbl( <span class="keyword">const</span> xbString &amp;sTable, <span class="keyword">const</span> xbString &amp;sAlias, <span class="keyword">const</span> xbString &amp;sExpression, <span class="keyword">const</span> <span class="keywordtype">char</span> cJoinType );</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> xbInt16 CvtSqlExp2DbaseExp( <span class="keyword">const</span> xbString &amp;sExpIn, xbString &amp;sExpOut );</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> xbInt16 GetNextFromSeg( <span class="keyword">const</span> xbString &amp;sLineIn, xbString &amp;sFromSegOut );</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> xbUInt32 GetNextToken( <span class="keyword">const</span> xbString &amp;sCmdLineIn, xbString &amp;sTokenOut, xbUInt32 ulStartPos );</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> xbInt16 GetParenCnt( <span class="keyword">const</span> xbString &amp;sToken );</div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> xbInt16 ParseFromStmt( <span class="keyword">const</span> xbString &amp;sFromLine );</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> xbInt16 ParseStmt( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> xbInt16 ProcessFromSeg( <span class="keyword">const</span> xbString &amp;sFromStmtSeg );</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> xbInt16 UpdateJoinList( <span class="keywordtype">char</span> cType, <span class="keyword">const</span> xbString &amp;sTableName, <span class="keyword">const</span> xbString &amp;sAlias, <span class="keyword">const</span> xbString &amp;sExp, <a class="code hl_variable" href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xbDbf</a> *d, xbExp *e ); <span class="comment">//, xbTag *t);</span></div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *xbase; <span class="comment">// pointer to xbase structure</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> xbTblJoin * pTblList;</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> xbSqlFld *fl; <span class="comment">// field list in sql select statement</span></div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> xbString sStmt; <span class="comment">// complete query statment</span></div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> xbString sFields; <span class="comment">// list of fields</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> xbString sFrom; <span class="comment">// from statment</span></div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> xbString sWhere; <span class="comment">// where clause</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> xbString sOrderBy; <span class="comment">// sort order</span></div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> xbString sGroupBy; <span class="comment">// group by</span></div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> xbString sHaving; <span class="comment">// having</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> xbUInt32 ulFromPos;</div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> xbUInt32 ulWherePos;</div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> xbUInt32 ulOrderByPos;</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> xbUInt32 ulGroupByPos;</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> xbUInt32 ulHavingPos;</div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>};</div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="keyword">class </span>XBDLLEXPORT xbSql : <span class="keyword">public</span> xbSsv {</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// xbSql();</span></div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> xbSql( <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *x );</div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> ~xbSql();</div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> </div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> xbInt16 ExecuteNonQuery( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *GetXbasePtr() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> </div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> xbInt16 SqlAlterTable( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> xbInt16 SqlCreateTable( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> xbInt16 SqlDelete( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> xbInt16 SqlDropTable( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="preprocessor"> #ifdef XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> xbInt16 SqlCreateIndex( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> xbInt16 SqlDropIndex( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="preprocessor"> #endif </span><span class="comment">// XB_INDEX_SUPPORT</span></div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">// xbInt16 SqlCreateView( const xbString &amp;sCmdLine );</span></div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment">// xbInt16 SqlDropView( const xbString &amp;sCmdLine );</span></div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment">// xbInt16 SqlUpdate( const xbString &amp;sCmdLine );</span></div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment">// xbInt16 SqlSelect( const xbString &amp;sCmdLine );</span></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">void</span> SqlHelp() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> xbInt16 SqlInsert( <span class="keyword">const</span> xbString &amp;sCmLine );</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> xbInt16 SqlSet( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> xbInt16 SqlUse( <span class="keyword">const</span> xbString &amp;sCmdLine );</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_variable" href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xbXBase</a> *xbase;</div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> xbUda uda;</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span>};</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span>} <span class="comment">/* namespace xb */</span></div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="preprocessor">#endif </span><span class="comment">/* XB_SQL_SUPPORT */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_XBSQL_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
<div class="ttc" id="anamespacexb_html_a97858ddeb1c4b0100f3edc1a46d3a8b0"><div class="ttname"><a href="namespacexb.html#a97858ddeb1c4b0100f3edc1a46d3a8b0">xb::xbXBase</a></div><div class="ttdeci">class XBDLLEXPORT xbXBase</div><div class="ttdef"><b>Definition:</b> xbssv.h:27</div></div>
+<div class="ttc" id="anamespacexb_html_ab2eae4b4732466698a7fdd89d77ba53b"><div class="ttname"><a href="namespacexb.html#ab2eae4b4732466698a7fdd89d77ba53b">xb::xbDbf</a></div><div class="ttdeci">class XBDLLEXPORT xbDbf</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:28</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xbssv_8cpp.html b/docs/doxygen/html/xbssv_8cpp.html
index 4473df1..ada7749 100644
--- a/docs/doxygen/html/xbssv_8cpp.html
+++ b/docs/doxygen/html/xbssv_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbssv.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbssv.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbssv_8h.html b/docs/doxygen/html/xbssv_8h.html
index 9f2e09a..56dcc9a 100644
--- a/docs/doxygen/html/xbssv_8h.html
+++ b/docs/doxygen/html/xbssv_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbssv.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbssv.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbssv_8h_source.html b/docs/doxygen/html/xbssv_8h_source.html
index e5c99fd..6a4fc59 100644
--- a/docs/doxygen/html/xbssv_8h_source.html
+++ b/docs/doxygen/html/xbssv_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbssv.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbssv.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -74,7 +74,7 @@ $(function() {
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">XBase64 Software Library</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
-<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"></span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
@@ -136,104 +136,115 @@ $(function() {
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetDefaultAutoCommit () <span class="keyword">const</span>;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> SetDefaultAutoCommit ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit );</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
-<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetDefaultLogDirectory () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetDefaultLogFileName () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">void</span> SetDefaultLogDirectory ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sDefaultLogDirectory );</div>
-<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
-<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetMultiUser () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <span class="keywordtype">void</span> SetMultiUser ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bMultiUser );</div>
-<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
-<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span><span class="preprocessor"> #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)</span></div>
-<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> xbInt16 GetUniqueKeyOpt () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );</div>
-<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
-<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> xbInt16 GetDefaultLockRetries () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">void</span> SetDefaultLockRetries ( xbInt16 iRetryCount );</div>
-<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> xbInt32 GetDefaultLockWait () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> SetDefaultLockWait ( xbInt32 lRetryWait );</div>
-<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> xbInt16 GetDefaultLockFlavor () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> SetDefaultLockFlavor ( xbInt16 iLockFlavor );</div>
-<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetDefaultAutoLock () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">void</span> SetDefaultAutoLock ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bAutoLock );</div>
-<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">void</span> EnableDefaultAutoLock ();</div>
-<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">void</span> DisableDefaultAutoLock ();</div>
-<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
-<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="preprocessor"> #ifdef XB_MDX_SUPPORT</span></div>
-<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> xbInt16 GetCreateMdxBlockSize() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );</div>
-<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
-<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">void</span> GetHomeDir ( <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sHomeDirOut );</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetLogDirectory () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; GetLogFileName () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">void</span> SetLogDirectory ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sLogDirectory );</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetMultiUser () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">void</span> SetMultiUser ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bMultiUser );</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="preprocessor"> #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> xbInt16 GetUniqueKeyOpt () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="preprocessor"> #endif </span><span class="comment">// (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor"> #ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> xbInt16 GetDefaultLockRetries () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> SetDefaultLockRetries ( xbInt16 iRetryCount );</div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> xbInt32 GetDefaultLockWait () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> SetDefaultLockWait ( xbInt32 lRetryWait );</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> xbInt16 GetDefaultLockFlavor () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">void</span> SetDefaultLockFlavor ( xbInt16 iLockFlavor );</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> GetDefaultAutoLock () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">void</span> SetDefaultAutoLock ( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bAutoLock );</div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">void</span> EnableDefaultAutoLock ();</div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">void</span> DisableDefaultAutoLock ();</div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="preprocessor"> #endif </span><span class="comment">// XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor"> #ifdef XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> xbInt16 GetCreateMdxBlockSize() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );</div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor"> #endif </span><span class="comment">// XB_MDX_SUPPORT</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
-<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">void</span> SetEndianType ();</div>
-<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
-<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="classxb_1_1xbSsv.html#a5849e813f5e8e1cd180f0366637adbf3"> 114</a></span> <span class="keyword">static</span> xbInt16 <a class="code hl_variable" href="classxb_1_1xbSsv.html#a5849e813f5e8e1cd180f0366637adbf3">iEndianType</a>; <span class="comment">// B=Big Endian L=Little Endian</span></div>
-<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"><a class="line" href="classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da"> 115</a></span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> <a class="code hl_variable" href="classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da">sNullString</a>; <span class="comment">// Null String</span></div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor"> #ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> xbUInt32 GetDefaultBlockReadSize() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="keywordtype">void</span> SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize );</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor"> #endif </span><span class="comment">// XB_BLOCKREAD_SUPPORT</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
-<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">protected</span>:</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
-<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDefaultDateFormat;</div>
-<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDataDirectory; <span class="comment">//Data file directory</span></div>
-<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
-<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #ifdef XB_LOGGING_SUPPORT</span></div>
-<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDefaultLogDirectory; <span class="comment">//Default location to store log files</span></div>
-<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDefaultLogFileName; <span class="comment">//Default LogFileName</span></div>
-<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">void</span> SetEndianType ();</div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="classxb_1_1xbSsv.html#a5849e813f5e8e1cd180f0366637adbf3"> 122</a></span> <span class="keyword">static</span> xbInt16 <a class="code hl_variable" href="classxb_1_1xbSsv.html#a5849e813f5e8e1cd180f0366637adbf3">iEndianType</a>; <span class="comment">// B=Big Endian L=Little Endian</span></div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da"> 123</a></span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> <a class="code hl_variable" href="classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da">sNullString</a>; <span class="comment">// Null String</span></div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
-<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">static</span> xbInt16 iDefaultFileVersion; <span class="comment">// 3 = DBase 3</span></div>
-<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// 4 = DBase 4</span></div>
-<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="comment">// default version used in CreateTable command</span></div>
-<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// can be over ridden at the Xbase level, or table level</span></div>
-<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// Different versions can be open simultaneously</span></div>
-<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit; <span class="comment">// Default dbf auto commit switch</span></div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDefaultDateFormat;</div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sDataDirectory; <span class="comment">//Data file directory</span></div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="preprocessor"> #ifdef XB_LOGGING_SUPPORT</span></div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sLogDirectory; <span class="comment">//Default location to store log files</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">static</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> sLogFileName; <span class="comment">//Default LogFileName</span></div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
-<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bMultiUser; <span class="comment">// True if multi user mode is turned on</span></div>
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// Turn this off for better performance in single user mode</span></div>
-<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// This needs to be turned on or off before any data tables are opened</span></div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// turning this on after tables are opened, can result in out of date</span></div>
-<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// file buffers if multiple users are sharing the files</span></div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keyword">static</span> xbInt16 iDefaultFileVersion; <span class="comment">// 3 = DBase 3</span></div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// 4 = DBase 4</span></div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// default version used in CreateTable command</span></div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// can be over ridden at the Xbase level, or table level</span></div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// Different versions can be open simultaneously</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
-<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="preprocessor">#ifdef XB_LOCKING_SUPPORT</span></div>
-<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="keyword">static</span> xbInt32 lDefaultLockWait; <span class="comment">// Number of milliseconds between lock retries</span></div>
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">static</span> xbInt16 iDefaultLockRetries; <span class="comment">// Number of times to retry a lock before conceding</span></div>
-<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">static</span> xbInt16 bDefaultAutoLock; <span class="comment">// Autolocking enabled?</span></div>
-<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keyword">static</span> xbInt16 iDefaultLockFlavor; <span class="comment">// 1 = DBase</span></div>
-<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// 2 = Clipper - not developed yet</span></div>
-<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// 3 = FoxPro - not developed yet</span></div>
-<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// 9 = Xbase64 - not developed yet</span></div>
-<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
-<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="preprocessor">#if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)</span></div>
-<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="keyword">static</span> xbInt16 iUniqueKeyOpt;</div>
-<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
-<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// is one of:</span></div>
-<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// XB_HALT_ON_DUPKEY</span></div>
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// XB_EMULATE_DBASE</span></div>
-<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
-<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bDefaultAutoCommit; <span class="comment">// Default dbf auto commit switch</span></div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">static</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bMultiUser; <span class="comment">// True if multi user mode is turned on</span></div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// Turn this off for better performance in single user mode</span></div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// This needs to be turned on or off before any data tables are opened</span></div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// turning this on after tables are opened, can result in out of date</span></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// file buffers if multiple users are sharing the files</span></div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor">#ifdef XB_LOCKING_SUPPORT</span></div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">static</span> xbInt32 lDefaultLockWait; <span class="comment">// Number of milliseconds between lock retries</span></div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">static</span> xbInt16 iDefaultLockRetries; <span class="comment">// Number of times to retry a lock before conceding</span></div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keyword">static</span> xbInt16 bDefaultAutoLock; <span class="comment">// Autolocking enabled?</span></div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keyword">static</span> xbInt16 iDefaultLockFlavor; <span class="comment">// 1 = DBase</span></div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// 2 = Clipper - not developed yet</span></div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// 3 = FoxPro - not developed yet</span></div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// 9 = Xbase64 - not developed yet</span></div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span><span class="preprocessor">#if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)</span></div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">static</span> xbInt16 iUniqueKeyOpt;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
-<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor">#ifdef XB_MDX_SUPPORT</span></div>
-<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="keyword">static</span> xbInt16 iCreateMdxBlockSize; <span class="comment">// System level Mdx Block Size</span></div>
-<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="preprocessor">#endif </span><span class="comment">// XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="comment">// is one of:</span></div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// XB_HALT_ON_DUPKEY</span></div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// XB_EMULATE_DBASE</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
-<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span>};</div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span>} <span class="comment">/* namespace xb */</span></div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_XBSSV_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor">#ifdef XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keyword">static</span> xbInt16 iCreateMdxBlockSize; <span class="comment">// System level Mdx Block Size</span></div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor">#endif </span><span class="comment">// XB_MDX_SUPPORT</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor">#ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keyword">static</span> xbUInt32 ulDefaultBlockReadSize;</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="preprocessor">#endif </span><span class="comment">// XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> </div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span>};</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span>} <span class="comment">/* namespace xb */</span></div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_XBSSV_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassxb_1_1xbSsv_html"><div class="ttname"><a href="classxb_1_1xbSsv.html">xb::xbSsv</a></div><div class="ttdoc">Class for handling shared system variables.</div><div class="ttdef"><b>Definition:</b> xbssv.h:59</div></div>
-<div class="ttc" id="aclassxb_1_1xbSsv_html_a5849e813f5e8e1cd180f0366637adbf3"><div class="ttname"><a href="classxb_1_1xbSsv.html#a5849e813f5e8e1cd180f0366637adbf3">xb::xbSsv::iEndianType</a></div><div class="ttdeci">static xbInt16 iEndianType</div><div class="ttdef"><b>Definition:</b> xbssv.h:114</div></div>
-<div class="ttc" id="aclassxb_1_1xbSsv_html_a9dec3164c3b264882df634915ecf21da"><div class="ttname"><a href="classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da">xb::xbSsv::sNullString</a></div><div class="ttdeci">static xbString sNullString</div><div class="ttdef"><b>Definition:</b> xbssv.h:115</div></div>
+<div class="ttc" id="aclassxb_1_1xbSsv_html_a5849e813f5e8e1cd180f0366637adbf3"><div class="ttname"><a href="classxb_1_1xbSsv.html#a5849e813f5e8e1cd180f0366637adbf3">xb::xbSsv::iEndianType</a></div><div class="ttdeci">static xbInt16 iEndianType</div><div class="ttdef"><b>Definition:</b> xbssv.h:122</div></div>
+<div class="ttc" id="aclassxb_1_1xbSsv_html_a9dec3164c3b264882df634915ecf21da"><div class="ttname"><a href="classxb_1_1xbSsv.html#a9dec3164c3b264882df634915ecf21da">xb::xbSsv::sNullString</a></div><div class="ttdeci">static xbString sNullString</div><div class="ttdef"><b>Definition:</b> xbssv.h:123</div></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
<div class="ttc" id="aclassxb_1_1xbXBase_html"><div class="ttname"><a href="classxb_1_1xbXBase.html">xb::xbXBase</a></div><div class="ttdoc">xbXbase class.</div><div class="ttdef"><b>Definition:</b> xbxbase.h:123</div></div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
diff --git a/docs/doxygen/html/xbstmt_8cpp.html b/docs/doxygen/html/xbstmt_8cpp.html
new file mode 100644
index 0000000..508269f
--- /dev/null
+++ b/docs/doxygen/html/xbstmt_8cpp.html
@@ -0,0 +1,80 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.9.3"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/sql/xbstmt.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+ <td id="projectalign">
+ <div id="projectname">Xbase64<span id="projectnumber">&#160;4.0.1</span>
+ </div>
+ <div id="projectbrief">C++ Library for handling Xbase (DBF) format type files</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.3 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_25b94c3afce00ed38231227d8141f932.html">sql</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">xbstmt.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="xbase_8h_source.html">xbase.h</a>&quot;</code><br />
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.3
+</small></address>
+</body>
+</html>
diff --git a/docs/doxygen/html/xbstring_8cpp.html b/docs/doxygen/html/xbstring_8cpp.html
index 79fb588..4683451 100644
--- a/docs/doxygen/html/xbstring_8cpp.html
+++ b/docs/doxygen/html/xbstring_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbstring.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbstring.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbstring_8h.html b/docs/doxygen/html/xbstring_8h.html
index 417968e..d1679d8 100644
--- a/docs/doxygen/html/xbstring_8h.html
+++ b/docs/doxygen/html/xbstring_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbstring.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbstring.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbstring_8h_source.html b/docs/doxygen/html/xbstring_8h_source.html
index 6292ab2..1e20637 100644
--- a/docs/doxygen/html/xbstring_8h_source.html
+++ b/docs/doxygen/html/xbstring_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbstring.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbstring.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -183,57 +183,59 @@ $(function() {
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Mid(xbUInt32 ulPos, xbUInt32 lLen );</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;PadLeft( <span class="keywordtype">char</span> c, xbUInt32 ulLen );</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;PadRight( <span class="keywordtype">char</span> c, xbUInt32 ulLen );</div>
-<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> xbUInt32 Pos(<span class="keywordtype">char</span> c) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> xbUInt32 Pos(<span class="keyword">const</span> <span class="keywordtype">char</span> *s) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;PutAt(xbUInt32 ulPos, <span class="keywordtype">char</span> c);</div>
-<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
-<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Remove( xbUInt32 ulPos, xbUInt32 ulN );</div>
-<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Replace( <span class="keyword">const</span> <span class="keywordtype">char</span> *sReplace, <span class="keyword">const</span> <span class="keywordtype">char</span> *sReplaceWith, xbInt16 iOpt = 0 );</div>
-<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Resize( xbUInt32 lSize );</div>
-<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Rtrim();</div>
-<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
-<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Set( <span class="keyword">const</span> <span class="keywordtype">char</span> *s );</div>
-<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Set( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s );</div>
-<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Set( <span class="keyword">const</span> <span class="keywordtype">char</span> *s, xbUInt32 ulSize );</div>
-<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;SetNum( xbInt32 lNum );</div>
-<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Sprintf(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div>
-<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
-<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Str() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="keywordtype">char</span> *strncpy( <span class="keywordtype">char</span> * cDest, xbUInt32 n ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;SwapChars( <span class="keywordtype">char</span> from, <span class="keywordtype">char</span> to );</div>
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
-<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ToLowerCase();</div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ToUpperCase();</div>
-<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Trim();</div>
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
-<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> ValidLogicalValue() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> ValidNumericValue() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ZapChar( <span class="keywordtype">char</span> c );</div>
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ZapLeadingChar( <span class="keywordtype">char</span> c );</div>
-<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ZapTrailingChar( <span class="keywordtype">char</span> c );</div>
-<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
-<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">friend</span> std::ostream&amp; <a class="code hl_function" href="namespacexb.html#ad27f348219e895c44f74addba8e1889a">operator&lt;&lt; </a>( std::ostream&amp; os, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; s );</div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> xbUInt32 Pos(<span class="keywordtype">char</span> c, xbUInt32 ulStartPos ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> xbUInt32 Pos(<span class="keywordtype">char</span> c) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> xbUInt32 Pos(<span class="keyword">const</span> <span class="keywordtype">char</span> *s) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;PutAt(xbUInt32 ulPos, <span class="keywordtype">char</span> c);</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Remove( xbUInt32 ulPos, xbUInt32 ulN );</div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Replace( <span class="keyword">const</span> <span class="keywordtype">char</span> *sReplace, <span class="keyword">const</span> <span class="keywordtype">char</span> *sReplaceWith, xbInt16 iOpt = 0 );</div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Resize( xbUInt32 lSize );</div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Rtrim();</div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Set( <span class="keyword">const</span> <span class="keywordtype">char</span> *s );</div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Set( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s );</div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Set( <span class="keyword">const</span> <span class="keywordtype">char</span> *s, xbUInt32 ulSize );</div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;SetNum( xbInt32 lNum );</div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Sprintf(<span class="keyword">const</span> <span class="keywordtype">char</span> *format, ...);</div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Str() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keywordtype">char</span> *strncpy( <span class="keywordtype">char</span> * cDest, xbUInt32 n ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;SwapChars( <span class="keywordtype">char</span> from, <span class="keywordtype">char</span> to );</div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ToLowerCase();</div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ToUpperCase();</div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;Trim();</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> ValidLogicalValue() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> ValidNumericValue() <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ZapChar( <span class="keywordtype">char</span> c );</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ZapLeadingChar( <span class="keywordtype">char</span> c );</div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;ZapTrailingChar( <span class="keywordtype">char</span> c );</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
-<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <span class="keyword">friend</span> std::ostream&amp; <a class="code hl_function" href="namespacexb.html#ad27f348219e895c44f74addba8e1889a">operator&lt;&lt; </a>( std::ostream&amp; os, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a>&amp; s );</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
-<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * NullString;</div>
-<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="keyword">static</span> <span class="keywordtype">char</span> cJunkBuf;</div>
-<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> </div>
-<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keywordtype">char</span> *data; <span class="comment">// pointer to actual string data</span></div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> xbUInt32 size; <span class="comment">// size of string plus null terminating byte</span></div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> </div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <span class="keywordtype">void</span> ctor(<span class="keyword">const</span> <span class="keywordtype">char</span> *s);</div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment">// xbUInt32 CalcSprintfBufSize(const char *format, ...);</span></div>
-<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
-<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment">// char * xb_realloc( char *pIn, xbUInt32 iLen );</span></div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * NullString;</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">static</span> <span class="keywordtype">char</span> cJunkBuf;</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordtype">char</span> *data; <span class="comment">// pointer to actual string data</span></div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> xbUInt32 size; <span class="comment">// size of string plus null terminating byte</span></div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">void</span> ctor(<span class="keyword">const</span> <span class="keywordtype">char</span> *s);</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment">// xbUInt32 CalcSprintfBufSize(const char *format, ...);</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
-<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// next routine could result in buffer over runs if used with improperly sized buffers</span></div>
-<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> <span class="keywordtype">char</span> * xb_strcpy ( <span class="keywordtype">char</span> *target, <span class="keyword">const</span> <span class="keywordtype">char</span> *source);</div>
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
-<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span>};</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="comment">// char * xb_realloc( char *pIn, xbUInt32 iLen );</span></div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// next routine could result in buffer over runs if used with improperly sized buffers</span></div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">char</span> * xb_strcpy ( <span class="keywordtype">char</span> *target, <span class="keyword">const</span> <span class="keywordtype">char</span> *source);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
-<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>} <span class="comment">/* namespace */</span></div>
-<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="preprocessor">#endif </span><span class="comment">/* __XBSTRING_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span>};</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span>} <span class="comment">/* namespace */</span></div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor">#endif </span><span class="comment">/* __XBSTRING_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
<div class="ttc" id="anamespacexb_html_a25f47b226ce924a5c78f97989b0744a2"><div class="ttname"><a href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xb::xbDouble</a></div><div class="ttdeci">double xbDouble</div><div class="ttdef"><b>Definition:</b> xbtypes.h:23</div></div>
diff --git a/docs/doxygen/html/xbtag_8cpp.html b/docs/doxygen/html/xbtag_8cpp.html
index dd99e6d..e38be6b 100644
--- a/docs/doxygen/html/xbtag_8cpp.html
+++ b/docs/doxygen/html/xbtag_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbtag.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbtag.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbtag_8h.html b/docs/doxygen/html/xbtag_8h.html
index cfc21e2..0814418 100644
--- a/docs/doxygen/html/xbtag_8h.html
+++ b/docs/doxygen/html/xbtag_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbtag.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbtag.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbtag_8h_source.html b/docs/doxygen/html/xbtag_8h_source.html
index 1c5847a..486b26f 100644
--- a/docs/doxygen/html/xbtag_8h_source.html
+++ b/docs/doxygen/html/xbtag_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbtag.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbtag.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbtblmgr_8cpp.html b/docs/doxygen/html/xbtblmgr_8cpp.html
index 7e87582..599a2af 100644
--- a/docs/doxygen/html/xbtblmgr_8cpp.html
+++ b/docs/doxygen/html/xbtblmgr_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbtblmgr.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbtblmgr.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbtblmgr_8h.html b/docs/doxygen/html/xbtblmgr_8h.html
index 98e29e5..89b58b1 100644
--- a/docs/doxygen/html/xbtblmgr_8h.html
+++ b/docs/doxygen/html/xbtblmgr_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbtblmgr.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbtblmgr.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbtblmgr_8h_source.html b/docs/doxygen/html/xbtblmgr_8h_source.html
index 5f98d21..faf8923 100644
--- a/docs/doxygen/html/xbtblmgr_8h_source.html
+++ b/docs/doxygen/html/xbtblmgr_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbtblmgr.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbtblmgr.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -102,46 +102,48 @@ $(function() {
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment">/* this structure is a linked list of open tables */</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html"> 31</a></span><span class="keyword">struct </span>XBDLLEXPORT <a class="code hl_struct" href="structxb_1_1xbTblList.html">xbTblList</a>{</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c"> 32</a></span> <a class="code hl_struct" href="structxb_1_1xbTblList.html">xbTblList</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c">pNext</a>;</div>
-<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f"> 33</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">psTblName</a>; <span class="comment">/* Name of table - same table can be opened multiple times, but must have unique alias */</span></div>
-<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05"> 34</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">psTblAlias</a>; <span class="comment">/* TblAliasName must be unique */</span></div>
-<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6"> 35</a></span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6">pDbf</a>;</div>
-<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span>};</div>
-<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
-<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"><a class="line" href="classxb_1_1xbTblMgr.html"> 38</a></span><span class="keyword">class </span>XBDLLEXPORT <a class="code hl_class" href="classxb_1_1xbTblMgr.html">xbTblMgr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classxb_1_1xbSsv.html">xbSsv</a> {</div>
-<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">public</span>:</div>
-<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <a class="code hl_class" href="classxb_1_1xbTblMgr.html">xbTblMgr</a>();</div>
-<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_class" href="classxb_1_1xbTblMgr.html">~xbTblMgr</a>();</div>
-<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> xbInt16 AddTblToTblList ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblName );</div>
-<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> xbInt16 AddTblToTblList ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias );</div>
-<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> xbInt16 DisplayTableList () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * GetDbfPtr ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * GetDbfPtr ( xbInt16 sItemNo ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_struct" href="structxb_1_1xbTblList.html">xbTblList</a> * GetTblListEntry ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d );</div>
-<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> xbInt16 GetOpenTableCount () <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xbInt16 RemoveTblFromTblList ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias );</div>
-<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> xbInt16 RemoveTblFromTblList ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d );</div>
-<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
-<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
-<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_struct" href="structxb_1_1xbTblList.html">xbTblList</a> * TblList; <span class="comment">// List of open database tables</span></div>
-<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> xbInt16 iOpenTableCount; <span class="comment">// Number of open tables</span></div>
-<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
-<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span>};</div>
-<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
-<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span>} <span class="comment">/* namespace xb */</span></div>
-<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
-<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_XBMGR_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d"> 33</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d">psFqTblName</a>; <span class="comment">// Fully qualified name of table - same table can be opened multiple times, but must have unique alias</span></div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f"> 34</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">psTblName</a>; <span class="comment">// Table name without path, without extension</span></div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05"> 35</a></span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">psTblAlias</a>; <span class="comment">// TblAliasName must be unique, same as TblNAme if Alias not provided</span></div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6"> 36</a></span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *<a class="code hl_variable" href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6">pDbf</a>;</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>};</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="classxb_1_1xbTblMgr.html"> 39</a></span><span class="keyword">class </span>XBDLLEXPORT <a class="code hl_class" href="classxb_1_1xbTblMgr.html">xbTblMgr</a> : <span class="keyword">public</span> <a class="code hl_class" href="classxb_1_1xbSsv.html">xbSsv</a> {</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <a class="code hl_class" href="classxb_1_1xbTblMgr.html">xbTblMgr</a>();</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <a class="code hl_class" href="classxb_1_1xbTblMgr.html">~xbTblMgr</a>();</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> xbInt16 AddTblToTblList ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqTblName );</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> xbInt16 AddTblToTblList ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFqTblName, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias );</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> xbInt16 DisplayTableList () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * GetDbfPtr ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * GetDbfPtr ( xbInt16 sItemNo ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <a class="code hl_struct" href="structxb_1_1xbTblList.html">xbTblList</a> * GetTblListEntry ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d );</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> xbInt16 GetOpenTableCount () <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> xbInt16 RemoveTblFromTblList ( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTblAlias );</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> xbInt16 RemoveTblFromTblList ( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> *d );</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_struct" href="structxb_1_1xbTblList.html">xbTblList</a> * TblList; <span class="comment">// List of open database tables</span></div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> xbInt16 iOpenTableCount; <span class="comment">// Number of open tables</span></div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>};</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span>} <span class="comment">/* namespace xb */</span></div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_XBMGR_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html"><div class="ttname"><a href="classxb_1_1xbDbf.html">xb::xbDbf</a></div><div class="ttdoc">Base class for handling dbf files/tables.</div><div class="ttdef"><b>Definition:</b> xbdbf.h:150</div></div>
<div class="ttc" id="aclassxb_1_1xbSsv_html"><div class="ttname"><a href="classxb_1_1xbSsv.html">xb::xbSsv</a></div><div class="ttdoc">Class for handling shared system variables.</div><div class="ttdef"><b>Definition:</b> xbssv.h:59</div></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
-<div class="ttc" id="aclassxb_1_1xbTblMgr_html"><div class="ttname"><a href="classxb_1_1xbTblMgr.html">xb::xbTblMgr</a></div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:38</div></div>
+<div class="ttc" id="aclassxb_1_1xbTblMgr_html"><div class="ttname"><a href="classxb_1_1xbTblMgr.html">xb::xbTblMgr</a></div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:39</div></div>
<div class="ttc" id="anamespacexb_html"><div class="ttname"><a href="namespacexb.html">xb</a></div><div class="ttdef"><b>Definition:</b> xbdate.cpp:19</div></div>
<div class="ttc" id="astructxb_1_1xbTblList_html"><div class="ttname"><a href="structxb_1_1xbTblList.html">xb::xbTblList</a></div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:31</div></div>
-<div class="ttc" id="astructxb_1_1xbTblList_html_a02c3b0c47fd104ef9758b375ecdcfd0f"><div class="ttname"><a href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">xb::xbTblList::psTblName</a></div><div class="ttdeci">xbString * psTblName</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:33</div></div>
-<div class="ttc" id="astructxb_1_1xbTblList_html_a387d3f6bbf291a1fb96d276ed9bb96b6"><div class="ttname"><a href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6">xb::xbTblList::pDbf</a></div><div class="ttdeci">xbDbf * pDbf</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:35</div></div>
+<div class="ttc" id="astructxb_1_1xbTblList_html_a02c3b0c47fd104ef9758b375ecdcfd0f"><div class="ttname"><a href="structxb_1_1xbTblList.html#a02c3b0c47fd104ef9758b375ecdcfd0f">xb::xbTblList::psTblName</a></div><div class="ttdeci">xbString * psTblName</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:34</div></div>
+<div class="ttc" id="astructxb_1_1xbTblList_html_a387d3f6bbf291a1fb96d276ed9bb96b6"><div class="ttname"><a href="structxb_1_1xbTblList.html#a387d3f6bbf291a1fb96d276ed9bb96b6">xb::xbTblList::pDbf</a></div><div class="ttdeci">xbDbf * pDbf</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:36</div></div>
<div class="ttc" id="astructxb_1_1xbTblList_html_a3fd169fcf0fd4df927544e5342db583c"><div class="ttname"><a href="structxb_1_1xbTblList.html#a3fd169fcf0fd4df927544e5342db583c">xb::xbTblList::pNext</a></div><div class="ttdeci">xbTblList * pNext</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:32</div></div>
-<div class="ttc" id="astructxb_1_1xbTblList_html_ac87742c8a6b1cf2e7e35218e96966a05"><div class="ttname"><a href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">xb::xbTblList::psTblAlias</a></div><div class="ttdeci">xbString * psTblAlias</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:34</div></div>
+<div class="ttc" id="astructxb_1_1xbTblList_html_ac87742c8a6b1cf2e7e35218e96966a05"><div class="ttname"><a href="structxb_1_1xbTblList.html#ac87742c8a6b1cf2e7e35218e96966a05">xb::xbTblList::psTblAlias</a></div><div class="ttdeci">xbString * psTblAlias</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:35</div></div>
+<div class="ttc" id="astructxb_1_1xbTblList_html_aceec65f6f6b585788cf98e8dabd2737d"><div class="ttname"><a href="structxb_1_1xbTblList.html#aceec65f6f6b585788cf98e8dabd2737d">xb::xbTblList::psFqTblName</a></div><div class="ttdeci">xbString * psFqTblName</div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:33</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
diff --git a/docs/doxygen/html/xbtypes_8h.html b/docs/doxygen/html/xbtypes_8h.html
index e377fe7..258fa58 100644
--- a/docs/doxygen/html/xbtypes_8h.html
+++ b/docs/doxygen/html/xbtypes_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbtypes.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbtypes.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbtypes_8h_source.html b/docs/doxygen/html/xbtypes_8h_source.html
index 8012370..af33ce4 100644
--- a/docs/doxygen/html/xbtypes_8h_source.html
+++ b/docs/doxygen/html/xbtypes_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbtypes.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbtypes.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbuda_8cpp.html b/docs/doxygen/html/xbuda_8cpp.html
index ff36d02..e4b26ab 100644
--- a/docs/doxygen/html/xbuda_8cpp.html
+++ b/docs/doxygen/html/xbuda_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbuda.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbuda.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbuda_8h.html b/docs/doxygen/html/xbuda_8h.html
index 8a7d6aa..9d3ef21 100644
--- a/docs/doxygen/html/xbuda_8h.html
+++ b/docs/doxygen/html/xbuda_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbuda.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbuda.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbuda_8h_source.html b/docs/doxygen/html/xbuda_8h_source.html
index 9187168..00954f1 100644
--- a/docs/doxygen/html/xbuda_8h_source.html
+++ b/docs/doxygen/html/xbuda_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbuda.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbuda.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -74,7 +74,7 @@ $(function() {
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">XBase64 Software Library</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
-<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"></span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
@@ -106,7 +106,7 @@ $(function() {
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> xbUda();</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> ~xbUda();</div>
-<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> xbInt16 AddTokenForKey( <span class="keyword">const</span> xbString &amp;sKey, <span class="keyword">const</span> xbString &amp;sToken );</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keywordtype">void</span> Clear();</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> xbInt16 DelTokenForKey( <span class="keyword">const</span> xbString &amp;sKey );</div>
@@ -114,7 +114,7 @@ $(function() {
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> xbInt16 GetTokenForKey( <span class="keyword">const</span> xbString &amp;sKey, xbString &amp;sData );</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> xbInt16 UpdTokenForKey( <span class="keyword">const</span> xbString &amp;sKey, <span class="keyword">const</span> xbString &amp;sToken );</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">void</span> DumpUda() <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> xbLinkListOrd&lt;xbString&gt; llOrd;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
diff --git a/docs/doxygen/html/xbxbase_8cpp.html b/docs/doxygen/html/xbxbase_8cpp.html
index 0db46a2..7bce391 100644
--- a/docs/doxygen/html/xbxbase_8cpp.html
+++ b/docs/doxygen/html/xbxbase_8cpp.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/core/xbxbase.cpp File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/core/xbxbase.cpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbxbase_8h.html b/docs/doxygen/html/xbxbase_8h.html
index b218730..ecfc853 100644
--- a/docs/doxygen/html/xbxbase_8h.html
+++ b/docs/doxygen/html/xbxbase_8h.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbxbase.h File Reference</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbxbase.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
diff --git a/docs/doxygen/html/xbxbase_8h_source.html b/docs/doxygen/html/xbxbase_8h_source.html
index 48766c4..7f8563b 100644
--- a/docs/doxygen/html/xbxbase_8h_source.html
+++ b/docs/doxygen/html/xbxbase_8h_source.html
@@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.3"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
-<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.0.3/src/include/xbxbase.h Source File</title>
+<title>Xbase64: /mnt/1Tdata/xbase/xbase64-4.1.0/src/include/xbxbase.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@@ -74,7 +74,7 @@ $(function() {
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">XBase64 Software Library</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
-<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022 Gary A Kunkel</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"></span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"></span> </div>
@@ -216,82 +216,90 @@ $(function() {
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">void</span> xbSleep ( xbInt32 lMillisecs );</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
-<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
-<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="comment">/* xbase functions */</span></div>
-<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="preprocessor"> #ifdef XB_FUNCTION_SUPPORT</span></div>
-<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> xbInt16 ABS( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> xbInt16 ALLTRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> xbInt16 ASC( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dAscOut );</div>
-<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> xbInt16 AT( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sSrchFor, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sBase, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dPos );</div>
-<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> xbInt16 CDOW( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutDow );</div>
-<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> xbInt16 CHR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dAsciCd, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> xbInt16 CMONTH( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutMonth );</div>
-<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> xbInt16 CTOD( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sInDate, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dOutDate );</div>
-<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> xbInt16 DATE( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dOutDate );</div>
-<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> xbInt16 DAY( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOutDay );</div>
-<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> xbInt16 DEL( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut, xbInt16 iRecBufSw = 0 );</div>
-<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> xbInt16 DELETED( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bOut, xbInt16 iRecBufSw = 0 );</div>
-<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> xbInt16 DESCEND( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> xbInt16 DESCEND( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dOutDate );</div>
-<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> xbInt16 DESCEND( <span class="keyword">const</span> <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dsOut );</div>
-<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> xbInt16 DOW( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;sInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dDowOut );</div>
-<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> xbInt16 DTOC( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutFmtDate );</div>
-<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> xbInt16 DTOS( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutFmtDate );</div>
-<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> xbInt16 EXP( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> xbInt16 IIF( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bResult, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTrueResult, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFalseResult, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sResult );</div>
-<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> xbInt16 INT( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> xbInt16 ISALPHA( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bResult );</div>
-<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> xbInt16 ISLOWER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bResult );</div>
-<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> xbInt16 ISUPPER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bResult );</div>
-<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> xbInt16 LEFT( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 lCharCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> xbInt16 LEN( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dLen );</div>
-<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> xbInt16 LOG( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> xbInt16 LOWER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> xbInt16 LTRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sOut );</div>
-<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> xbInt16 MAX( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn1, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn2, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> xbInt16 MIN( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn1, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn2, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> xbInt16 MONTH( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dMonthOut );</div>
-<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> xbInt16 RECCOUNT( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dRecOut );</div>
-<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> xbInt16 RECNO( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dRecOut );</div>
-<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> xbInt16 REPLICATE( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 ulRepCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> xbInt16 RIGHT( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 iCharCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> xbInt16 RTRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> xbInt16 SPACE( xbInt32 lCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> xbInt16 SQRT( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dBase, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dSqrRt );</div>
-<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> xbInt16 STOD( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;sDateOut );</div>
-<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, xbUInt32 ulDec, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, xbUInt32 ulDec, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sPadChar, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> xbInt16 STRZERO( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, xbUInt32 ulDec, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> xbInt16 SUBSTR( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 ulStartPos, xbUInt32 ulLen, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> xbInt16 TRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> xbInt16 UPPER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
-<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> xbInt16 VAL( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
-<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> xbInt16 YEAR( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOutYear );</div>
-<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor"> #endif</span></div>
-<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> </div>
-<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <span class="keyword">protected</span>:</div>
-<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="classxb_1_1xbXBase.html#a86a53ce3efbf910996df0f853f1c0add"> 207</a></span> <span class="keyword">friend</span> <span class="keyword">class </span>xbBcd;</div>
-<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="classxb_1_1xbXBase.html#a3c3e5617be811d732472fe2cc8fb18cc"> 208</a></span> <span class="keyword">friend</span> <span class="keyword">class </span>xbExp;</div>
-<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
-<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1"> 210</a></span> xbInt16 <a class="code hl_function" href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1">GetFunctionInfo</a>( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sExpLine, <span class="keywordtype">char</span> &amp;cReturnType, xbInt16 &amp;iReturnLenCalc, xbInt32 &amp;lReturnLenVal ) <span class="keyword">const</span>;</div>
-<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> <span class="keyword">static</span> xbInt16 xbMemcmp( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s1, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s2, <span class="keywordtype">size_t</span> n );</div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> xbInt16 GetCmdLineOpt ( xbInt32 lArgc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <span class="keywordtype">char</span> *sOptRqst, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sParmOut );</div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> xbInt16 GetCmdLineOpt ( xbInt32 lArgc, <span class="keywordtype">char</span> **argv, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOptRqst, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sParmOut );</div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="comment">/* xbase functions */</span></div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="preprocessor"> #ifdef XB_FUNCTION_SUPPORT</span></div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> xbInt16 ABS( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> xbInt16 ALLTRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> xbInt16 ASC( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dAscOut );</div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> xbInt16 AT( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sSrchFor, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sBase, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dPos );</div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> xbInt16 CDOW( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutDow );</div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> xbInt16 CHR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dAsciCd, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> xbInt16 CMONTH( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutMonth );</div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> xbInt16 CTOD( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sInDate, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dOutDate );</div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> xbInt16 DATE( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dOutDate );</div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> xbInt16 DAY( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOutDay );</div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> xbInt16 DEL( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut, xbInt16 iRecBufSw = 0 );</div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> xbInt16 DELETED( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bOut, xbInt16 iRecBufSw = 0 );</div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> xbInt16 DESCEND( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> xbInt16 DESCEND( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dOutDate );</div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> xbInt16 DESCEND( <span class="keyword">const</span> <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dsOut );</div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> xbInt16 DOW( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;sInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dDowOut );</div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> xbInt16 DTOC( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutFmtDate );</div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> xbInt16 DTOS( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOutFmtDate );</div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> xbInt16 EXP( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> xbInt16 IIF( <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> bResult, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sTrueResult, <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sFalseResult, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sResult );</div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> xbInt16 INT( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> xbInt16 ISALPHA( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bResult );</div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> xbInt16 ISLOWER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bResult );</div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> xbInt16 ISUPPER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;s, <a class="code hl_typedef" href="namespacexb.html#ab1a750481dd487f0d384aa1d200dff0f">xbBool</a> &amp;bResult );</div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> xbInt16 LEFT( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 lCharCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> xbInt16 LEN( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dLen );</div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> xbInt16 LOG( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> xbInt16 LOWER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> xbInt16 LTRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp; sOut );</div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> xbInt16 MAX( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn1, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn2, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> xbInt16 MIN( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn1, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn2, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> xbInt16 MONTH( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dMonthOut );</div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> xbInt16 RECCOUNT( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dRecOut );</div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> xbInt16 RECNO( <a class="code hl_class" href="classxb_1_1xbDbf.html">xbDbf</a> * d, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dRecOut );</div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> xbInt16 REPLICATE( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 ulRepCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> xbInt16 RIGHT( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 iCharCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> xbInt16 RTRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> xbInt16 SPACE( xbInt32 lCnt, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> xbInt16 SQRT( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dBase, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dSqrRt );</div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> xbInt16 STOD( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;sDateOut );</div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, xbUInt32 ulDec, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> xbInt16 STR( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, xbUInt32 ulDec, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sPadChar, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> xbInt16 STRZERO( <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> dIn, xbUInt32 ulLen, xbUInt32 ulDec, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> xbInt16 SUBSTR( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, xbUInt32 ulStartPos, xbUInt32 ulLen, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> xbInt16 TRIM( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> xbInt16 UPPER( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sOut );</div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> xbInt16 VAL( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sIn, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOut );</div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> xbInt16 YEAR( <a class="code hl_class" href="classxb_1_1xbDate.html">xbDate</a> &amp;dInDate, <a class="code hl_typedef" href="namespacexb.html#a25f47b226ce924a5c78f97989b0744a2">xbDouble</a> &amp;dOutYear );</div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="classxb_1_1xbXBase.html#a86a53ce3efbf910996df0f853f1c0add"> 210</a></span> <span class="keyword">friend</span> <span class="keyword">class </span>xbBcd;</div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="classxb_1_1xbXBase.html#a3c3e5617be811d732472fe2cc8fb18cc"> 211</a></span> <span class="keyword">friend</span> <span class="keyword">class </span>xbExp;</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
-<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="keyword">private</span>:</div>
-<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
-<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor">#ifdef XB_LOGGING_SUPPORT</span></div>
-<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <a class="code hl_variable" href="namespacexb.html#a4a31fbe9110c9e55495ce71e642d785c">xbLog</a> *xLog;</div>
-<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="preprocessor">#endif</span></div>
-<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
-<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span>};</div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="preprocessor"> #ifdef XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="keyword">friend</span> <span class="keyword">class </span>xbBlockRead;</div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor"> #endif </span><span class="comment">// XB_BLOCKREAD_SUPPORT</span></div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> </div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1"> 218</a></span> xbInt16 <a class="code hl_function" href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1">GetFunctionInfo</a>( <span class="keyword">const</span> <a class="code hl_class" href="classxb_1_1xbString.html">xbString</a> &amp;sExpLine, <span class="keywordtype">char</span> &amp;cReturnType, xbInt16 &amp;iReturnLenCalc, xbInt32 &amp;lReturnLenVal ) <span class="keyword">const</span>;</div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="keyword">static</span> xbInt16 xbMemcmp( <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s1, <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *s2, <span class="keywordtype">size_t</span> n );</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
-<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span>} <span class="comment">/* namespace xb */</span></div>
-<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_DBLIST_H__ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">private</span>:</div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="preprocessor">#ifdef XB_LOGGING_SUPPORT</span></div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <a class="code hl_variable" href="namespacexb.html#a4a31fbe9110c9e55495ce71e642d785c">xbLog</a> *xLog;</div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span>};</div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span>} <span class="comment">/* namespace xb */</span></div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor">#endif </span><span class="comment">/* __XB_DBLIST_H__ */</span><span class="preprocessor"></span></div>
<div class="ttc" id="aclassxb_1_1xbDate_html"><div class="ttname"><a href="classxb_1_1xbDate.html">xb::xbDate</a></div><div class="ttdoc">xbDate class.</div><div class="ttdef"><b>Definition:</b> xbdate.h:62</div></div>
<div class="ttc" id="aclassxb_1_1xbDbf_html"><div class="ttname"><a href="classxb_1_1xbDbf.html">xb::xbDbf</a></div><div class="ttdoc">Base class for handling dbf files/tables.</div><div class="ttdef"><b>Definition:</b> xbdbf.h:150</div></div>
<div class="ttc" id="aclassxb_1_1xbString_html"><div class="ttname"><a href="classxb_1_1xbString.html">xb::xbString</a></div><div class="ttdoc">Class for handling string data.</div><div class="ttdef"><b>Definition:</b> xbstring.h:50</div></div>
-<div class="ttc" id="aclassxb_1_1xbTblMgr_html"><div class="ttname"><a href="classxb_1_1xbTblMgr.html">xb::xbTblMgr</a></div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:38</div></div>
+<div class="ttc" id="aclassxb_1_1xbTblMgr_html"><div class="ttname"><a href="classxb_1_1xbTblMgr.html">xb::xbTblMgr</a></div><div class="ttdef"><b>Definition:</b> xbtblmgr.h:39</div></div>
<div class="ttc" id="aclassxb_1_1xbXBase_html"><div class="ttname"><a href="classxb_1_1xbXBase.html">xb::xbXBase</a></div><div class="ttdoc">xbXbase class.</div><div class="ttdef"><b>Definition:</b> xbxbase.h:123</div></div>
<div class="ttc" id="aclassxb_1_1xbXBase_html_aa957eb502ecd076e5df89e7415cb094b"><div class="ttname"><a href="classxb_1_1xbXBase.html#aa957eb502ecd076e5df89e7415cb094b">xb::xbXBase::OpenHighestVersion</a></div><div class="ttdeci">xbInt16 OpenHighestVersion(const xbString &amp;sTableName, const xbString &amp;sAlias, xbDbf &amp;dbf, int dummy)</div></div>
<div class="ttc" id="aclassxb_1_1xbXBase_html_ae52e53340593b4253936c1372ec15ee1"><div class="ttname"><a href="classxb_1_1xbXBase.html#ae52e53340593b4253936c1372ec15ee1">xb::xbXBase::GetFunctionInfo</a></div><div class="ttdeci">xbInt16 GetFunctionInfo(const xbString &amp;sExpLine, char &amp;cReturnType, xbInt16 &amp;iReturnLenCalc, xbInt32 &amp;lReturnLenVal) const</div></div>
diff --git a/docs/doxygen/latex/classxb_1_1xbDate.pdf b/docs/doxygen/latex/classxb_1_1xbDate.pdf
index 6115bce..c0c2d67 100644
--- a/docs/doxygen/latex/classxb_1_1xbDate.pdf
+++ b/docs/doxygen/latex/classxb_1_1xbDate.pdf
Binary files differ
diff --git a/docs/doxygen/latex/classxb_1_1xbDate.tex b/docs/doxygen/latex/classxb_1_1xbDate.tex
index 654e005..d1505d4 100644
--- a/docs/doxygen/latex/classxb_1_1xbDate.tex
+++ b/docs/doxygen/latex/classxb_1_1xbDate.tex
@@ -116,11 +116,13 @@ void \mbox{\hyperlink{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}{Bit\+D
\begin{DoxyCompactList}\small\item\em Get the default auto commit setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_a25542afadaaf39b4fb5a1772a29cc0bd}{Set\+Default\+Auto\+Commit}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Default\+Auto\+Commit)
\begin{DoxyCompactList}\small\item\em Set the default auto commit. \end{DoxyCompactList}\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}{Get\+Default\+Log\+Directory}} () const
+void \mbox{\hyperlink{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}{Get\+Home\+Dir}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Home\+Dir\+Out)
+\begin{DoxyCompactList}\small\item\em Get home directory. \end{DoxyCompactList}\item
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}{Get\+Log\+Directory}} () const
\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}{Get\+Default\+Log\+File\+Name}} () const
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}{Get\+Log\+File\+Name}} () const
\item
-void \mbox{\hyperlink{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}{Set\+Default\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Default\+Log\+Directory)
+void \mbox{\hyperlink{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}{Set\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Log\+Directory)
\item
\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}{Get\+Multi\+User}} () const
\begin{DoxyCompactList}\small\item\em Get the multi user setting. \end{DoxyCompactList}\item
@@ -493,18 +495,6 @@ Get the default date format.
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} containing the default date format.
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}\label{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}}
-\index{xb::xbDate@{xb::xbDate}!GetDefaultLogDirectory@{GetDefaultLogDirectory}}
-\index{GetDefaultLogDirectory@{GetDefaultLogDirectory}!xb::xbDate@{xb::xbDate}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogDirectory()}{GetDefaultLogDirectory()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
-\mbox{\Hypertarget{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}\label{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}}
-\index{xb::xbDate@{xb::xbDate}!GetDefaultLogFileName@{GetDefaultLogFileName}}
-\index{GetDefaultLogFileName@{GetDefaultLogFileName}!xb::xbDate@{xb::xbDate}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogFileName()}{GetDefaultLogFileName()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}\label{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}}
\index{xb::xbDate@{xb::xbDate}!GetEndianType@{GetEndianType}}
\index{GetEndianType@{GetEndianType}!xb::xbDate@{xb::xbDate}}
@@ -538,6 +528,36 @@ Get an error message.
\begin{DoxyReturn}{Returns}
Returns a pointer to a string containing a text description for the error code.
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}\label{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}}
+\index{xb::xbDate@{xb::xbDate}!GetHomeDir@{GetHomeDir}}
+\index{GetHomeDir@{GetHomeDir}!xb::xbDate@{xb::xbDate}}
+\doxysubsubsection{\texorpdfstring{GetHomeDir()}{GetHomeDir()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Get\+Home\+Dir (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Home\+Dir\+Out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+
+
+Get home directory.
+
+
+\begin{DoxyParams}{Parameters}
+{\em s\+Home\+Dir\+Out} & -\/ Output home directory for current user. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+void
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}\label{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}}
+\index{xb::xbDate@{xb::xbDate}!GetLogDirectory@{GetLogDirectory}}
+\index{GetLogDirectory@{GetLogDirectory}!xb::xbDate@{xb::xbDate}}
+\doxysubsubsection{\texorpdfstring{GetLogDirectory()}{GetLogDirectory()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}\label{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}}
+\index{xb::xbDate@{xb::xbDate}!GetLogFileName@{GetLogFileName}}
+\index{GetLogFileName@{GetLogFileName}!xb::xbDate@{xb::xbDate}}
+\doxysubsubsection{\texorpdfstring{GetLogFileName()}{GetLogFileName()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
\mbox{\Hypertarget{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}\label{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}}
\index{xb::xbDate@{xb::xbDate}!GetMultiUser@{GetMultiUser}}
\index{GetMultiUser@{GetMultiUser}!xb::xbDate@{xb::xbDate}}
@@ -944,12 +964,6 @@ Set the default date format.
{\em s\+Default\+Date\+Format} & Set the default date format. \\
\hline
\end{DoxyParams}
-\mbox{\Hypertarget{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}\label{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}}
-\index{xb::xbDate@{xb::xbDate}!SetDefaultLogDirectory@{SetDefaultLogDirectory}}
-\index{SetDefaultLogDirectory@{SetDefaultLogDirectory}!xb::xbDate@{xb::xbDate}}
-\doxysubsubsection{\texorpdfstring{SetDefaultLogDirectory()}{SetDefaultLogDirectory()}}
-{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Default\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Default\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}\label{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}}
\index{xb::xbDate@{xb::xbDate}!SetEndianType@{SetEndianType}}
\index{SetEndianType@{SetEndianType}!xb::xbDate@{xb::xbDate}}
@@ -960,7 +974,13 @@ Set the default date format.
Set the endian type.
-This routine determines the Endian-\/ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. \mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
+This routine determines the Endian-\/ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. \mbox{\Hypertarget{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}\label{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}}
+\index{xb::xbDate@{xb::xbDate}!SetLogDirectory@{SetLogDirectory}}
+\index{SetLogDirectory@{SetLogDirectory}!xb::xbDate@{xb::xbDate}}
+\doxysubsubsection{\texorpdfstring{SetLogDirectory()}{SetLogDirectory()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
\index{xb::xbDate@{xb::xbDate}!SetMultiUser@{SetMultiUser}}
\index{SetMultiUser@{SetMultiUser}!xb::xbDate@{xb::xbDate}}
\doxysubsubsection{\texorpdfstring{SetMultiUser()}{SetMultiUser()}}
@@ -1041,5 +1061,5 @@ The year of the date.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbdate_8h}{xbdate.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbdate_8cpp}{xbdate.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbdate_8h}{xbdate.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbdate_8cpp}{xbdate.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/classxb_1_1xbDbf.pdf b/docs/doxygen/latex/classxb_1_1xbDbf.pdf
index 2057f45..589c18c 100644
--- a/docs/doxygen/latex/classxb_1_1xbDbf.pdf
+++ b/docs/doxygen/latex/classxb_1_1xbDbf.pdf
Binary files differ
diff --git a/docs/doxygen/latex/classxb_1_1xbDbf.tex b/docs/doxygen/latex/classxb_1_1xbDbf.tex
index 479fc79..0d95c95 100644
--- a/docs/doxygen/latex/classxb_1_1xbDbf.tex
+++ b/docs/doxygen/latex/classxb_1_1xbDbf.tex
@@ -52,16 +52,22 @@ virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_abb9e20c5efacd4fea80f1515abb
\begin{DoxyCompactList}\small\item\em Get auto commit setting. \end{DoxyCompactList}\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_ae0c00226fd2ea7a67f101e795467ed68}{Get\+Auto\+Commit}} (xb\+Int16 i\+Option) const
\begin{DoxyCompactList}\small\item\em Get auto commit setting. \end{DoxyCompactList}\item
-virtual xb\+UInt32 \mbox{\hyperlink{classxb_1_1xbDbf_a643a80a3792a52760c8e09ba18719503}{Get\+Cur\+Rec\+No}} () const
+virtual \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbDbf_ad0827a43c025c1184ffebab74cc9e779}{Get\+Bof}} ()
\begin{DoxyCompactList}\small\item\em Get a pointer to the current index object. \end{DoxyCompactList}\item
+virtual xb\+UInt32 \mbox{\hyperlink{classxb_1_1xbDbf_a643a80a3792a52760c8e09ba18719503}{Get\+Cur\+Rec\+No}} () const
+\begin{DoxyCompactList}\small\item\em Return the current record number. \end{DoxyCompactList}\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_ac1110d867ba297a52c8b0e83e88f05e6}{Get\+Dbf\+Status}} () const
\begin{DoxyCompactList}\small\item\em Return the current dbf status. \end{DoxyCompactList}\item
+virtual \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbDbf_a256dc1f98626fa77da24e91a38ab5b4d}{Get\+Eof}} ()
+\begin{DoxyCompactList}\small\item\em Return true if dbf file empty or positioned to the last record. \end{DoxyCompactList}\item
virtual xb\+Int32 \mbox{\hyperlink{classxb_1_1xbDbf_add27d8ef555a13b336b8c804165dc15e}{Get\+Field\+Cnt}} () const
\begin{DoxyCompactList}\small\item\em Return the number of fields in the table. \end{DoxyCompactList}\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_a6fc5b8a3e2f177d5ceaf9d975cbb5226}{Get\+First\+Record}} ()
\begin{DoxyCompactList}\small\item\em Get the first record. \end{DoxyCompactList}\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_acb78991e8435edd36318c653cb977c1a}{Get\+First\+Record}} (xb\+Int16 i\+Option)
\begin{DoxyCompactList}\small\item\em Get the first record. \end{DoxyCompactList}\item
+virtual xb\+UInt16 \mbox{\hyperlink{classxb_1_1xbDbf_ad56be2756b7a9f8318d9ba5cf215dafb}{Get\+Header\+Len}} () const
+\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_a49e667f9c8ee55c36444702663fc5964}{Get\+Last\+Record}} ()
\begin{DoxyCompactList}\small\item\em Get the last record. \end{DoxyCompactList}\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_a8ccfa2291417412b6894940d1b92f9a6}{Get\+Last\+Record}} (xb\+Int16 i\+Option)
@@ -210,6 +216,8 @@ virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_a873f04af528a9d81e6a367a59d9
\begin{DoxyCompactList}\small\item\em Put date field for field number. \end{DoxyCompactList}\item
virtual xb\+Int16 \mbox{\hyperlink{classxb_1_1xbDbf_a571b36b3a940b1a16d5e834f329b33b9}{Put\+Date\+Field}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Field\+Name, const \mbox{\hyperlink{classxb_1_1xbDate}{xb\+Date}} \&dt)
\begin{DoxyCompactList}\small\item\em Put date field for field name. \end{DoxyCompactList}\item
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbFile_a060acbfaa8d528f86cb59301814b414a}{Set\+Home\+Folders}} ()
+\begin{DoxyCompactList}\small\item\em Create Home Folders. \end{DoxyCompactList}\item
xb\+Int16 \mbox{\hyperlink{classxb_1_1xbFile_aae9a2ddb0adb8165b4ac2b6a28a932f7}{Create\+Unique\+File\+Name}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Dir\+In, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Ext\+In, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fqn\+Out)
\begin{DoxyCompactList}\small\item\em Create a unique file name. \end{DoxyCompactList}\item
xb\+Int16 \mbox{\hyperlink{classxb_1_1xbFile_ae5ffabde2c88ea58324f27e471f6bfc0}{Create\+Unique\+File\+Name}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Dir\+In, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Ext\+In, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fqn\+Out, xb\+Int16 i\+Option)
@@ -374,11 +382,13 @@ void \mbox{\hyperlink{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}{Bit\+D
\begin{DoxyCompactList}\small\item\em Get the default auto commit setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_a25542afadaaf39b4fb5a1772a29cc0bd}{Set\+Default\+Auto\+Commit}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Default\+Auto\+Commit)
\begin{DoxyCompactList}\small\item\em Set the default auto commit. \end{DoxyCompactList}\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}{Get\+Default\+Log\+Directory}} () const
+void \mbox{\hyperlink{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}{Get\+Home\+Dir}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Home\+Dir\+Out)
+\begin{DoxyCompactList}\small\item\em Get home directory. \end{DoxyCompactList}\item
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}{Get\+Log\+Directory}} () const
\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}{Get\+Default\+Log\+File\+Name}} () const
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}{Get\+Log\+File\+Name}} () const
\item
-void \mbox{\hyperlink{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}{Set\+Default\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Default\+Log\+Directory)
+void \mbox{\hyperlink{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}{Set\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Log\+Directory)
\item
\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}{Get\+Multi\+User}} () const
\begin{DoxyCompactList}\small\item\em Get the multi user setting. \end{DoxyCompactList}\item
@@ -1256,11 +1266,11 @@ Get the block size.
\begin{DoxyReturn}{Returns}
Block Size
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbDbf_a643a80a3792a52760c8e09ba18719503}\label{classxb_1_1xbDbf_a643a80a3792a52760c8e09ba18719503}}
-\index{xb::xbDbf@{xb::xbDbf}!GetCurRecNo@{GetCurRecNo}}
-\index{GetCurRecNo@{GetCurRecNo}!xb::xbDbf@{xb::xbDbf}}
-\doxysubsubsection{\texorpdfstring{GetCurRecNo()}{GetCurRecNo()}}
-{\footnotesize\ttfamily xb\+UInt32 xb\+::xb\+Dbf\+::\+Get\+Cur\+Rec\+No (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+\mbox{\Hypertarget{classxb_1_1xbDbf_ad0827a43c025c1184ffebab74cc9e779}\label{classxb_1_1xbDbf_ad0827a43c025c1184ffebab74cc9e779}}
+\index{xb::xbDbf@{xb::xbDbf}!GetBof@{GetBof}}
+\index{GetBof@{GetBof}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetBof()}{GetBof()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} xb\+::xb\+Dbf\+::\+Get\+Bof (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
@@ -1269,7 +1279,20 @@ Get a pointer to the current index object.
\begin{DoxyReturn}{Returns}
Pointer to current index.
\end{DoxyReturn}
-Return the current record number.
+Return true if dbf file empty or positioned to the first record
+
+\begin{DoxyReturn}{Returns}
+Returns true if dbf file is empty or positioned on the first record.
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbDbf_a643a80a3792a52760c8e09ba18719503}\label{classxb_1_1xbDbf_a643a80a3792a52760c8e09ba18719503}}
+\index{xb::xbDbf@{xb::xbDbf}!GetCurRecNo@{GetCurRecNo}}
+\index{GetCurRecNo@{GetCurRecNo}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetCurRecNo()}{GetCurRecNo()}}
+{\footnotesize\ttfamily xb\+UInt32 xb\+::xb\+Dbf\+::\+Get\+Cur\+Rec\+No (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+Return the current record number.
\begin{DoxyReturn}{Returns}
Returns the current record number.
@@ -1384,18 +1407,6 @@ Get the default date format.
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} containing the default date format.
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}\label{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}}
-\index{xb::xbDbf@{xb::xbDbf}!GetDefaultLogDirectory@{GetDefaultLogDirectory}}
-\index{GetDefaultLogDirectory@{GetDefaultLogDirectory}!xb::xbDbf@{xb::xbDbf}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogDirectory()}{GetDefaultLogDirectory()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
-\mbox{\Hypertarget{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}\label{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}}
-\index{xb::xbDbf@{xb::xbDbf}!GetDefaultLogFileName@{GetDefaultLogFileName}}
-\index{GetDefaultLogFileName@{GetDefaultLogFileName}!xb::xbDbf@{xb::xbDbf}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogFileName()}{GetDefaultLogFileName()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbFile_acd0fb2166b2bff7e8a1cf65a7bc8be1e}\label{classxb_1_1xbFile_acd0fb2166b2bff7e8a1cf65a7bc8be1e}}
\index{xb::xbDbf@{xb::xbDbf}!GetDirectory@{GetDirectory}}
\index{GetDirectory@{GetDirectory}!xb::xbDbf@{xb::xbDbf}}
@@ -1505,6 +1516,19 @@ B -\/ Big endian~\newline
L -\/ Little endian~\newline
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbDbf_a256dc1f98626fa77da24e91a38ab5b4d}\label{classxb_1_1xbDbf_a256dc1f98626fa77da24e91a38ab5b4d}}
+\index{xb::xbDbf@{xb::xbDbf}!GetEof@{GetEof}}
+\index{GetEof@{GetEof}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetEof()}{GetEof()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} xb\+::xb\+Dbf\+::\+Get\+Eof (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+Return true if dbf file empty or positioned to the last record.
+
+\begin{DoxyReturn}{Returns}
+Returns true if dbf file is empty or positioned on the last record.
+\end{DoxyReturn}
\mbox{\Hypertarget{classxb_1_1xbSsv_a56961d2a67b8e7470098626ac4dac7e4}\label{classxb_1_1xbSsv_a56961d2a67b8e7470098626ac4dac7e4}}
\index{xb::xbDbf@{xb::xbDbf}!GetErrorMessage@{GetErrorMessage}}
\index{GetErrorMessage@{GetErrorMessage}!xb::xbDbf@{xb::xbDbf}}
@@ -2129,6 +2153,30 @@ Get the fully qualified file name.
\begin{DoxyReturn}{Returns}
the fully qualfied name of the file
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbDbf_ad56be2756b7a9f8318d9ba5cf215dafb}\label{classxb_1_1xbDbf_ad56be2756b7a9f8318d9ba5cf215dafb}}
+\index{xb::xbDbf@{xb::xbDbf}!GetHeaderLen@{GetHeaderLen}}
+\index{GetHeaderLen@{GetHeaderLen}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetHeaderLen()}{GetHeaderLen()}}
+{\footnotesize\ttfamily virtual xb\+UInt16 xb\+::xb\+Dbf\+::\+Get\+Header\+Len (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}\label{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}}
+\index{xb::xbDbf@{xb::xbDbf}!GetHomeDir@{GetHomeDir}}
+\index{GetHomeDir@{GetHomeDir}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetHomeDir()}{GetHomeDir()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Get\+Home\+Dir (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Home\+Dir\+Out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+
+
+Get home directory.
+
+
+\begin{DoxyParams}{Parameters}
+{\em s\+Home\+Dir\+Out} & -\/ Output home directory for current user. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+void
+\end{DoxyReturn}
\mbox{\Hypertarget{classxb_1_1xbDbf_a49e667f9c8ee55c36444702663fc5964}\label{classxb_1_1xbDbf_a49e667f9c8ee55c36444702663fc5964}}
\index{xb::xbDbf@{xb::xbDbf}!GetLastRecord@{GetLastRecord}}
\index{GetLastRecord@{GetLastRecord}!xb::xbDbf@{xb::xbDbf}}
@@ -2163,6 +2211,18 @@ Get the last record.
\begin{DoxyReturn}{Returns}
\href{xbretcod_8h.html}{\texttt{ Return Codes}}
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}\label{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}}
+\index{xb::xbDbf@{xb::xbDbf}!GetLogDirectory@{GetLogDirectory}}
+\index{GetLogDirectory@{GetLogDirectory}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetLogDirectory()}{GetLogDirectory()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}\label{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}}
+\index{xb::xbDbf@{xb::xbDbf}!GetLogFileName@{GetLogFileName}}
+\index{GetLogFileName@{GetLogFileName}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{GetLogFileName()}{GetLogFileName()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
\mbox{\Hypertarget{classxb_1_1xbDbf_a943cea7fde1b06c1a05184193eff8d2d}\label{classxb_1_1xbDbf_a943cea7fde1b06c1a05184193eff8d2d}}
\index{xb::xbDbf@{xb::xbDbf}!GetLogicalField@{GetLogicalField}}
\index{GetLogicalField@{GetLogicalField}!xb::xbDbf@{xb::xbDbf}}
@@ -3503,12 +3563,6 @@ Set the default date format.
{\em s\+Default\+Date\+Format} & Set the default date format. \\
\hline
\end{DoxyParams}
-\mbox{\Hypertarget{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}\label{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}}
-\index{xb::xbDbf@{xb::xbDbf}!SetDefaultLogDirectory@{SetDefaultLogDirectory}}
-\index{SetDefaultLogDirectory@{SetDefaultLogDirectory}!xb::xbDbf@{xb::xbDbf}}
-\doxysubsubsection{\texorpdfstring{SetDefaultLogDirectory()}{SetDefaultLogDirectory()}}
-{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Default\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Default\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbFile_ae78a85255488bc78964c16946dbaead3}\label{classxb_1_1xbFile_ae78a85255488bc78964c16946dbaead3}}
\index{xb::xbDbf@{xb::xbDbf}!SetDirectory@{SetDirectory}}
\index{SetDirectory@{SetDirectory}!xb::xbDbf@{xb::xbDbf}}
@@ -3569,6 +3623,27 @@ Set the fully qualifed filename.
{\em s\+Fq\+File\+Name} & -\/ Fully qualifed input file name \\
\hline
\end{DoxyParams}
+\mbox{\Hypertarget{classxb_1_1xbFile_a060acbfaa8d528f86cb59301814b414a}\label{classxb_1_1xbFile_a060acbfaa8d528f86cb59301814b414a}}
+\index{xb::xbDbf@{xb::xbDbf}!SetHomeFolders@{SetHomeFolders}}
+\index{SetHomeFolders@{SetHomeFolders}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{SetHomeFolders()}{SetHomeFolders()}}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+File\+::\+Set\+Home\+Folders (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+
+
+Create Home Folders.
+
+Create xbase64 log and data folders in the home directory for current usre.
+
+\begin{DoxyReturn}{Returns}
+\href{xbretcod_8h.html}{\texttt{ Return Codes}}
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}\label{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}}
+\index{xb::xbDbf@{xb::xbDbf}!SetLogDirectory@{SetLogDirectory}}
+\index{SetLogDirectory@{SetLogDirectory}!xb::xbDbf@{xb::xbDbf}}
+\doxysubsubsection{\texorpdfstring{SetLogDirectory()}{SetLogDirectory()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
\mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
\index{xb::xbDbf@{xb::xbDbf}!SetMultiUser@{SetMultiUser}}
\index{SetMultiUser@{SetMultiUser}!xb::xbDbf@{xb::xbDbf}}
@@ -3965,7 +4040,7 @@ Xbase wrapper for standard libary fread.
\hline
{\em size} & size of write \\
\hline
-{\em nmemb} & Number of times to write it \\
+{\em nmemb} & Number of times to read it \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
@@ -4324,6 +4399,6 @@ This routine eliminates everything from the dbf file and dbt memo file. \begin{D
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbdbf_8cpp}{xbdbf.\+cpp}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbfields_8cpp}{xbfields.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbdbf_8cpp}{xbdbf.\+cpp}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbfields_8cpp}{xbfields.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/classxb_1_1xbFile.pdf b/docs/doxygen/latex/classxb_1_1xbFile.pdf
index e15505b..491c726 100644
--- a/docs/doxygen/latex/classxb_1_1xbFile.pdf
+++ b/docs/doxygen/latex/classxb_1_1xbFile.pdf
Binary files differ
diff --git a/docs/doxygen/latex/classxb_1_1xbFile.tex b/docs/doxygen/latex/classxb_1_1xbFile.tex
index 2ae5244..b342cad 100644
--- a/docs/doxygen/latex/classxb_1_1xbFile.tex
+++ b/docs/doxygen/latex/classxb_1_1xbFile.tex
@@ -22,6 +22,8 @@ Inheritance diagram for xb\+::xb\+File\+:\begin{figure}[H]
\begin{DoxyCompactList}\small\item\em Class Constructor. \end{DoxyCompactList}\item
\mbox{\hyperlink{classxb_1_1xbFile_a491f6c48076e89da2e791a42b2727a90}{$\sim$xb\+File}} ()
\begin{DoxyCompactList}\small\item\em Class Destructor. \end{DoxyCompactList}\item
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbFile_a060acbfaa8d528f86cb59301814b414a}{Set\+Home\+Folders}} ()
+\begin{DoxyCompactList}\small\item\em Create Home Folders. \end{DoxyCompactList}\item
xb\+Int16 \mbox{\hyperlink{classxb_1_1xbFile_aae9a2ddb0adb8165b4ac2b6a28a932f7}{Create\+Unique\+File\+Name}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Dir\+In, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Ext\+In, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fqn\+Out)
\begin{DoxyCompactList}\small\item\em Create a unique file name. \end{DoxyCompactList}\item
xb\+Int16 \mbox{\hyperlink{classxb_1_1xbFile_ae5ffabde2c88ea58324f27e471f6bfc0}{Create\+Unique\+File\+Name}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Dir\+In, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Ext\+In, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fqn\+Out, xb\+Int16 i\+Option)
@@ -186,11 +188,13 @@ void \mbox{\hyperlink{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}{Bit\+D
\begin{DoxyCompactList}\small\item\em Get the default auto commit setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_a25542afadaaf39b4fb5a1772a29cc0bd}{Set\+Default\+Auto\+Commit}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Default\+Auto\+Commit)
\begin{DoxyCompactList}\small\item\em Set the default auto commit. \end{DoxyCompactList}\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}{Get\+Default\+Log\+Directory}} () const
+void \mbox{\hyperlink{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}{Get\+Home\+Dir}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Home\+Dir\+Out)
+\begin{DoxyCompactList}\small\item\em Get home directory. \end{DoxyCompactList}\item
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}{Get\+Log\+Directory}} () const
\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}{Get\+Default\+Log\+File\+Name}} () const
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}{Get\+Log\+File\+Name}} () const
\item
-void \mbox{\hyperlink{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}{Set\+Default\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Default\+Log\+Directory)
+void \mbox{\hyperlink{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}{Set\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Log\+Directory)
\item
\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}{Get\+Multi\+User}} () const
\begin{DoxyCompactList}\small\item\em Get the multi user setting. \end{DoxyCompactList}\item
@@ -767,18 +771,6 @@ Get the default date format.
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} containing the default date format.
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}\label{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}}
-\index{xb::xbFile@{xb::xbFile}!GetDefaultLogDirectory@{GetDefaultLogDirectory}}
-\index{GetDefaultLogDirectory@{GetDefaultLogDirectory}!xb::xbFile@{xb::xbFile}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogDirectory()}{GetDefaultLogDirectory()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
-\mbox{\Hypertarget{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}\label{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}}
-\index{xb::xbFile@{xb::xbFile}!GetDefaultLogFileName@{GetDefaultLogFileName}}
-\index{GetDefaultLogFileName@{GetDefaultLogFileName}!xb::xbFile@{xb::xbFile}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogFileName()}{GetDefaultLogFileName()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbFile_acd0fb2166b2bff7e8a1cf65a7bc8be1e}\label{classxb_1_1xbFile_acd0fb2166b2bff7e8a1cf65a7bc8be1e}}
\index{xb::xbFile@{xb::xbFile}!GetDirectory@{GetDirectory}}
\index{GetDirectory@{GetDirectory}!xb::xbFile@{xb::xbFile}}
@@ -1019,6 +1011,36 @@ Get the fully qualified file name.
\begin{DoxyReturn}{Returns}
the fully qualfied name of the file
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}\label{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}}
+\index{xb::xbFile@{xb::xbFile}!GetHomeDir@{GetHomeDir}}
+\index{GetHomeDir@{GetHomeDir}!xb::xbFile@{xb::xbFile}}
+\doxysubsubsection{\texorpdfstring{GetHomeDir()}{GetHomeDir()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Get\+Home\+Dir (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Home\+Dir\+Out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+
+
+Get home directory.
+
+
+\begin{DoxyParams}{Parameters}
+{\em s\+Home\+Dir\+Out} & -\/ Output home directory for current user. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+void
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}\label{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}}
+\index{xb::xbFile@{xb::xbFile}!GetLogDirectory@{GetLogDirectory}}
+\index{GetLogDirectory@{GetLogDirectory}!xb::xbFile@{xb::xbFile}}
+\doxysubsubsection{\texorpdfstring{GetLogDirectory()}{GetLogDirectory()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}\label{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}}
+\index{xb::xbFile@{xb::xbFile}!GetLogFileName@{GetLogFileName}}
+\index{GetLogFileName@{GetLogFileName}!xb::xbFile@{xb::xbFile}}
+\doxysubsubsection{\texorpdfstring{GetLogFileName()}{GetLogFileName()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
\mbox{\Hypertarget{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}\label{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}}
\index{xb::xbFile@{xb::xbFile}!GetMultiUser@{GetMultiUser}}
\index{GetMultiUser@{GetMultiUser}!xb::xbFile@{xb::xbFile}}
@@ -1274,12 +1296,6 @@ Set the default date format.
{\em s\+Default\+Date\+Format} & Set the default date format. \\
\hline
\end{DoxyParams}
-\mbox{\Hypertarget{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}\label{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}}
-\index{xb::xbFile@{xb::xbFile}!SetDefaultLogDirectory@{SetDefaultLogDirectory}}
-\index{SetDefaultLogDirectory@{SetDefaultLogDirectory}!xb::xbFile@{xb::xbFile}}
-\doxysubsubsection{\texorpdfstring{SetDefaultLogDirectory()}{SetDefaultLogDirectory()}}
-{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Default\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Default\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbFile_ae78a85255488bc78964c16946dbaead3}\label{classxb_1_1xbFile_ae78a85255488bc78964c16946dbaead3}}
\index{xb::xbFile@{xb::xbFile}!SetDirectory@{SetDirectory}}
\index{SetDirectory@{SetDirectory}!xb::xbFile@{xb::xbFile}}
@@ -1340,6 +1356,27 @@ Set the fully qualifed filename.
{\em s\+Fq\+File\+Name} & -\/ Fully qualifed input file name \\
\hline
\end{DoxyParams}
+\mbox{\Hypertarget{classxb_1_1xbFile_a060acbfaa8d528f86cb59301814b414a}\label{classxb_1_1xbFile_a060acbfaa8d528f86cb59301814b414a}}
+\index{xb::xbFile@{xb::xbFile}!SetHomeFolders@{SetHomeFolders}}
+\index{SetHomeFolders@{SetHomeFolders}!xb::xbFile@{xb::xbFile}}
+\doxysubsubsection{\texorpdfstring{SetHomeFolders()}{SetHomeFolders()}}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+File\+::\+Set\+Home\+Folders (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+
+
+Create Home Folders.
+
+Create xbase64 log and data folders in the home directory for current usre.
+
+\begin{DoxyReturn}{Returns}
+\href{xbretcod_8h.html}{\texttt{ Return Codes}}
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}\label{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}}
+\index{xb::xbFile@{xb::xbFile}!SetLogDirectory@{SetLogDirectory}}
+\index{SetLogDirectory@{SetLogDirectory}!xb::xbFile@{xb::xbFile}}
+\doxysubsubsection{\texorpdfstring{SetLogDirectory()}{SetLogDirectory()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
\mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
\index{xb::xbFile@{xb::xbFile}!SetMultiUser@{SetMultiUser}}
\index{SetMultiUser@{SetMultiUser}!xb::xbFile@{xb::xbFile}}
@@ -1644,7 +1681,7 @@ Xbase wrapper for standard libary fread.
\hline
{\em size} & size of write \\
\hline
-{\em nmemb} & Number of times to write it \\
+{\em nmemb} & Number of times to read it \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
@@ -1870,5 +1907,5 @@ Set file size to ll\+Size
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbfile_8h}{xbfile.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbfile_8cpp}{xbfile.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbfile_8h}{xbfile.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbfile_8cpp}{xbfile.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/classxb_1_1xbSsv.pdf b/docs/doxygen/latex/classxb_1_1xbSsv.pdf
index d2c5129..4677f70 100644
--- a/docs/doxygen/latex/classxb_1_1xbSsv.pdf
+++ b/docs/doxygen/latex/classxb_1_1xbSsv.pdf
Binary files differ
diff --git a/docs/doxygen/latex/classxb_1_1xbSsv.tex b/docs/doxygen/latex/classxb_1_1xbSsv.tex
index 5a19427..8abcbcb 100644
--- a/docs/doxygen/latex/classxb_1_1xbSsv.tex
+++ b/docs/doxygen/latex/classxb_1_1xbSsv.tex
@@ -44,11 +44,13 @@ void \mbox{\hyperlink{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}{Bit\+D
\begin{DoxyCompactList}\small\item\em Get the default auto commit setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_a25542afadaaf39b4fb5a1772a29cc0bd}{Set\+Default\+Auto\+Commit}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Default\+Auto\+Commit)
\begin{DoxyCompactList}\small\item\em Set the default auto commit. \end{DoxyCompactList}\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}{Get\+Default\+Log\+Directory}} () const
+void \mbox{\hyperlink{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}{Get\+Home\+Dir}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Home\+Dir\+Out)
+\begin{DoxyCompactList}\small\item\em Get home directory. \end{DoxyCompactList}\item
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}{Get\+Log\+Directory}} () const
\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}{Get\+Default\+Log\+File\+Name}} () const
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}{Get\+Log\+File\+Name}} () const
\item
-void \mbox{\hyperlink{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}{Set\+Default\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Default\+Log\+Directory)
+void \mbox{\hyperlink{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}{Set\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Log\+Directory)
\item
\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}{Get\+Multi\+User}} () const
\begin{DoxyCompactList}\small\item\em Get the multi user setting. \end{DoxyCompactList}\item
@@ -184,18 +186,6 @@ Get the default date format.
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} containing the default date format.
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}\label{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}}
-\index{xb::xbSsv@{xb::xbSsv}!GetDefaultLogDirectory@{GetDefaultLogDirectory}}
-\index{GetDefaultLogDirectory@{GetDefaultLogDirectory}!xb::xbSsv@{xb::xbSsv}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogDirectory()}{GetDefaultLogDirectory()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
-
-\mbox{\Hypertarget{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}\label{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}}
-\index{xb::xbSsv@{xb::xbSsv}!GetDefaultLogFileName@{GetDefaultLogFileName}}
-\index{GetDefaultLogFileName@{GetDefaultLogFileName}!xb::xbSsv@{xb::xbSsv}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogFileName()}{GetDefaultLogFileName()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}\label{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}}
\index{xb::xbSsv@{xb::xbSsv}!GetEndianType@{GetEndianType}}
\index{GetEndianType@{GetEndianType}!xb::xbSsv@{xb::xbSsv}}
@@ -229,6 +219,36 @@ Get an error message.
\begin{DoxyReturn}{Returns}
Returns a pointer to a string containing a text description for the error code.
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}\label{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}}
+\index{xb::xbSsv@{xb::xbSsv}!GetHomeDir@{GetHomeDir}}
+\index{GetHomeDir@{GetHomeDir}!xb::xbSsv@{xb::xbSsv}}
+\doxysubsubsection{\texorpdfstring{GetHomeDir()}{GetHomeDir()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Get\+Home\+Dir (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Home\+Dir\+Out }\end{DoxyParamCaption})}
+
+
+
+Get home directory.
+
+
+\begin{DoxyParams}{Parameters}
+{\em s\+Home\+Dir\+Out} & -\/ Output home directory for current user. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+void
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}\label{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}}
+\index{xb::xbSsv@{xb::xbSsv}!GetLogDirectory@{GetLogDirectory}}
+\index{GetLogDirectory@{GetLogDirectory}!xb::xbSsv@{xb::xbSsv}}
+\doxysubsubsection{\texorpdfstring{GetLogDirectory()}{GetLogDirectory()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}\label{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}}
+\index{xb::xbSsv@{xb::xbSsv}!GetLogFileName@{GetLogFileName}}
+\index{GetLogFileName@{GetLogFileName}!xb::xbSsv@{xb::xbSsv}}
+\doxysubsubsection{\texorpdfstring{GetLogFileName()}{GetLogFileName()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}
+
\mbox{\Hypertarget{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}\label{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}}
\index{xb::xbSsv@{xb::xbSsv}!GetMultiUser@{GetMultiUser}}
\index{GetMultiUser@{GetMultiUser}!xb::xbSsv@{xb::xbSsv}}
@@ -293,12 +313,6 @@ Set the default date format.
{\em s\+Default\+Date\+Format} & Set the default date format. \\
\hline
\end{DoxyParams}
-\mbox{\Hypertarget{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}\label{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}}
-\index{xb::xbSsv@{xb::xbSsv}!SetDefaultLogDirectory@{SetDefaultLogDirectory}}
-\index{SetDefaultLogDirectory@{SetDefaultLogDirectory}!xb::xbSsv@{xb::xbSsv}}
-\doxysubsubsection{\texorpdfstring{SetDefaultLogDirectory()}{SetDefaultLogDirectory()}}
-{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Default\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Default\+Log\+Directory }\end{DoxyParamCaption})}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}\label{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}}
\index{xb::xbSsv@{xb::xbSsv}!SetEndianType@{SetEndianType}}
\index{SetEndianType@{SetEndianType}!xb::xbSsv@{xb::xbSsv}}
@@ -309,7 +323,13 @@ Set the default date format.
Set the endian type.
-This routine determines the Endian-\/ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. \mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
+This routine determines the Endian-\/ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. \mbox{\Hypertarget{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}\label{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}}
+\index{xb::xbSsv@{xb::xbSsv}!SetLogDirectory@{SetLogDirectory}}
+\index{SetLogDirectory@{SetLogDirectory}!xb::xbSsv@{xb::xbSsv}}
+\doxysubsubsection{\texorpdfstring{SetLogDirectory()}{SetLogDirectory()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Log\+Directory }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
\index{xb::xbSsv@{xb::xbSsv}!SetMultiUser@{SetMultiUser}}
\index{SetMultiUser@{SetMultiUser}!xb::xbSsv@{xb::xbSsv}}
\doxysubsubsection{\texorpdfstring{SetMultiUser()}{SetMultiUser()}}
@@ -351,5 +371,5 @@ Get the multi user setting.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbssv_8h}{xbssv.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbssv_8cpp}{xbssv.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbssv_8h}{xbssv.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbssv_8cpp}{xbssv.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/classxb_1_1xbString.tex b/docs/doxygen/latex/classxb_1_1xbString.tex
index 1d6fca8..9cec303 100644
--- a/docs/doxygen/latex/classxb_1_1xbString.tex
+++ b/docs/doxygen/latex/classxb_1_1xbString.tex
@@ -136,6 +136,8 @@ xb\+UInt32 \mbox{\hyperlink{classxb_1_1xbString_a998b240eedac311aea5843047f55649
\begin{DoxyCompactList}\small\item\em Left pad string. \end{DoxyCompactList}\item
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbString_aba13f0c77eb6c4a22996039569fad284}{Pad\+Right}} (char c, xb\+UInt32 ul\+Len)
\begin{DoxyCompactList}\small\item\em Right pad string. \end{DoxyCompactList}\item
+xb\+UInt32 \mbox{\hyperlink{classxb_1_1xbString_a1b586890138da8bf0e23090bd8b34581}{Pos}} (char c, xb\+UInt32 ul\+Start\+Pos) const
+\begin{DoxyCompactList}\small\item\em Determine position of a given character. \end{DoxyCompactList}\item
xb\+UInt32 \mbox{\hyperlink{classxb_1_1xbString_a3baf59d15099589ff631995f129e582b}{Pos}} (char c) const
\begin{DoxyCompactList}\small\item\em Determine position of a given character. \end{DoxyCompactList}\item
xb\+UInt32 \mbox{\hyperlink{classxb_1_1xbString_a8705d7277b72f5aa98021e84438914da}{Pos}} (const char $\ast$s) const
@@ -1291,7 +1293,7 @@ Reference to this string.
\mbox{\Hypertarget{classxb_1_1xbString_a3baf59d15099589ff631995f129e582b}\label{classxb_1_1xbString_a3baf59d15099589ff631995f129e582b}}
\index{xb::xbString@{xb::xbString}!Pos@{Pos}}
\index{Pos@{Pos}!xb::xbString@{xb::xbString}}
-\doxysubsubsection{\texorpdfstring{Pos()}{Pos()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
+\doxysubsubsection{\texorpdfstring{Pos()}{Pos()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily xb\+UInt32 xb\+::xb\+String\+::\+Pos (\begin{DoxyParamCaption}\item[{char}]{c }\end{DoxyParamCaption}) const}
@@ -1306,10 +1308,30 @@ Determine position of a given character.
\begin{DoxyReturn}{Returns}
Position within string. Returns 0 if not found.
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbString_a1b586890138da8bf0e23090bd8b34581}\label{classxb_1_1xbString_a1b586890138da8bf0e23090bd8b34581}}
+\index{xb::xbString@{xb::xbString}!Pos@{Pos}}
+\index{Pos@{Pos}!xb::xbString@{xb::xbString}}
+\doxysubsubsection{\texorpdfstring{Pos()}{Pos()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
+{\footnotesize\ttfamily xb\+UInt32 xb\+::xb\+String\+::\+Pos (\begin{DoxyParamCaption}\item[{char}]{c, }\item[{xb\+UInt32}]{ul\+Start\+Pos }\end{DoxyParamCaption}) const}
+
+
+
+Determine position of a given character.
+
+
+\begin{DoxyParams}{Parameters}
+{\em c} & Seek character \\
+\hline
+{\em ul\+Start\+Pos} & starting position for search, first position is 1 \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+Position within string. Returns 0 if not found.
+\end{DoxyReturn}
\mbox{\Hypertarget{classxb_1_1xbString_a8705d7277b72f5aa98021e84438914da}\label{classxb_1_1xbString_a8705d7277b72f5aa98021e84438914da}}
\index{xb::xbString@{xb::xbString}!Pos@{Pos}}
\index{Pos@{Pos}!xb::xbString@{xb::xbString}}
-\doxysubsubsection{\texorpdfstring{Pos()}{Pos()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
+\doxysubsubsection{\texorpdfstring{Pos()}{Pos()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily xb\+UInt32 xb\+::xb\+String\+::\+Pos (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s }\end{DoxyParamCaption}) const}
@@ -1722,5 +1744,5 @@ std\+::cout \texorpdfstring{$<$}{<}\texorpdfstring{$<$}{<} My\+String \texorpdfs
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbstring_8h}{xbstring.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbstring_8cpp}{xbstring.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbstring_8h}{xbstring.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbstring_8cpp}{xbstring.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/classxb_1_1xbTblMgr.pdf b/docs/doxygen/latex/classxb_1_1xbTblMgr.pdf
index 389c568..96c128e 100644
--- a/docs/doxygen/latex/classxb_1_1xbTblMgr.pdf
+++ b/docs/doxygen/latex/classxb_1_1xbTblMgr.pdf
Binary files differ
diff --git a/docs/doxygen/latex/classxb_1_1xbTblMgr.tex b/docs/doxygen/latex/classxb_1_1xbTblMgr.tex
index 695e61e..72d1d08 100644
--- a/docs/doxygen/latex/classxb_1_1xbTblMgr.tex
+++ b/docs/doxygen/latex/classxb_1_1xbTblMgr.tex
@@ -17,9 +17,9 @@ Inheritance diagram for xb\+::xb\+Tbl\+Mgr\+:\begin{figure}[H]
\item
\mbox{\hyperlink{classxb_1_1xbTblMgr_aad6be32d7b3378c71d47fa27ebfe6cbf}{$\sim$xb\+Tbl\+Mgr}} ()
\item
-xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a721f69ccc7893842422a043468ffccea}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Name)
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_af16832ff2bfaee09265652e0fc03709a}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fq\+Tbl\+Name)
\item
-xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a62f6841849dbe5c1768f7e90f1b7e766}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Name, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Alias)
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a2033188e9b08778188a034a6fc90ca85}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fq\+Tbl\+Name, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Alias)
\item
xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a5eebffb9e8cc64141e35c2622045cb50}{Display\+Table\+List}} () const
\item
@@ -59,11 +59,13 @@ void \mbox{\hyperlink{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}{Bit\+D
\begin{DoxyCompactList}\small\item\em Get the default auto commit setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_a25542afadaaf39b4fb5a1772a29cc0bd}{Set\+Default\+Auto\+Commit}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Default\+Auto\+Commit)
\begin{DoxyCompactList}\small\item\em Set the default auto commit. \end{DoxyCompactList}\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}{Get\+Default\+Log\+Directory}} () const
+void \mbox{\hyperlink{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}{Get\+Home\+Dir}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Home\+Dir\+Out)
+\begin{DoxyCompactList}\small\item\em Get home directory. \end{DoxyCompactList}\item
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}{Get\+Log\+Directory}} () const
\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}{Get\+Default\+Log\+File\+Name}} () const
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}{Get\+Log\+File\+Name}} () const
\item
-void \mbox{\hyperlink{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}{Set\+Default\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Default\+Log\+Directory)
+void \mbox{\hyperlink{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}{Set\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Log\+Directory)
\item
\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}{Get\+Multi\+User}} () const
\begin{DoxyCompactList}\small\item\em Get the multi user setting. \end{DoxyCompactList}\item
@@ -104,17 +106,17 @@ static \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \mbox{\hyperlink{class
\doxysubsection{Member Function Documentation}
-\mbox{\Hypertarget{classxb_1_1xbTblMgr_a721f69ccc7893842422a043468ffccea}\label{classxb_1_1xbTblMgr_a721f69ccc7893842422a043468ffccea}}
+\mbox{\Hypertarget{classxb_1_1xbTblMgr_af16832ff2bfaee09265652e0fc03709a}\label{classxb_1_1xbTblMgr_af16832ff2bfaee09265652e0fc03709a}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!AddTblToTblList@{AddTblToTblList}}
\index{AddTblToTblList@{AddTblToTblList}!xb::xbTblMgr@{xb::xbTblMgr}}
\doxysubsubsection{\texorpdfstring{AddTblToTblList()}{AddTblToTblList()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
-{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Name }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Fq\+Tbl\+Name }\end{DoxyParamCaption})}
-\mbox{\Hypertarget{classxb_1_1xbTblMgr_a62f6841849dbe5c1768f7e90f1b7e766}\label{classxb_1_1xbTblMgr_a62f6841849dbe5c1768f7e90f1b7e766}}
+\mbox{\Hypertarget{classxb_1_1xbTblMgr_a2033188e9b08778188a034a6fc90ca85}\label{classxb_1_1xbTblMgr_a2033188e9b08778188a034a6fc90ca85}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!AddTblToTblList@{AddTblToTblList}}
\index{AddTblToTblList@{AddTblToTblList}!xb::xbTblMgr@{xb::xbTblMgr}}
\doxysubsubsection{\texorpdfstring{AddTblToTblList()}{AddTblToTblList()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
-{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Name, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Alias }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Fq\+Tbl\+Name, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Alias }\end{DoxyParamCaption})}
\mbox{\Hypertarget{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}\label{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!BitDump@{BitDump}}
@@ -224,18 +226,6 @@ Get the default date format.
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} containing the default date format.
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}\label{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}}
-\index{xb::xbTblMgr@{xb::xbTblMgr}!GetDefaultLogDirectory@{GetDefaultLogDirectory}}
-\index{GetDefaultLogDirectory@{GetDefaultLogDirectory}!xb::xbTblMgr@{xb::xbTblMgr}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogDirectory()}{GetDefaultLogDirectory()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
-\mbox{\Hypertarget{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}\label{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}}
-\index{xb::xbTblMgr@{xb::xbTblMgr}!GetDefaultLogFileName@{GetDefaultLogFileName}}
-\index{GetDefaultLogFileName@{GetDefaultLogFileName}!xb::xbTblMgr@{xb::xbTblMgr}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogFileName()}{GetDefaultLogFileName()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}\label{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!GetEndianType@{GetEndianType}}
\index{GetEndianType@{GetEndianType}!xb::xbTblMgr@{xb::xbTblMgr}}
@@ -269,6 +259,36 @@ Get an error message.
\begin{DoxyReturn}{Returns}
Returns a pointer to a string containing a text description for the error code.
\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}\label{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}}
+\index{xb::xbTblMgr@{xb::xbTblMgr}!GetHomeDir@{GetHomeDir}}
+\index{GetHomeDir@{GetHomeDir}!xb::xbTblMgr@{xb::xbTblMgr}}
+\doxysubsubsection{\texorpdfstring{GetHomeDir()}{GetHomeDir()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Get\+Home\+Dir (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Home\+Dir\+Out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+
+
+Get home directory.
+
+
+\begin{DoxyParams}{Parameters}
+{\em s\+Home\+Dir\+Out} & -\/ Output home directory for current user. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+void
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}\label{classxb_1_1xbSsv_a4822315bded3969b59aeeb683c373051}}
+\index{xb::xbTblMgr@{xb::xbTblMgr}!GetLogDirectory@{GetLogDirectory}}
+\index{GetLogDirectory@{GetLogDirectory}!xb::xbTblMgr@{xb::xbTblMgr}}
+\doxysubsubsection{\texorpdfstring{GetLogDirectory()}{GetLogDirectory()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}\label{classxb_1_1xbSsv_afaef09435be73b3111f5edbd7091d861}}
+\index{xb::xbTblMgr@{xb::xbTblMgr}!GetLogFileName@{GetLogFileName}}
+\index{GetLogFileName@{GetLogFileName}!xb::xbTblMgr@{xb::xbTblMgr}}
+\doxysubsubsection{\texorpdfstring{GetLogFileName()}{GetLogFileName()}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
+
\mbox{\Hypertarget{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}\label{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!GetMultiUser@{GetMultiUser}}
\index{GetMultiUser@{GetMultiUser}!xb::xbTblMgr@{xb::xbTblMgr}}
@@ -357,12 +377,6 @@ Set the default date format.
{\em s\+Default\+Date\+Format} & Set the default date format. \\
\hline
\end{DoxyParams}
-\mbox{\Hypertarget{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}\label{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}}
-\index{xb::xbTblMgr@{xb::xbTblMgr}!SetDefaultLogDirectory@{SetDefaultLogDirectory}}
-\index{SetDefaultLogDirectory@{SetDefaultLogDirectory}!xb::xbTblMgr@{xb::xbTblMgr}}
-\doxysubsubsection{\texorpdfstring{SetDefaultLogDirectory()}{SetDefaultLogDirectory()}}
-{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Default\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Default\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}\label{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!SetEndianType@{SetEndianType}}
\index{SetEndianType@{SetEndianType}!xb::xbTblMgr@{xb::xbTblMgr}}
@@ -373,7 +387,13 @@ Set the default date format.
Set the endian type.
-This routine determines the Endian-\/ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. \mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
+This routine determines the Endian-\/ness at run time instead of compile time as some processers (ie; Sparc,ARM) can be switched either way. This routine is called automatically by the library at startup and does not need to be called in an application program. \mbox{\Hypertarget{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}\label{classxb_1_1xbSsv_a7b992ed97281bf25b5b66f5df686225e}}
+\index{xb::xbTblMgr@{xb::xbTblMgr}!SetLogDirectory@{SetLogDirectory}}
+\index{SetLogDirectory@{SetLogDirectory}!xb::xbTblMgr@{xb::xbTblMgr}}
+\doxysubsubsection{\texorpdfstring{SetLogDirectory()}{SetLogDirectory()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+\mbox{\Hypertarget{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}\label{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}}
\index{xb::xbTblMgr@{xb::xbTblMgr}!SetMultiUser@{SetMultiUser}}
\index{SetMultiUser@{SetMultiUser}!xb::xbTblMgr@{xb::xbTblMgr}}
\doxysubsubsection{\texorpdfstring{SetMultiUser()}{SetMultiUser()}}
@@ -415,5 +435,5 @@ Get the multi user setting.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbtblmgr_8cpp}{xbtblmgr.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbtblmgr_8cpp}{xbtblmgr.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/classxb_1_1xbXBase.pdf b/docs/doxygen/latex/classxb_1_1xbXBase.pdf
index 8a4a3d1..1e5d6fd 100644
--- a/docs/doxygen/latex/classxb_1_1xbXBase.pdf
+++ b/docs/doxygen/latex/classxb_1_1xbXBase.pdf
Binary files differ
diff --git a/docs/doxygen/latex/classxb_1_1xbXBase.tex b/docs/doxygen/latex/classxb_1_1xbXBase.tex
index b08ea8c..7159134 100644
--- a/docs/doxygen/latex/classxb_1_1xbXBase.tex
+++ b/docs/doxygen/latex/classxb_1_1xbXBase.tex
@@ -58,9 +58,13 @@ xb\+Int16 \mbox{\hyperlink{classxb_1_1xbXBase_a0dff00b9ee3c288841e137ca01168116}
\item
void \mbox{\hyperlink{classxb_1_1xbXBase_a0915aff7be4b2dd3e881f3c5d0da4baf}{xb\+Sleep}} (xb\+Int32 l\+Millisecs)
\begin{DoxyCompactList}\small\item\em Cross platform sleep function. \end{DoxyCompactList}\item
-xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a721f69ccc7893842422a043468ffccea}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Name)
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbXBase_aadecb3ac460d8e94b88b2e809e22f48e}{Get\+Cmd\+Line\+Opt}} (xb\+Int32 l\+Argc, char $\ast$$\ast$argv, const char $\ast$s\+Opt\+Rqst, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Parm\+Out)
+\begin{DoxyCompactList}\small\item\em Parse commmand line options for a given parm request. \end{DoxyCompactList}\item
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbXBase_a8612e0c5334349fbceb9394b47817fd5}{Get\+Cmd\+Line\+Opt}} (xb\+Int32 l\+Argc, char $\ast$$\ast$argv, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Opt\+Rqst, \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Parm\+Out)
+\begin{DoxyCompactList}\small\item\em Parse commmand line options for a given parm request. \end{DoxyCompactList}\item
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_af16832ff2bfaee09265652e0fc03709a}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fq\+Tbl\+Name)
\item
-xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a62f6841849dbe5c1768f7e90f1b7e766}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Name, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Alias)
+xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a2033188e9b08778188a034a6fc90ca85}{Add\+Tbl\+To\+Tbl\+List}} (\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$d, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Fq\+Tbl\+Name, const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Tbl\+Alias)
\item
xb\+Int16 \mbox{\hyperlink{classxb_1_1xbTblMgr_a5eebffb9e8cc64141e35c2622045cb50}{Display\+Table\+List}} () const
\item
@@ -100,12 +104,8 @@ void \mbox{\hyperlink{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}{Bit\+D
\begin{DoxyCompactList}\small\item\em Get the default auto commit setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_a25542afadaaf39b4fb5a1772a29cc0bd}{Set\+Default\+Auto\+Commit}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Default\+Auto\+Commit)
\begin{DoxyCompactList}\small\item\em Set the default auto commit. \end{DoxyCompactList}\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}{Get\+Default\+Log\+Directory}} () const
-\item
-\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& \mbox{\hyperlink{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}{Get\+Default\+Log\+File\+Name}} () const
-\item
-void \mbox{\hyperlink{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}{Set\+Default\+Log\+Directory}} (const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Default\+Log\+Directory)
-\item
+void \mbox{\hyperlink{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}{Get\+Home\+Dir}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&s\+Home\+Dir\+Out)
+\begin{DoxyCompactList}\small\item\em Get home directory. \end{DoxyCompactList}\item
\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} \mbox{\hyperlink{classxb_1_1xbSsv_abd58031c5f1c3766c24d47a82e6fd9c5}{Get\+Multi\+User}} () const
\begin{DoxyCompactList}\small\item\em Get the multi user setting. \end{DoxyCompactList}\item
void \mbox{\hyperlink{classxb_1_1xbSsv_aba6e59512f7172dd55dcf92059e5928c}{Set\+Multi\+User}} (\mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xb\+Bool}} b\+Multi\+User)
@@ -172,17 +172,17 @@ Class Deconstructor.
\doxysubsection{Member Function Documentation}
-\mbox{\Hypertarget{classxb_1_1xbTblMgr_a721f69ccc7893842422a043468ffccea}\label{classxb_1_1xbTblMgr_a721f69ccc7893842422a043468ffccea}}
+\mbox{\Hypertarget{classxb_1_1xbTblMgr_af16832ff2bfaee09265652e0fc03709a}\label{classxb_1_1xbTblMgr_af16832ff2bfaee09265652e0fc03709a}}
\index{xb::xbXBase@{xb::xbXBase}!AddTblToTblList@{AddTblToTblList}}
\index{AddTblToTblList@{AddTblToTblList}!xb::xbXBase@{xb::xbXBase}}
\doxysubsubsection{\texorpdfstring{AddTblToTblList()}{AddTblToTblList()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
-{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Fq\+Tbl\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
-\mbox{\Hypertarget{classxb_1_1xbTblMgr_a62f6841849dbe5c1768f7e90f1b7e766}\label{classxb_1_1xbTblMgr_a62f6841849dbe5c1768f7e90f1b7e766}}
+\mbox{\Hypertarget{classxb_1_1xbTblMgr_a2033188e9b08778188a034a6fc90ca85}\label{classxb_1_1xbTblMgr_a2033188e9b08778188a034a6fc90ca85}}
\index{xb::xbXBase@{xb::xbXBase}!AddTblToTblList@{AddTblToTblList}}
\index{AddTblToTblList@{AddTblToTblList}!xb::xbXBase@{xb::xbXBase}}
\doxysubsubsection{\texorpdfstring{AddTblToTblList()}{AddTblToTblList()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
-{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Name, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Alias }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+Tbl\+Mgr\+::\+Add\+Tbl\+To\+Tbl\+List (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbDbf}{xb\+Dbf}} $\ast$}]{d, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Fq\+Tbl\+Name, }\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Tbl\+Alias }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
\mbox{\Hypertarget{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}\label{classxb_1_1xbSsv_aba1395b8e4c7f28c3614061de6e49190}}
\index{xb::xbXBase@{xb::xbXBase}!BitDump@{BitDump}}
@@ -269,6 +269,56 @@ Display error message on console for a given error number.
\doxysubsubsection{\texorpdfstring{FlushLog()}{FlushLog()}}
{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+XBase\+::\+Flush\+Log (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+\mbox{\Hypertarget{classxb_1_1xbXBase_aadecb3ac460d8e94b88b2e809e22f48e}\label{classxb_1_1xbXBase_aadecb3ac460d8e94b88b2e809e22f48e}}
+\index{xb::xbXBase@{xb::xbXBase}!GetCmdLineOpt@{GetCmdLineOpt}}
+\index{GetCmdLineOpt@{GetCmdLineOpt}!xb::xbXBase@{xb::xbXBase}}
+\doxysubsubsection{\texorpdfstring{GetCmdLineOpt()}{GetCmdLineOpt()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+XBase\+::\+Get\+Cmd\+Line\+Opt (\begin{DoxyParamCaption}\item[{xb\+Int32}]{l\+Argc, }\item[{char $\ast$$\ast$}]{s\+Argv, }\item[{const char $\ast$}]{s\+Opt\+Rqst, }\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Parm\+Out }\end{DoxyParamCaption})}
+
+
+
+Parse commmand line options for a given parm request.
+
+
+\begin{DoxyParams}{Parameters}
+{\em l\+Argc} & Value passed from main( argc, argv\mbox{[}$\,$\mbox{]} ) \\
+\hline
+{\em s\+Argv} & Valued passed from main \\
+\hline
+{\em s\+Opt\+Rqst} & Option to search for in the arguments list \\
+\hline
+{\em s\+Parm\+Out} & String token immediately to the right of the the option request, if found \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+0 -\/ paramater request not found~\newline
+ 1 -\/ Parameter found
+\end{DoxyReturn}
+\mbox{\Hypertarget{classxb_1_1xbXBase_a8612e0c5334349fbceb9394b47817fd5}\label{classxb_1_1xbXBase_a8612e0c5334349fbceb9394b47817fd5}}
+\index{xb::xbXBase@{xb::xbXBase}!GetCmdLineOpt@{GetCmdLineOpt}}
+\index{GetCmdLineOpt@{GetCmdLineOpt}!xb::xbXBase@{xb::xbXBase}}
+\doxysubsubsection{\texorpdfstring{GetCmdLineOpt()}{GetCmdLineOpt()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
+{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+XBase\+::\+Get\+Cmd\+Line\+Opt (\begin{DoxyParamCaption}\item[{xb\+Int32}]{l\+Argc, }\item[{char $\ast$$\ast$}]{s\+Argv, }\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Opt\+Rqst, }\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Parm\+Out }\end{DoxyParamCaption})}
+
+
+
+Parse commmand line options for a given parm request.
+
+
+\begin{DoxyParams}{Parameters}
+{\em l\+Argc} & Value passed from main( argc, argv\mbox{[}$\,$\mbox{]} ) \\
+\hline
+{\em s\+Argv} & Valued passed from main \\
+\hline
+{\em s\+Opt\+Rqst} & Option to search for in the arguments list \\
+\hline
+{\em s\+Parm\+Out} & String token immediately to the right of the the option request, if found \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+0 -\/ paramater request not found~\newline
+ 1 -\/ Parameter found
+\end{DoxyReturn}
\mbox{\Hypertarget{classxb_1_1xbSsv_a1d803a4bfc8ba0561267a0bf9e51f7d9}\label{classxb_1_1xbSsv_a1d803a4bfc8ba0561267a0bf9e51f7d9}}
\index{xb::xbXBase@{xb::xbXBase}!GetDataDirectory@{GetDataDirectory}}
\index{GetDataDirectory@{GetDataDirectory}!xb::xbXBase@{xb::xbXBase}}
@@ -323,18 +373,6 @@ Get the default date format.
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} containing the default date format.
\end{DoxyReturn}
-\mbox{\Hypertarget{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}\label{classxb_1_1xbSsv_abf3763faf6a8917a963213cd53af529c}}
-\index{xb::xbXBase@{xb::xbXBase}!GetDefaultLogDirectory@{GetDefaultLogDirectory}}
-\index{GetDefaultLogDirectory@{GetDefaultLogDirectory}!xb::xbXBase@{xb::xbXBase}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogDirectory()}{GetDefaultLogDirectory()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+Directory (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
-\mbox{\Hypertarget{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}\label{classxb_1_1xbSsv_a43878d4dc041f2a5e2398a118ccfaf79}}
-\index{xb::xbXBase@{xb::xbXBase}!GetDefaultLogFileName@{GetDefaultLogFileName}}
-\index{GetDefaultLogFileName@{GetDefaultLogFileName}!xb::xbXBase@{xb::xbXBase}}
-\doxysubsubsection{\texorpdfstring{GetDefaultLogFileName()}{GetDefaultLogFileName()}}
-{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \& xb\+::xb\+Ssv\+::\+Get\+Default\+Log\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}\label{classxb_1_1xbSsv_a49cd162f066eef2b829ba7c9f6620243}}
\index{xb::xbXBase@{xb::xbXBase}!GetEndianType@{GetEndianType}}
\index{GetEndianType@{GetEndianType}!xb::xbXBase@{xb::xbXBase}}
@@ -374,6 +412,24 @@ Returns a pointer to a string containing a text description for the error code.
\doxysubsubsection{\texorpdfstring{GetFunctionInfo()}{GetFunctionInfo()}}
{\footnotesize\ttfamily xb\+Int16 xb\+::xb\+XBase\+::\+Get\+Function\+Info (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Exp\+Line, }\item[{char \&}]{c\+Return\+Type, }\item[{xb\+Int16 \&}]{i\+Return\+Len\+Calc, }\item[{xb\+Int32 \&}]{l\+Return\+Len\+Val }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}
+\mbox{\Hypertarget{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}\label{classxb_1_1xbSsv_abc9c06c95d71fbad8294e1ae8862cea9}}
+\index{xb::xbXBase@{xb::xbXBase}!GetHomeDir@{GetHomeDir}}
+\index{GetHomeDir@{GetHomeDir}!xb::xbXBase@{xb::xbXBase}}
+\doxysubsubsection{\texorpdfstring{GetHomeDir()}{GetHomeDir()}}
+{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Get\+Home\+Dir (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Home\+Dir\+Out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
+
+
+
+Get home directory.
+
+
+\begin{DoxyParams}{Parameters}
+{\em s\+Home\+Dir\+Out} & -\/ Output home directory for current user. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+void
+\end{DoxyReturn}
\mbox{\Hypertarget{classxb_1_1xbXBase_a51d49b4d699740194b28c6ec0d0ee07b}\label{classxb_1_1xbXBase_a51d49b4d699740194b28c6ec0d0ee07b}}
\index{xb::xbXBase@{xb::xbXBase}!GetLogDirectory@{GetLogDirectory}}
\index{GetLogDirectory@{GetLogDirectory}!xb::xbXBase@{xb::xbXBase}}
@@ -541,12 +597,6 @@ Set the default date format.
{\em s\+Default\+Date\+Format} & Set the default date format. \\
\hline
\end{DoxyParams}
-\mbox{\Hypertarget{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}\label{classxb_1_1xbSsv_a84343b8645790791512d6bc22ee6c8eb}}
-\index{xb::xbXBase@{xb::xbXBase}!SetDefaultLogDirectory@{SetDefaultLogDirectory}}
-\index{SetDefaultLogDirectory@{SetDefaultLogDirectory}!xb::xbXBase@{xb::xbXBase}}
-\doxysubsubsection{\texorpdfstring{SetDefaultLogDirectory()}{SetDefaultLogDirectory()}}
-{\footnotesize\ttfamily void xb\+::xb\+Ssv\+::\+Set\+Default\+Log\+Directory (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} \&}]{s\+Default\+Log\+Directory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}
-
\mbox{\Hypertarget{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}\label{classxb_1_1xbSsv_a904ec348fd029d4a76e72b8fde636108}}
\index{xb::xbXBase@{xb::xbXBase}!SetEndianType@{SetEndianType}}
\index{SetEndianType@{SetEndianType}!xb::xbXBase@{xb::xbXBase}}
@@ -683,5 +733,5 @@ Cross platform sleep function.
The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbxbase_8h}{xbxbase.\+h}}\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbxbase_8cpp}{xbxbase.\+cpp}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbxbase_8h}{xbxbase.\+h}}\item
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbxbase_8cpp}{xbxbase.\+cpp}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/dir_25b94c3afce00ed38231227d8141f932.tex b/docs/doxygen/latex/dir_25b94c3afce00ed38231227d8141f932.tex
index 3613498..94a598e 100644
--- a/docs/doxygen/latex/dir_25b94c3afce00ed38231227d8141f932.tex
+++ b/docs/doxygen/latex/dir_25b94c3afce00ed38231227d8141f932.tex
@@ -1,5 +1,5 @@
-\hypertarget{dir_25b94c3afce00ed38231227d8141f932}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql Directory Reference}
-\label{dir_25b94c3afce00ed38231227d8141f932}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql Directory Reference}}
+\hypertarget{dir_25b94c3afce00ed38231227d8141f932}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql Directory Reference}
+\label{dir_25b94c3afce00ed38231227d8141f932}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql Directory Reference}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item
@@ -9,6 +9,8 @@ file \mbox{\hyperlink{xbcrix_8cpp}{xbcrix.\+cpp}}
\item
file \mbox{\hyperlink{xbcrtbl_8cpp}{xbcrtbl.\+cpp}}
\item
+file \mbox{\hyperlink{xbcrtbl_8save_8cpp}{xbcrtbl.\+save.\+cpp}}
+\item
file \mbox{\hyperlink{xbdelete_8cpp}{xbdelete.\+cpp}}
\item
file \mbox{\hyperlink{xbdrpix_8cpp}{xbdrpix.\+cpp}}
@@ -17,7 +19,11 @@ file \mbox{\hyperlink{xbdrptbl_8cpp}{xbdrptbl.\+cpp}}
\item
file \mbox{\hyperlink{xbinsert_8cpp}{xbinsert.\+cpp}}
\item
+file \mbox{\hyperlink{xbselect_8cpp}{xbselect.\+cpp}}
+\item
file \mbox{\hyperlink{xbset_8cpp}{xbset.\+cpp}}
\item
file \mbox{\hyperlink{xbsql_8cpp}{xbsql.\+cpp}}
+\item
+file \mbox{\hyperlink{xbstmt_8cpp}{xbstmt.\+cpp}}
\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/dir_313caf1132e152dd9b58bea13a4052ca.tex b/docs/doxygen/latex/dir_313caf1132e152dd9b58bea13a4052ca.tex
index f4e47fb..4668464 100644
--- a/docs/doxygen/latex/dir_313caf1132e152dd9b58bea13a4052ca.tex
+++ b/docs/doxygen/latex/dir_313caf1132e152dd9b58bea13a4052ca.tex
@@ -1,5 +1,5 @@
-\hypertarget{dir_313caf1132e152dd9b58bea13a4052ca}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils Directory Reference}
-\label{dir_313caf1132e152dd9b58bea13a4052ca}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils Directory Reference}}
+\hypertarget{dir_313caf1132e152dd9b58bea13a4052ca}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils Directory Reference}
+\label{dir_313caf1132e152dd9b58bea13a4052ca}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils Directory Reference}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item
@@ -13,10 +13,6 @@ file \mbox{\hyperlink{xb__deletall_8cpp}{xb\+\_\+deletall.\+cpp}}
\item
file \mbox{\hyperlink{xb__dumpdbt_8cpp}{xb\+\_\+dumpdbt.\+cpp}}
\item
-file \mbox{\hyperlink{xb__dumphdr_8cpp}{xb\+\_\+dumphdr.\+cpp}}
-\item
-file \mbox{\hyperlink{xb__dumpix_8cpp}{xb\+\_\+dumpix.\+cpp}}
-\item
file \mbox{\hyperlink{xb__dumprecs_8cpp}{xb\+\_\+dumprecs.\+cpp}}
\item
file \mbox{\hyperlink{xb__execsql_8cpp}{xb\+\_\+execsql.\+cpp}}
@@ -26,6 +22,4 @@ file \mbox{\hyperlink{xb__pack_8cpp}{xb\+\_\+pack.\+cpp}}
file \mbox{\hyperlink{xb__tblinfo_8cpp}{xb\+\_\+tblinfo.\+cpp}}
\item
file \mbox{\hyperlink{xb__undelall_8cpp}{xb\+\_\+undelall.\+cpp}}
-\item
-file \mbox{\hyperlink{xb__zap_8cpp}{xb\+\_\+zap.\+cpp}}
\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/docs/doxygen/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
index 8120370..935234e 100644
--- a/docs/doxygen/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
+++ b/docs/doxygen/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
@@ -1,5 +1,5 @@
-\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src Directory Reference}
-\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src Directory Reference}}
+\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src Directory Reference}
+\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src Directory Reference}}
\doxysubsection*{Directories}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/dir_aebb8dcc11953d78e620bbef0b9e2183.tex b/docs/doxygen/latex/dir_aebb8dcc11953d78e620bbef0b9e2183.tex
index e75fef9..85ce0c9 100644
--- a/docs/doxygen/latex/dir_aebb8dcc11953d78e620bbef0b9e2183.tex
+++ b/docs/doxygen/latex/dir_aebb8dcc11953d78e620bbef0b9e2183.tex
@@ -1,10 +1,12 @@
-\hypertarget{dir_aebb8dcc11953d78e620bbef0b9e2183}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core Directory Reference}
-\label{dir_aebb8dcc11953d78e620bbef0b9e2183}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core Directory Reference}}
+\hypertarget{dir_aebb8dcc11953d78e620bbef0b9e2183}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core Directory Reference}
+\label{dir_aebb8dcc11953d78e620bbef0b9e2183}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core Directory Reference}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item
file \mbox{\hyperlink{xbbcd_8cpp}{xbbcd.\+cpp}}
\item
+file \mbox{\hyperlink{xbblockread_8cpp}{xbblockread.\+cpp}}
+\item
file \mbox{\hyperlink{xbdate_8cpp}{xbdate.\+cpp}}
\item
file \mbox{\hyperlink{xbdbf_8cpp}{xbdbf.\+cpp}}
diff --git a/docs/doxygen/latex/dir_b0856f6b0d80ccb263b2f415c91f9e17.tex b/docs/doxygen/latex/dir_b0856f6b0d80ccb263b2f415c91f9e17.tex
index ec479db..539439f 100644
--- a/docs/doxygen/latex/dir_b0856f6b0d80ccb263b2f415c91f9e17.tex
+++ b/docs/doxygen/latex/dir_b0856f6b0d80ccb263b2f415c91f9e17.tex
@@ -1,5 +1,5 @@
-\hypertarget{dir_b0856f6b0d80ccb263b2f415c91f9e17}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include Directory Reference}
-\label{dir_b0856f6b0d80ccb263b2f415c91f9e17}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include Directory Reference}}
+\hypertarget{dir_b0856f6b0d80ccb263b2f415c91f9e17}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include Directory Reference}
+\label{dir_b0856f6b0d80ccb263b2f415c91f9e17}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include Directory Reference}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item
@@ -7,6 +7,8 @@ file \mbox{\hyperlink{xbase_8h}{xbase.\+h}}
\item
file \mbox{\hyperlink{xbbcd_8h}{xbbcd.\+h}}
\item
+file \mbox{\hyperlink{xbblkread_8h}{xbblkread.\+h}}
+\item
file \mbox{\hyperlink{xbdate_8h}{xbdate.\+h}}
\item
file \mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}}
diff --git a/docs/doxygen/latex/dir_d93a1d4020dea85bb71b237545b5e722.tex b/docs/doxygen/latex/dir_d93a1d4020dea85bb71b237545b5e722.tex
index c325fc6..1fceb7c 100644
--- a/docs/doxygen/latex/dir_d93a1d4020dea85bb71b237545b5e722.tex
+++ b/docs/doxygen/latex/dir_d93a1d4020dea85bb71b237545b5e722.tex
@@ -1,5 +1,5 @@
-\hypertarget{dir_d93a1d4020dea85bb71b237545b5e722}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests Directory Reference}
-\label{dir_d93a1d4020dea85bb71b237545b5e722}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests Directory Reference}}
+\hypertarget{dir_d93a1d4020dea85bb71b237545b5e722}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests Directory Reference}
+\label{dir_d93a1d4020dea85bb71b237545b5e722}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests Directory Reference}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item
@@ -7,6 +7,8 @@ file \mbox{\hyperlink{tstfuncs_8cpp}{tstfuncs.\+cpp}}
\item
file \mbox{\hyperlink{xb__test__bcd_8cpp}{xb\+\_\+test\+\_\+bcd.\+cpp}}
\item
+file \mbox{\hyperlink{xb__test__blockread_8cpp}{xb\+\_\+test\+\_\+blockread.\+cpp}}
+\item
file \mbox{\hyperlink{xb__test__date_8cpp}{xb\+\_\+test\+\_\+date.\+cpp}}
\item
file \mbox{\hyperlink{xb__test__dbf__v3__memos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+memos.\+cpp}}
diff --git a/docs/doxygen/latex/dir_e931c1a3f0014e624d0645a271726ad2.tex b/docs/doxygen/latex/dir_e931c1a3f0014e624d0645a271726ad2.tex
index 42a8762..6d87543 100644
--- a/docs/doxygen/latex/dir_e931c1a3f0014e624d0645a271726ad2.tex
+++ b/docs/doxygen/latex/dir_e931c1a3f0014e624d0645a271726ad2.tex
@@ -1,12 +1,16 @@
-\hypertarget{dir_e931c1a3f0014e624d0645a271726ad2}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples Directory Reference}
-\label{dir_e931c1a3f0014e624d0645a271726ad2}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples Directory Reference}}
+\hypertarget{dir_e931c1a3f0014e624d0645a271726ad2}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples Directory Reference}
+\label{dir_e931c1a3f0014e624d0645a271726ad2}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples Directory Reference@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples Directory Reference}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item
file \mbox{\hyperlink{xb__ex__date_8cpp}{xb\+\_\+ex\+\_\+date.\+cpp}}
\item
+file \mbox{\hyperlink{xb__ex__expression_8cpp}{xb\+\_\+ex\+\_\+expression.\+cpp}}
+\item
file \mbox{\hyperlink{xb__ex__sql_8cpp}{xb\+\_\+ex\+\_\+sql.\+cpp}}
\item
+file \mbox{\hyperlink{xb__ex__ssv_8cpp}{xb\+\_\+ex\+\_\+ssv.\+cpp}}
+\item
file \mbox{\hyperlink{xb__ex__string_8cpp}{xb\+\_\+ex\+\_\+string.\+cpp}}
\item
file \mbox{\hyperlink{xb__ex__v3__create__dbf_8cpp}{xb\+\_\+ex\+\_\+v3\+\_\+create\+\_\+dbf.\+cpp}}
diff --git a/docs/doxygen/latex/files.tex b/docs/doxygen/latex/files.tex
index 5562162..aae1da4 100644
--- a/docs/doxygen/latex/files.tex
+++ b/docs/doxygen/latex/files.tex
@@ -1,102 +1,107 @@
\doxysection{File List}
Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbbcd_8cpp}{xbbcd.\+cpp}} }{\pageref{xbbcd_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbdate_8cpp}{xbdate.\+cpp}} }{\pageref{xbdate_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbdbf_8cpp}{xbdbf.\+cpp}} }{\pageref{xbdbf_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbdbf3_8cpp}{xbdbf3.\+cpp}} }{\pageref{xbdbf3_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbdbf4_8cpp}{xbdbf4.\+cpp}} }{\pageref{xbdbf4_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbexp_8cpp}{xbexp.\+cpp}} }{\pageref{xbexp_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbexpnode_8cpp}{xbexpnode.\+cpp}} }{\pageref{xbexpnode_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbfields_8cpp}{xbfields.\+cpp}} }{\pageref{xbfields_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbfile_8cpp}{xbfile.\+cpp}} }{\pageref{xbfile_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbfilter_8cpp}{xbfilter.\+cpp}} }{\pageref{xbfilter_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbfuncs_8cpp}{xbfuncs.\+cpp}} }{\pageref{xbfuncs_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbixbase_8cpp}{xbixbase.\+cpp}} }{\pageref{xbixbase_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbixmdx_8cpp}{xbixmdx.\+cpp}} }{\pageref{xbixmdx_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbixndx_8cpp}{xbixndx.\+cpp}} }{\pageref{xbixndx_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xblog_8cpp}{xblog.\+cpp}} }{\pageref{xblog_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbmemo_8cpp}{xbmemo.\+cpp}} }{\pageref{xbmemo_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbmemo3_8cpp}{xbmemo3.\+cpp}} }{\pageref{xbmemo3_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbmemo4_8cpp}{xbmemo4.\+cpp}} }{\pageref{xbmemo4_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbssv_8cpp}{xbssv.\+cpp}} }{\pageref{xbssv_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbstring_8cpp}{xbstring.\+cpp}} }{\pageref{xbstring_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbtag_8cpp}{xbtag.\+cpp}} }{\pageref{xbtag_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbtblmgr_8cpp}{xbtblmgr.\+cpp}} }{\pageref{xbtblmgr_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbuda_8cpp}{xbuda.\+cpp}} }{\pageref{xbuda_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/core/\mbox{\hyperlink{xbxbase_8cpp}{xbxbase.\+cpp}} }{\pageref{xbxbase_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__date_8cpp}{xb\+\_\+ex\+\_\+date.\+cpp}} }{\pageref{xb__ex__date_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__sql_8cpp}{xb\+\_\+ex\+\_\+sql.\+cpp}} }{\pageref{xb__ex__sql_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__string_8cpp}{xb\+\_\+ex\+\_\+string.\+cpp}} }{\pageref{xb__ex__string_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__v3__create__dbf_8cpp}{xb\+\_\+ex\+\_\+v3\+\_\+create\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v3__create__dbf_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__v3__upd__dbf_8cpp}{xb\+\_\+ex\+\_\+v3\+\_\+upd\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v3__upd__dbf_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__v4__create__dbf_8cpp}{xb\+\_\+ex\+\_\+v4\+\_\+create\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v4__create__dbf_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/examples/\mbox{\hyperlink{xb__ex__v4__upd__dbf_8cpp}{xb\+\_\+ex\+\_\+v4\+\_\+upd\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v4__upd__dbf_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbase_8h}{xbase.\+h}} }{\pageref{xbase_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbbcd_8h}{xbbcd.\+h}} }{\pageref{xbbcd_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbdate_8h}{xbdate.\+h}} }{\pageref{xbdate_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}} }{\pageref{xbdbf_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbexp_8h}{xbexp.\+h}} }{\pageref{xbexp_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbexpnode_8h}{xbexpnode.\+h}} }{\pageref{xbexpnode_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbfile_8h}{xbfile.\+h}} }{\pageref{xbfile_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbfilter_8h}{xbfilter.\+h}} }{\pageref{xbfilter_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbindex_8h}{xbindex.\+h}} }{\pageref{xbindex_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xblnklst_8h}{xblnklst.\+h}} }{\pageref{xblnklst_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xblnklstord_8h}{xblnklstord.\+h}} }{\pageref{xblnklstord_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xblnknod_8h}{xblnknod.\+h}} }{\pageref{xblnknod_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xblog_8h}{xblog.\+h}} }{\pageref{xblog_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbmemo_8h}{xbmemo.\+h}} }{\pageref{xbmemo_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbretcod_8h}{xbretcod.\+h}} }{\pageref{xbretcod_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbsql_8h}{xbsql.\+h}} }{\pageref{xbsql_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbssv_8h}{xbssv.\+h}} }{\pageref{xbssv_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbstring_8h}{xbstring.\+h}} }{\pageref{xbstring_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbtag_8h}{xbtag.\+h}} }{\pageref{xbtag_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.\+h}} }{\pageref{xbtblmgr_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbtypes_8h}{xbtypes.\+h}} }{\pageref{xbtypes_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbuda_8h}{xbuda.\+h}} }{\pageref{xbuda_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbxbase_8h}{xbxbase.\+h}} }{\pageref{xbxbase_8h}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbalttbl_8cpp}{xbalttbl.\+cpp}} }{\pageref{xbalttbl_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbcrix_8cpp}{xbcrix.\+cpp}} }{\pageref{xbcrix_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbcrtbl_8cpp}{xbcrtbl.\+cpp}} }{\pageref{xbcrtbl_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbdelete_8cpp}{xbdelete.\+cpp}} }{\pageref{xbdelete_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbdrpix_8cpp}{xbdrpix.\+cpp}} }{\pageref{xbdrpix_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbdrptbl_8cpp}{xbdrptbl.\+cpp}} }{\pageref{xbdrptbl_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbinsert_8cpp}{xbinsert.\+cpp}} }{\pageref{xbinsert_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbset_8cpp}{xbset.\+cpp}} }{\pageref{xbset_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/sql/\mbox{\hyperlink{xbsql_8cpp}{xbsql.\+cpp}} }{\pageref{xbsql_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{tstfuncs_8cpp}{tstfuncs.\+cpp}} }{\pageref{tstfuncs_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__bcd_8cpp}{xb\+\_\+test\+\_\+bcd.\+cpp}} }{\pageref{xb__test__bcd_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__date_8cpp}{xb\+\_\+test\+\_\+date.\+cpp}} }{\pageref{xb__test__date_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__dbf__v3__memos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+memos.\+cpp}} }{\pageref{xb__test__dbf__v3__memos_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__dbf__v3__nomemos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+nomemos.\+cpp}} }{\pageref{xb__test__dbf__v3__nomemos_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__dbf__v4__memos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+memos.\+cpp}} }{\pageref{xb__test__dbf__v4__memos_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__dbf__v4__nomemos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+nomemos.\+cpp}} }{\pageref{xb__test__dbf__v4__nomemos_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__expnode_8cpp}{xb\+\_\+test\+\_\+expnode.\+cpp}} }{\pageref{xb__test__expnode_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__expression_8cpp}{xb\+\_\+test\+\_\+expression.\+cpp}} }{\pageref{xb__test__expression_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__file_8cpp}{xb\+\_\+test\+\_\+file.\+cpp}} }{\pageref{xb__test__file_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__filter_8cpp}{xb\+\_\+test\+\_\+filter.\+cpp}} }{\pageref{xb__test__filter_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__funcs_8cpp}{xb\+\_\+test\+\_\+funcs.\+cpp}} }{\pageref{xb__test__funcs_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__linklist_8cpp}{xb\+\_\+test\+\_\+linklist.\+cpp}} }{\pageref{xb__test__linklist_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__lock_8cpp}{xb\+\_\+test\+\_\+lock.\+cpp}} }{\pageref{xb__test__lock_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__lock2_8cpp}{xb\+\_\+test\+\_\+lock2.\+cpp}} }{\pageref{xb__test__lock2_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__log_8cpp}{xb\+\_\+test\+\_\+log.\+cpp}} }{\pageref{xb__test__log_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__mdx_8cpp}{xb\+\_\+test\+\_\+mdx.\+cpp}} }{\pageref{xb__test__mdx_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__ndx_8cpp}{xb\+\_\+test\+\_\+ndx.\+cpp}} }{\pageref{xb__test__ndx_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__sql_8cpp}{xb\+\_\+test\+\_\+sql.\+cpp}} }{\pageref{xb__test__sql_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__string_8cpp}{xb\+\_\+test\+\_\+string.\+cpp}} }{\pageref{xb__test__string_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__tblmgr_8cpp}{xb\+\_\+test\+\_\+tblmgr.\+cpp}} }{\pageref{xb__test__tblmgr_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__uda_8cpp}{xb\+\_\+test\+\_\+uda.\+cpp}} }{\pageref{xb__test__uda_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/tests/\mbox{\hyperlink{xb__test__xbase_8cpp}{xb\+\_\+test\+\_\+xbase.\+cpp}} }{\pageref{xb__test__xbase_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__cfg__check_8cpp}{xb\+\_\+cfg\+\_\+check.\+cpp}} }{\pageref{xb__cfg__check_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__copydbf_8cpp}{xb\+\_\+copydbf.\+cpp}} }{\pageref{xb__copydbf_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__dbfutil_8cpp}{xb\+\_\+dbfutil.\+cpp}} }{\pageref{xb__dbfutil_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__deletall_8cpp}{xb\+\_\+deletall.\+cpp}} }{\pageref{xb__deletall_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__dumpdbt_8cpp}{xb\+\_\+dumpdbt.\+cpp}} }{\pageref{xb__dumpdbt_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__dumphdr_8cpp}{xb\+\_\+dumphdr.\+cpp}} }{\pageref{xb__dumphdr_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__dumpix_8cpp}{xb\+\_\+dumpix.\+cpp}} }{\pageref{xb__dumpix_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__dumprecs_8cpp}{xb\+\_\+dumprecs.\+cpp}} }{\pageref{xb__dumprecs_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__execsql_8cpp}{xb\+\_\+execsql.\+cpp}} }{\pageref{xb__execsql_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__pack_8cpp}{xb\+\_\+pack.\+cpp}} }{\pageref{xb__pack_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__tblinfo_8cpp}{xb\+\_\+tblinfo.\+cpp}} }{\pageref{xb__tblinfo_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__undelall_8cpp}{xb\+\_\+undelall.\+cpp}} }{\pageref{xb__undelall_8cpp}}{}
-\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/utils/\mbox{\hyperlink{xb__zap_8cpp}{xb\+\_\+zap.\+cpp}} }{\pageref{xb__zap_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbbcd_8cpp}{xbbcd.\+cpp}} }{\pageref{xbbcd_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbblockread_8cpp}{xbblockread.\+cpp}} }{\pageref{xbblockread_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbdate_8cpp}{xbdate.\+cpp}} }{\pageref{xbdate_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbdbf_8cpp}{xbdbf.\+cpp}} }{\pageref{xbdbf_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbdbf3_8cpp}{xbdbf3.\+cpp}} }{\pageref{xbdbf3_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbdbf4_8cpp}{xbdbf4.\+cpp}} }{\pageref{xbdbf4_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbexp_8cpp}{xbexp.\+cpp}} }{\pageref{xbexp_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbexpnode_8cpp}{xbexpnode.\+cpp}} }{\pageref{xbexpnode_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbfields_8cpp}{xbfields.\+cpp}} }{\pageref{xbfields_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbfile_8cpp}{xbfile.\+cpp}} }{\pageref{xbfile_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbfilter_8cpp}{xbfilter.\+cpp}} }{\pageref{xbfilter_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbfuncs_8cpp}{xbfuncs.\+cpp}} }{\pageref{xbfuncs_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbixbase_8cpp}{xbixbase.\+cpp}} }{\pageref{xbixbase_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbixmdx_8cpp}{xbixmdx.\+cpp}} }{\pageref{xbixmdx_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbixndx_8cpp}{xbixndx.\+cpp}} }{\pageref{xbixndx_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xblog_8cpp}{xblog.\+cpp}} }{\pageref{xblog_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbmemo_8cpp}{xbmemo.\+cpp}} }{\pageref{xbmemo_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbmemo3_8cpp}{xbmemo3.\+cpp}} }{\pageref{xbmemo3_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbmemo4_8cpp}{xbmemo4.\+cpp}} }{\pageref{xbmemo4_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbssv_8cpp}{xbssv.\+cpp}} }{\pageref{xbssv_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbstring_8cpp}{xbstring.\+cpp}} }{\pageref{xbstring_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbtag_8cpp}{xbtag.\+cpp}} }{\pageref{xbtag_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbtblmgr_8cpp}{xbtblmgr.\+cpp}} }{\pageref{xbtblmgr_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbuda_8cpp}{xbuda.\+cpp}} }{\pageref{xbuda_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/core/\mbox{\hyperlink{xbxbase_8cpp}{xbxbase.\+cpp}} }{\pageref{xbxbase_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__date_8cpp}{xb\+\_\+ex\+\_\+date.\+cpp}} }{\pageref{xb__ex__date_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__expression_8cpp}{xb\+\_\+ex\+\_\+expression.\+cpp}} }{\pageref{xb__ex__expression_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__sql_8cpp}{xb\+\_\+ex\+\_\+sql.\+cpp}} }{\pageref{xb__ex__sql_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__ssv_8cpp}{xb\+\_\+ex\+\_\+ssv.\+cpp}} }{\pageref{xb__ex__ssv_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__string_8cpp}{xb\+\_\+ex\+\_\+string.\+cpp}} }{\pageref{xb__ex__string_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__v3__create__dbf_8cpp}{xb\+\_\+ex\+\_\+v3\+\_\+create\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v3__create__dbf_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__v3__upd__dbf_8cpp}{xb\+\_\+ex\+\_\+v3\+\_\+upd\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v3__upd__dbf_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__v4__create__dbf_8cpp}{xb\+\_\+ex\+\_\+v4\+\_\+create\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v4__create__dbf_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/examples/\mbox{\hyperlink{xb__ex__v4__upd__dbf_8cpp}{xb\+\_\+ex\+\_\+v4\+\_\+upd\+\_\+dbf.\+cpp}} }{\pageref{xb__ex__v4__upd__dbf_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbase_8h}{xbase.\+h}} }{\pageref{xbase_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbbcd_8h}{xbbcd.\+h}} }{\pageref{xbbcd_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbblkread_8h}{xbblkread.\+h}} }{\pageref{xbblkread_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbdate_8h}{xbdate.\+h}} }{\pageref{xbdate_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}} }{\pageref{xbdbf_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbexp_8h}{xbexp.\+h}} }{\pageref{xbexp_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbexpnode_8h}{xbexpnode.\+h}} }{\pageref{xbexpnode_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbfile_8h}{xbfile.\+h}} }{\pageref{xbfile_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbfilter_8h}{xbfilter.\+h}} }{\pageref{xbfilter_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbindex_8h}{xbindex.\+h}} }{\pageref{xbindex_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xblnklst_8h}{xblnklst.\+h}} }{\pageref{xblnklst_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xblnklstord_8h}{xblnklstord.\+h}} }{\pageref{xblnklstord_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xblnknod_8h}{xblnknod.\+h}} }{\pageref{xblnknod_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xblog_8h}{xblog.\+h}} }{\pageref{xblog_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbmemo_8h}{xbmemo.\+h}} }{\pageref{xbmemo_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbretcod_8h}{xbretcod.\+h}} }{\pageref{xbretcod_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbsql_8h}{xbsql.\+h}} }{\pageref{xbsql_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbssv_8h}{xbssv.\+h}} }{\pageref{xbssv_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbstring_8h}{xbstring.\+h}} }{\pageref{xbstring_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbtag_8h}{xbtag.\+h}} }{\pageref{xbtag_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.\+h}} }{\pageref{xbtblmgr_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbtypes_8h}{xbtypes.\+h}} }{\pageref{xbtypes_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbuda_8h}{xbuda.\+h}} }{\pageref{xbuda_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbxbase_8h}{xbxbase.\+h}} }{\pageref{xbxbase_8h}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbalttbl_8cpp}{xbalttbl.\+cpp}} }{\pageref{xbalttbl_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbcrix_8cpp}{xbcrix.\+cpp}} }{\pageref{xbcrix_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbcrtbl_8cpp}{xbcrtbl.\+cpp}} }{\pageref{xbcrtbl_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbcrtbl_8save_8cpp}{xbcrtbl.\+save.\+cpp}} }{\pageref{xbcrtbl_8save_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbdelete_8cpp}{xbdelete.\+cpp}} }{\pageref{xbdelete_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbdrpix_8cpp}{xbdrpix.\+cpp}} }{\pageref{xbdrpix_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbdrptbl_8cpp}{xbdrptbl.\+cpp}} }{\pageref{xbdrptbl_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbinsert_8cpp}{xbinsert.\+cpp}} }{\pageref{xbinsert_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbselect_8cpp}{xbselect.\+cpp}} }{\pageref{xbselect_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbset_8cpp}{xbset.\+cpp}} }{\pageref{xbset_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbsql_8cpp}{xbsql.\+cpp}} }{\pageref{xbsql_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/sql/\mbox{\hyperlink{xbstmt_8cpp}{xbstmt.\+cpp}} }{\pageref{xbstmt_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{tstfuncs_8cpp}{tstfuncs.\+cpp}} }{\pageref{tstfuncs_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__bcd_8cpp}{xb\+\_\+test\+\_\+bcd.\+cpp}} }{\pageref{xb__test__bcd_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__blockread_8cpp}{xb\+\_\+test\+\_\+blockread.\+cpp}} }{\pageref{xb__test__blockread_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__date_8cpp}{xb\+\_\+test\+\_\+date.\+cpp}} }{\pageref{xb__test__date_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__dbf__v3__memos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+memos.\+cpp}} }{\pageref{xb__test__dbf__v3__memos_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__dbf__v3__nomemos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+nomemos.\+cpp}} }{\pageref{xb__test__dbf__v3__nomemos_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__dbf__v4__memos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+memos.\+cpp}} }{\pageref{xb__test__dbf__v4__memos_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__dbf__v4__nomemos_8cpp}{xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+nomemos.\+cpp}} }{\pageref{xb__test__dbf__v4__nomemos_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__expnode_8cpp}{xb\+\_\+test\+\_\+expnode.\+cpp}} }{\pageref{xb__test__expnode_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__expression_8cpp}{xb\+\_\+test\+\_\+expression.\+cpp}} }{\pageref{xb__test__expression_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__file_8cpp}{xb\+\_\+test\+\_\+file.\+cpp}} }{\pageref{xb__test__file_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__filter_8cpp}{xb\+\_\+test\+\_\+filter.\+cpp}} }{\pageref{xb__test__filter_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__funcs_8cpp}{xb\+\_\+test\+\_\+funcs.\+cpp}} }{\pageref{xb__test__funcs_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__linklist_8cpp}{xb\+\_\+test\+\_\+linklist.\+cpp}} }{\pageref{xb__test__linklist_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__lock_8cpp}{xb\+\_\+test\+\_\+lock.\+cpp}} }{\pageref{xb__test__lock_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__lock2_8cpp}{xb\+\_\+test\+\_\+lock2.\+cpp}} }{\pageref{xb__test__lock2_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__log_8cpp}{xb\+\_\+test\+\_\+log.\+cpp}} }{\pageref{xb__test__log_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__mdx_8cpp}{xb\+\_\+test\+\_\+mdx.\+cpp}} }{\pageref{xb__test__mdx_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__ndx_8cpp}{xb\+\_\+test\+\_\+ndx.\+cpp}} }{\pageref{xb__test__ndx_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__sql_8cpp}{xb\+\_\+test\+\_\+sql.\+cpp}} }{\pageref{xb__test__sql_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__string_8cpp}{xb\+\_\+test\+\_\+string.\+cpp}} }{\pageref{xb__test__string_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__tblmgr_8cpp}{xb\+\_\+test\+\_\+tblmgr.\+cpp}} }{\pageref{xb__test__tblmgr_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__uda_8cpp}{xb\+\_\+test\+\_\+uda.\+cpp}} }{\pageref{xb__test__uda_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/tests/\mbox{\hyperlink{xb__test__xbase_8cpp}{xb\+\_\+test\+\_\+xbase.\+cpp}} }{\pageref{xb__test__xbase_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__cfg__check_8cpp}{xb\+\_\+cfg\+\_\+check.\+cpp}} }{\pageref{xb__cfg__check_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__copydbf_8cpp}{xb\+\_\+copydbf.\+cpp}} }{\pageref{xb__copydbf_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__dbfutil_8cpp}{xb\+\_\+dbfutil.\+cpp}} }{\pageref{xb__dbfutil_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__deletall_8cpp}{xb\+\_\+deletall.\+cpp}} }{\pageref{xb__deletall_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__dumpdbt_8cpp}{xb\+\_\+dumpdbt.\+cpp}} }{\pageref{xb__dumpdbt_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__dumprecs_8cpp}{xb\+\_\+dumprecs.\+cpp}} }{\pageref{xb__dumprecs_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__execsql_8cpp}{xb\+\_\+execsql.\+cpp}} }{\pageref{xb__execsql_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__pack_8cpp}{xb\+\_\+pack.\+cpp}} }{\pageref{xb__pack_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__tblinfo_8cpp}{xb\+\_\+tblinfo.\+cpp}} }{\pageref{xb__tblinfo_8cpp}}{}
+\item\contentsline{section}{/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/utils/\mbox{\hyperlink{xb__undelall_8cpp}{xb\+\_\+undelall.\+cpp}} }{\pageref{xb__undelall_8cpp}}{}
\end{DoxyCompactList}
diff --git a/docs/doxygen/latex/refman.tex b/docs/doxygen/latex/refman.tex
index 6a9ec26..541e8e0 100644
--- a/docs/doxygen/latex/refman.tex
+++ b/docs/doxygen/latex/refman.tex
@@ -197,6 +197,7 @@
\input{classxb_1_1xbXBase}
\chapter{File Documentation}
\input{xbbcd_8cpp}
+\input{xbblockread_8cpp}
\input{xbdate_8cpp}
\input{xbdbf_8cpp}
\input{xbdbf3_8cpp}
@@ -221,7 +222,9 @@
\input{xbuda_8cpp}
\input{xbxbase_8cpp}
\input{xb__ex__date_8cpp}
+\input{xb__ex__expression_8cpp}
\input{xb__ex__sql_8cpp}
+\input{xb__ex__ssv_8cpp}
\input{xb__ex__string_8cpp}
\input{xb__ex__v3__create__dbf_8cpp}
\input{xb__ex__v3__upd__dbf_8cpp}
@@ -231,6 +234,8 @@
\input{xbase_8h_source}
\input{xbbcd_8h}
\input{xbbcd_8h_source}
+\input{xbblkread_8h}
+\input{xbblkread_8h_source}
\input{xbdate_8h}
\input{xbdate_8h_source}
\input{xbdbf_8h}
@@ -276,14 +281,18 @@
\input{xbalttbl_8cpp}
\input{xbcrix_8cpp}
\input{xbcrtbl_8cpp}
+\input{xbcrtbl_8save_8cpp}
\input{xbdelete_8cpp}
\input{xbdrpix_8cpp}
\input{xbdrptbl_8cpp}
\input{xbinsert_8cpp}
+\input{xbselect_8cpp}
\input{xbset_8cpp}
\input{xbsql_8cpp}
+\input{xbstmt_8cpp}
\input{tstfuncs_8cpp}
\input{xb__test__bcd_8cpp}
+\input{xb__test__blockread_8cpp}
\input{xb__test__date_8cpp}
\input{xb__test__dbf__v3__memos_8cpp}
\input{xb__test__dbf__v3__nomemos_8cpp}
@@ -310,14 +319,11 @@
\input{xb__dbfutil_8cpp}
\input{xb__deletall_8cpp}
\input{xb__dumpdbt_8cpp}
-\input{xb__dumphdr_8cpp}
-\input{xb__dumpix_8cpp}
\input{xb__dumprecs_8cpp}
\input{xb__execsql_8cpp}
\input{xb__pack_8cpp}
\input{xb__tblinfo_8cpp}
\input{xb__undelall_8cpp}
-\input{xb__zap_8cpp}
%--- End generated contents ---
% Index
\backmatter
diff --git a/docs/doxygen/latex/structxb_1_1xbSchema.tex b/docs/doxygen/latex/structxb_1_1xbSchema.tex
index 6e49e45..dd920fc 100644
--- a/docs/doxygen/latex/structxb_1_1xbSchema.tex
+++ b/docs/doxygen/latex/structxb_1_1xbSchema.tex
@@ -74,4 +74,4 @@ See program \mbox{\hyperlink{xb__ex__v3__create__dbf_8cpp}{xb\+\_\+ex\+\_\+v3\+\
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbdbf_8h}{xbdbf.\+h}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/structxb_1_1xbTblList.tex b/docs/doxygen/latex/structxb_1_1xbTblList.tex
index 4ddaab0..795d36e 100644
--- a/docs/doxygen/latex/structxb_1_1xbTblList.tex
+++ b/docs/doxygen/latex/structxb_1_1xbTblList.tex
@@ -9,6 +9,8 @@
\item
\mbox{\hyperlink{structxb_1_1xbTblList}{xb\+Tbl\+List}} $\ast$ \mbox{\hyperlink{structxb_1_1xbTblList_a3fd169fcf0fd4df927544e5342db583c}{p\+Next}}
\item
+\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} $\ast$ \mbox{\hyperlink{structxb_1_1xbTblList_aceec65f6f6b585788cf98e8dabd2737d}{ps\+Fq\+Tbl\+Name}}
+\item
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} $\ast$ \mbox{\hyperlink{structxb_1_1xbTblList_a02c3b0c47fd104ef9758b375ecdcfd0f}{ps\+Tbl\+Name}}
\item
\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} $\ast$ \mbox{\hyperlink{structxb_1_1xbTblList_ac87742c8a6b1cf2e7e35218e96966a05}{ps\+Tbl\+Alias}}
@@ -30,6 +32,12 @@
\doxysubsubsection{\texorpdfstring{pNext}{pNext}}
{\footnotesize\ttfamily \mbox{\hyperlink{structxb_1_1xbTblList}{xb\+Tbl\+List}}$\ast$ xb\+::xb\+Tbl\+List\+::p\+Next}
+\mbox{\Hypertarget{structxb_1_1xbTblList_aceec65f6f6b585788cf98e8dabd2737d}\label{structxb_1_1xbTblList_aceec65f6f6b585788cf98e8dabd2737d}}
+\index{xb::xbTblList@{xb::xbTblList}!psFqTblName@{psFqTblName}}
+\index{psFqTblName@{psFqTblName}!xb::xbTblList@{xb::xbTblList}}
+\doxysubsubsection{\texorpdfstring{psFqTblName}{psFqTblName}}
+{\footnotesize\ttfamily \mbox{\hyperlink{classxb_1_1xbString}{xb\+String}}$\ast$ xb\+::xb\+Tbl\+List\+::ps\+Fq\+Tbl\+Name}
+
\mbox{\Hypertarget{structxb_1_1xbTblList_ac87742c8a6b1cf2e7e35218e96966a05}\label{structxb_1_1xbTblList_ac87742c8a6b1cf2e7e35218e96966a05}}
\index{xb::xbTblList@{xb::xbTblList}!psTblAlias@{psTblAlias}}
\index{psTblAlias@{psTblAlias}!xb::xbTblList@{xb::xbTblList}}
@@ -46,4 +54,4 @@
The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item
-/mnt/1\+Tdata/xbase/xbase64-\/4.\+0.\+3/src/include/\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.\+h}}\end{DoxyCompactItemize}
+/mnt/1\+Tdata/xbase/xbase64-\/4.\+1.\+0/src/include/\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.\+h}}\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/tstfuncs_8cpp.tex b/docs/doxygen/latex/tstfuncs_8cpp.tex
index acec80e..276c1fe 100644
--- a/docs/doxygen/latex/tstfuncs_8cpp.tex
+++ b/docs/doxygen/latex/tstfuncs_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{tstfuncs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/tstfuncs.cpp File Reference}
-\label{tstfuncs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/tstfuncs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/tstfuncs.cpp}}
+\hypertarget{tstfuncs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/tstfuncs.cpp File Reference}
+\label{tstfuncs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/tstfuncs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/tstfuncs.cpp}}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xb__cfg__check_8cpp.tex b/docs/doxygen/latex/xb__cfg__check_8cpp.tex
index 4e50ce2..edcc405 100644
--- a/docs/doxygen/latex/xb__cfg__check_8cpp.tex
+++ b/docs/doxygen/latex/xb__cfg__check_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__cfg__check_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+cfg\+\_\+check.cpp File Reference}
-\label{xb__cfg__check_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_cfg\_check.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_cfg\_check.cpp}}
+\hypertarget{xb__cfg__check_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+cfg\+\_\+check.cpp File Reference}
+\label{xb__cfg__check_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_cfg\_check.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_cfg\_check.cpp}}
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xb__copydbf_8cpp.tex b/docs/doxygen/latex/xb__copydbf_8cpp.tex
index a7de780..da6fb80 100644
--- a/docs/doxygen/latex/xb__copydbf_8cpp.tex
+++ b/docs/doxygen/latex/xb__copydbf_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__copydbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+copydbf.cpp File Reference}
-\label{xb__copydbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_copydbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_copydbf.cpp}}
+\hypertarget{xb__copydbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+copydbf.cpp File Reference}
+\label{xb__copydbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_copydbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_copydbf.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__copydbf_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__copydbf_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__copydbf_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__copydbf_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__copydbf_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__copydbf_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__copydbf_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__copydbf_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_copydbf.cpp@{xb\_copydbf.cpp}!main@{main}}
\index{main@{main}!xb\_copydbf.cpp@{xb\_copydbf.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__copydbf_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__copydbf_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_copydbf.cpp@{xb\_copydbf.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_copydbf.cpp@{xb\_copydbf.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__copydbf_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__copydbf_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_copydbf.cpp@{xb\_copydbf.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_copydbf.cpp@{xb\_copydbf.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__dbfutil_8cpp.tex b/docs/doxygen/latex/xb__dbfutil_8cpp.tex
index 6e6b9d0..a7f0538 100644
--- a/docs/doxygen/latex/xb__dbfutil_8cpp.tex
+++ b/docs/doxygen/latex/xb__dbfutil_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__dbfutil_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+dbfutil.cpp File Reference}
-\label{xb__dbfutil_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dbfutil.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dbfutil.cpp}}
+\hypertarget{xb__dbfutil_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+dbfutil.cpp File Reference}
+\label{xb__dbfutil_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_dbfutil.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_dbfutil.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-DOXYOFF int \mbox{\hyperlink{xb__dbfutil_8cpp_a57e6ea63b6f0a962708db29159629a6d}{main}} (int, char $\ast$$\ast$)
+DOXYOFF void \mbox{\hyperlink{xb__dbfutil_8cpp_a9c55a055e1cd4249c7f47e19dc7ac564}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__dbfutil_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__dbfutil_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__dbfutil_8cpp_a57e6ea63b6f0a962708db29159629a6d}\label{xb__dbfutil_8cpp_a57e6ea63b6f0a962708db29159629a6d}}
+\mbox{\Hypertarget{xb__dbfutil_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__dbfutil_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_dbfutil.cpp@{xb\_dbfutil.cpp}!main@{main}}
\index{main@{main}!xb\_dbfutil.cpp@{xb\_dbfutil.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily DOXYOFF int main (\begin{DoxyParamCaption}\item[{int}]{, }\item[{char $\ast$$\ast$}]{ }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__dbfutil_8cpp_a9c55a055e1cd4249c7f47e19dc7ac564}\label{xb__dbfutil_8cpp_a9c55a055e1cd4249c7f47e19dc7ac564}}
+\index{xb\_dbfutil.cpp@{xb\_dbfutil.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_dbfutil.cpp@{xb\_dbfutil.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily DOXYOFF void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__dbfutil_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__dbfutil_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_dbfutil.cpp@{xb\_dbfutil.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_dbfutil.cpp@{xb\_dbfutil.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__deletall_8cpp.tex b/docs/doxygen/latex/xb__deletall_8cpp.tex
index 25dfb54..fce1850 100644
--- a/docs/doxygen/latex/xb__deletall_8cpp.tex
+++ b/docs/doxygen/latex/xb__deletall_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__deletall_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+deletall.cpp File Reference}
-\label{xb__deletall_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_deletall.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_deletall.cpp}}
+\hypertarget{xb__deletall_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+deletall.cpp File Reference}
+\label{xb__deletall_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_deletall.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_deletall.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__deletall_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__deletall_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__deletall_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__deletall_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__deletall_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__deletall_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__deletall_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__deletall_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_deletall.cpp@{xb\_deletall.cpp}!main@{main}}
\index{main@{main}!xb\_deletall.cpp@{xb\_deletall.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__deletall_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__deletall_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_deletall.cpp@{xb\_deletall.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_deletall.cpp@{xb\_deletall.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__deletall_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__deletall_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_deletall.cpp@{xb\_deletall.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_deletall.cpp@{xb\_deletall.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__dumpdbt_8cpp.tex b/docs/doxygen/latex/xb__dumpdbt_8cpp.tex
index 422a8f7..4d46b1d 100644
--- a/docs/doxygen/latex/xb__dumpdbt_8cpp.tex
+++ b/docs/doxygen/latex/xb__dumpdbt_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__dumpdbt_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+dumpdbt.cpp File Reference}
-\label{xb__dumpdbt_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumpdbt.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumpdbt.cpp}}
+\hypertarget{xb__dumpdbt_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+dumpdbt.cpp File Reference}
+\label{xb__dumpdbt_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_dumpdbt.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_dumpdbt.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__dumpdbt_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__dumpdbt_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__dumpdbt_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__dumpdbt_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__dumpdbt_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__dumpdbt_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__dumpdbt_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__dumpdbt_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_dumpdbt.cpp@{xb\_dumpdbt.cpp}!main@{main}}
\index{main@{main}!xb\_dumpdbt.cpp@{xb\_dumpdbt.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__dumpdbt_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__dumpdbt_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_dumpdbt.cpp@{xb\_dumpdbt.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_dumpdbt.cpp@{xb\_dumpdbt.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__dumpdbt_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__dumpdbt_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_dumpdbt.cpp@{xb\_dumpdbt.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_dumpdbt.cpp@{xb\_dumpdbt.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__dumphdr_8cpp.tex b/docs/doxygen/latex/xb__dumphdr_8cpp.tex
index 6793238..2f7ac2a 100644
--- a/docs/doxygen/latex/xb__dumphdr_8cpp.tex
+++ b/docs/doxygen/latex/xb__dumphdr_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__dumphdr_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+dumphdr.cpp File Reference}
-\label{xb__dumphdr_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumphdr.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumphdr.cpp}}
+\hypertarget{xb__dumphdr_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\+\_\+dumphdr.cpp File Reference}
+\label{xb__dumphdr_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\_dumphdr.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\_dumphdr.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__dumpix_8cpp.tex b/docs/doxygen/latex/xb__dumpix_8cpp.tex
index 347b4cd..b6d917e 100644
--- a/docs/doxygen/latex/xb__dumpix_8cpp.tex
+++ b/docs/doxygen/latex/xb__dumpix_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__dumpix_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+dumpix.cpp File Reference}
-\label{xb__dumpix_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumpix.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumpix.cpp}}
+\hypertarget{xb__dumpix_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\+\_\+dumpix.cpp File Reference}
+\label{xb__dumpix_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\_dumpix.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\_dumpix.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__dumprecs_8cpp.tex b/docs/doxygen/latex/xb__dumprecs_8cpp.tex
index bc104e6..a0ef3d8 100644
--- a/docs/doxygen/latex/xb__dumprecs_8cpp.tex
+++ b/docs/doxygen/latex/xb__dumprecs_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__dumprecs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+dumprecs.cpp File Reference}
-\label{xb__dumprecs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumprecs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_dumprecs.cpp}}
+\hypertarget{xb__dumprecs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+dumprecs.cpp File Reference}
+\label{xb__dumprecs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_dumprecs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_dumprecs.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__dumprecs_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__dumprecs_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__dumprecs_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__dumprecs_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__dumprecs_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__dumprecs_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__dumprecs_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__dumprecs_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_dumprecs.cpp@{xb\_dumprecs.cpp}!main@{main}}
\index{main@{main}!xb\_dumprecs.cpp@{xb\_dumprecs.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__dumprecs_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__dumprecs_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_dumprecs.cpp@{xb\_dumprecs.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_dumprecs.cpp@{xb\_dumprecs.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__dumprecs_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__dumprecs_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_dumprecs.cpp@{xb\_dumprecs.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_dumprecs.cpp@{xb\_dumprecs.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__ex__date_8cpp.tex b/docs/doxygen/latex/xb__ex__date_8cpp.tex
index d9a4bb0..ed93914 100644
--- a/docs/doxygen/latex/xb__ex__date_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__date_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__date_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+date.cpp File Reference}
-\label{xb__ex__date_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_date.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_date.cpp}}
+\hypertarget{xb__ex__date_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+date.cpp File Reference}
+\label{xb__ex__date_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_date.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_date.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__ex__expression_8cpp.tex b/docs/doxygen/latex/xb__ex__expression_8cpp.tex
new file mode 100644
index 0000000..3b0cb70
--- /dev/null
+++ b/docs/doxygen/latex/xb__ex__expression_8cpp.tex
@@ -0,0 +1,51 @@
+\hypertarget{xb__ex__expression_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+expression.cpp File Reference}
+\label{xb__ex__expression_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_expression.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_expression.cpp}}
+{\ttfamily \#include $<$xbase.\+h$>$}\newline
+\doxysubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+void \mbox{\hyperlink{xb__ex__expression_8cpp_a3234afc912211aec54c10d363d28cbda}{Print\+Result}} (\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} $\ast$s\+Expression, xb\+Exp $\ast$exp)
+\item
+int \mbox{\hyperlink{xb__ex__expression_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4}{main}} ()
+\end{DoxyCompactItemize}
+\doxysubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\hyperlink{structxb_1_1xbSchema}{xb\+Schema}} \mbox{\hyperlink{xb__ex__expression_8cpp_a2122b9562802e2fd799b20454000dc99}{My\+V4\+Record}} \mbox{[}$\,$\mbox{]}
+\end{DoxyCompactItemize}
+
+
+\doxysubsection{Function Documentation}
+\mbox{\Hypertarget{xb__ex__expression_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4}\label{xb__ex__expression_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4}}
+\index{xb\_ex\_expression.cpp@{xb\_ex\_expression.cpp}!main@{main}}
+\index{main@{main}!xb\_ex\_expression.cpp@{xb\_ex\_expression.cpp}}
+\doxysubsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__ex__expression_8cpp_a3234afc912211aec54c10d363d28cbda}\label{xb__ex__expression_8cpp_a3234afc912211aec54c10d363d28cbda}}
+\index{xb\_ex\_expression.cpp@{xb\_ex\_expression.cpp}!PrintResult@{PrintResult}}
+\index{PrintResult@{PrintResult}!xb\_ex\_expression.cpp@{xb\_ex\_expression.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintResult()}{PrintResult()}}
+{\footnotesize\ttfamily void Print\+Result (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classxb_1_1xbString}{xb\+String}} $\ast$}]{s\+Expression, }\item[{xb\+Exp $\ast$}]{exp }\end{DoxyParamCaption})}
+
+
+
+\doxysubsection{Variable Documentation}
+\mbox{\Hypertarget{xb__ex__expression_8cpp_a2122b9562802e2fd799b20454000dc99}\label{xb__ex__expression_8cpp_a2122b9562802e2fd799b20454000dc99}}
+\index{xb\_ex\_expression.cpp@{xb\_ex\_expression.cpp}!MyV4Record@{MyV4Record}}
+\index{MyV4Record@{MyV4Record}!xb\_ex\_expression.cpp@{xb\_ex\_expression.cpp}}
+\doxysubsubsection{\texorpdfstring{MyV4Record}{MyV4Record}}
+{\footnotesize\ttfamily \mbox{\hyperlink{structxb_1_1xbSchema}{xb\+Schema}} My\+V4\+Record\mbox{[}$\,$\mbox{]}}
+
+{\bfseries Initial value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{= }
+\DoxyCodeLine{ \{}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}CFLD1"{}}, \mbox{\hyperlink{xbdbf_8h_a20f739b9d9dc6a002a246a999e76aeaa}{XB\_CHAR\_FLD}}, 20, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}CFLD2"{}}, \mbox{\hyperlink{xbdbf_8h_a20f739b9d9dc6a002a246a999e76aeaa}{XB\_CHAR\_FLD}}, 10, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}NFLD1"{}}, \mbox{\hyperlink{xbdbf_8h_ae9fb6d69cc5edc94d36ae403c22ec1c6}{XB\_NUMERIC\_FLD}}, 5, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}DATE1"{}}, \mbox{\hyperlink{xbdbf_8h_a7f685e6f5fe804b2174725a27ce73adc}{XB\_DATE\_FLD}}, 8, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}"{}},0,0,0 \}}
+\DoxyCodeLine{ \}}
+
+\end{DoxyCode}
diff --git a/docs/doxygen/latex/xb__ex__sql_8cpp.tex b/docs/doxygen/latex/xb__ex__sql_8cpp.tex
index b4e8e20..256aedc 100644
--- a/docs/doxygen/latex/xb__ex__sql_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__sql_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__sql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+sql.cpp File Reference}
-\label{xb__ex__sql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_sql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_sql.cpp}}
+\hypertarget{xb__ex__sql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+sql.cpp File Reference}
+\label{xb__ex__sql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_sql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_sql.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__ex__ssv_8cpp.tex b/docs/doxygen/latex/xb__ex__ssv_8cpp.tex
new file mode 100644
index 0000000..badcd47
--- /dev/null
+++ b/docs/doxygen/latex/xb__ex__ssv_8cpp.tex
@@ -0,0 +1,17 @@
+\hypertarget{xb__ex__ssv_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+ssv.cpp File Reference}
+\label{xb__ex__ssv_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_ssv.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_ssv.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
+\doxysubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \mbox{\hyperlink{xb__ex__ssv_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+\end{DoxyCompactItemize}
+
+
+\doxysubsection{Function Documentation}
+\mbox{\Hypertarget{xb__ex__ssv_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__ex__ssv_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\index{xb\_ex\_ssv.cpp@{xb\_ex\_ssv.cpp}!main@{main}}
+\index{main@{main}!xb\_ex\_ssv.cpp@{xb\_ex\_ssv.cpp}}
+\doxysubsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+
diff --git a/docs/doxygen/latex/xb__ex__string_8cpp.tex b/docs/doxygen/latex/xb__ex__string_8cpp.tex
index 4043c79..d6d7d33 100644
--- a/docs/doxygen/latex/xb__ex__string_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__string_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__string_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+string.cpp File Reference}
-\label{xb__ex__string_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_string.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_string.cpp}}
+\hypertarget{xb__ex__string_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+string.cpp File Reference}
+\label{xb__ex__string_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_string.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_string.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__ex__v3__create__dbf_8cpp.tex b/docs/doxygen/latex/xb__ex__v3__create__dbf_8cpp.tex
index 5448ce1..0993233 100644
--- a/docs/doxygen/latex/xb__ex__v3__create__dbf_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__v3__create__dbf_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__v3__create__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+v3\+\_\+create\+\_\+dbf.cpp File Reference}
-\label{xb__ex__v3__create__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v3\_create\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v3\_create\_dbf.cpp}}
+\hypertarget{xb__ex__v3__create__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+v3\+\_\+create\+\_\+dbf.cpp File Reference}
+\label{xb__ex__v3__create__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v3\_create\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v3\_create\_dbf.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__ex__v3__upd__dbf_8cpp.tex b/docs/doxygen/latex/xb__ex__v3__upd__dbf_8cpp.tex
index 8a1f6ee..0018c35 100644
--- a/docs/doxygen/latex/xb__ex__v3__upd__dbf_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__v3__upd__dbf_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__v3__upd__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+v3\+\_\+upd\+\_\+dbf.cpp File Reference}
-\label{xb__ex__v3__upd__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v3\_upd\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v3\_upd\_dbf.cpp}}
+\hypertarget{xb__ex__v3__upd__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+v3\+\_\+upd\+\_\+dbf.cpp File Reference}
+\label{xb__ex__v3__upd__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v3\_upd\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v3\_upd\_dbf.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__ex__v4__create__dbf_8cpp.tex b/docs/doxygen/latex/xb__ex__v4__create__dbf_8cpp.tex
index e5180f5..7597cf4 100644
--- a/docs/doxygen/latex/xb__ex__v4__create__dbf_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__v4__create__dbf_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__v4__create__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+v4\+\_\+create\+\_\+dbf.cpp File Reference}
-\label{xb__ex__v4__create__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v4\_create\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v4\_create\_dbf.cpp}}
+\hypertarget{xb__ex__v4__create__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+v4\+\_\+create\+\_\+dbf.cpp File Reference}
+\label{xb__ex__v4__create__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v4\_create\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v4\_create\_dbf.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__ex__v4__upd__dbf_8cpp.tex b/docs/doxygen/latex/xb__ex__v4__upd__dbf_8cpp.tex
index d06ada7..49c36ab 100644
--- a/docs/doxygen/latex/xb__ex__v4__upd__dbf_8cpp.tex
+++ b/docs/doxygen/latex/xb__ex__v4__upd__dbf_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__ex__v4__upd__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\+\_\+ex\+\_\+v4\+\_\+upd\+\_\+dbf.cpp File Reference}
-\label{xb__ex__v4__upd__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v4\_upd\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/examples/xb\_ex\_v4\_upd\_dbf.cpp}}
+\hypertarget{xb__ex__v4__upd__dbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\+\_\+ex\+\_\+v4\+\_\+upd\+\_\+dbf.cpp File Reference}
+\label{xb__ex__v4__upd__dbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v4\_upd\_dbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/examples/xb\_ex\_v4\_upd\_dbf.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__execsql_8cpp.tex b/docs/doxygen/latex/xb__execsql_8cpp.tex
index e165f03..370198d 100644
--- a/docs/doxygen/latex/xb__execsql_8cpp.tex
+++ b/docs/doxygen/latex/xb__execsql_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__execsql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+execsql.cpp File Reference}
-\label{xb__execsql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_execsql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_execsql.cpp}}
+\hypertarget{xb__execsql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+execsql.cpp File Reference}
+\label{xb__execsql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_execsql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_execsql.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xb__pack_8cpp.tex b/docs/doxygen/latex/xb__pack_8cpp.tex
index 0c0bbac..a227ef4 100644
--- a/docs/doxygen/latex/xb__pack_8cpp.tex
+++ b/docs/doxygen/latex/xb__pack_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__pack_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+pack.cpp File Reference}
-\label{xb__pack_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_pack.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_pack.cpp}}
+\hypertarget{xb__pack_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+pack.cpp File Reference}
+\label{xb__pack_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_pack.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_pack.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__pack_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__pack_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__pack_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__pack_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__pack_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__pack_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__pack_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__pack_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_pack.cpp@{xb\_pack.cpp}!main@{main}}
\index{main@{main}!xb\_pack.cpp@{xb\_pack.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__pack_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__pack_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_pack.cpp@{xb\_pack.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_pack.cpp@{xb\_pack.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__pack_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__pack_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_pack.cpp@{xb\_pack.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_pack.cpp@{xb\_pack.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__tblinfo_8cpp.tex b/docs/doxygen/latex/xb__tblinfo_8cpp.tex
index dc90d9f..2bcdfdc 100644
--- a/docs/doxygen/latex/xb__tblinfo_8cpp.tex
+++ b/docs/doxygen/latex/xb__tblinfo_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__tblinfo_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+tblinfo.cpp File Reference}
-\label{xb__tblinfo_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_tblinfo.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_tblinfo.cpp}}
+\hypertarget{xb__tblinfo_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+tblinfo.cpp File Reference}
+\label{xb__tblinfo_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_tblinfo.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_tblinfo.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__tblinfo_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__tblinfo_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__tblinfo_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__tblinfo_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__tblinfo_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__tblinfo_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__tblinfo_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__tblinfo_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_tblinfo.cpp@{xb\_tblinfo.cpp}!main@{main}}
\index{main@{main}!xb\_tblinfo.cpp@{xb\_tblinfo.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__tblinfo_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__tblinfo_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_tblinfo.cpp@{xb\_tblinfo.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_tblinfo.cpp@{xb\_tblinfo.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__tblinfo_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__tblinfo_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_tblinfo.cpp@{xb\_tblinfo.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_tblinfo.cpp@{xb\_tblinfo.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__test__bcd_8cpp.tex b/docs/doxygen/latex/xb__test__bcd_8cpp.tex
index 2da8baa..fd14f5d 100644
--- a/docs/doxygen/latex/xb__test__bcd_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__bcd_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__bcd_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+bcd.cpp File Reference}
-\label{xb__test__bcd_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_bcd.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_bcd.cpp}}
+\hypertarget{xb__test__bcd_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+bcd.cpp File Reference}
+\label{xb__test__bcd_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_bcd.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_bcd.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__blockread_8cpp.tex b/docs/doxygen/latex/xb__test__blockread_8cpp.tex
new file mode 100644
index 0000000..77e2ca0
--- /dev/null
+++ b/docs/doxygen/latex/xb__test__blockread_8cpp.tex
@@ -0,0 +1,42 @@
+\hypertarget{xb__test__blockread_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+blockread.cpp File Reference}
+\label{xb__test__blockread_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_blockread.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_blockread.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
+{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
+\doxysubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \mbox{\hyperlink{xb__test__blockread_8cpp_a1470527971db41f828c26074cde7e15a}{main}} (int arg\+Cnt, char $\ast$$\ast$av)
+\end{DoxyCompactItemize}
+\doxysubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\hyperlink{structxb_1_1xbSchema}{xb\+Schema}} \mbox{\hyperlink{xb__test__blockread_8cpp_af68c3291a63fdf20ffa0e477460d148e}{My\+Dbf\+Rec}} \mbox{[}$\,$\mbox{]}
+\end{DoxyCompactItemize}
+
+
+\doxysubsection{Function Documentation}
+\mbox{\Hypertarget{xb__test__blockread_8cpp_a1470527971db41f828c26074cde7e15a}\label{xb__test__blockread_8cpp_a1470527971db41f828c26074cde7e15a}}
+\index{xb\_test\_blockread.cpp@{xb\_test\_blockread.cpp}!main@{main}}
+\index{main@{main}!xb\_test\_blockread.cpp@{xb\_test\_blockread.cpp}}
+\doxysubsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{arg\+Cnt, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+
+
+
+\doxysubsection{Variable Documentation}
+\mbox{\Hypertarget{xb__test__blockread_8cpp_af68c3291a63fdf20ffa0e477460d148e}\label{xb__test__blockread_8cpp_af68c3291a63fdf20ffa0e477460d148e}}
+\index{xb\_test\_blockread.cpp@{xb\_test\_blockread.cpp}!MyDbfRec@{MyDbfRec}}
+\index{MyDbfRec@{MyDbfRec}!xb\_test\_blockread.cpp@{xb\_test\_blockread.cpp}}
+\doxysubsubsection{\texorpdfstring{MyDbfRec}{MyDbfRec}}
+{\footnotesize\ttfamily \mbox{\hyperlink{structxb_1_1xbSchema}{xb\+Schema}} My\+Dbf\+Rec\mbox{[}$\,$\mbox{]}}
+
+{\bfseries Initial value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{= }
+\DoxyCodeLine{ \{}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}NFLD"{}}, \mbox{\hyperlink{xbdbf_8h_ae9fb6d69cc5edc94d36ae403c22ec1c6}{XB\_NUMERIC\_FLD}}, 10, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}CFLD"{}}, \mbox{\hyperlink{xbdbf_8h_a20f739b9d9dc6a002a246a999e76aeaa}{XB\_CHAR\_FLD}}, 89, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}"{}},0,0,0 \}}
+\DoxyCodeLine{ \}}
+
+\end{DoxyCode}
diff --git a/docs/doxygen/latex/xb__test__blockread__save_8cpp.tex b/docs/doxygen/latex/xb__test__blockread__save_8cpp.tex
new file mode 100644
index 0000000..d09d1b3
--- /dev/null
+++ b/docs/doxygen/latex/xb__test__blockread__save_8cpp.tex
@@ -0,0 +1,42 @@
+\hypertarget{xb__test__blockread__save_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.1/src/tests/xb\+\_\+test\+\_\+blockread\+\_\+save.cpp File Reference}
+\label{xb__test__blockread__save_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/tests/xb\_test\_blockread\_save.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/tests/xb\_test\_blockread\_save.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
+{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
+\doxysubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \mbox{\hyperlink{xb__test__blockread__save_8cpp_a1470527971db41f828c26074cde7e15a}{main}} (int arg\+Cnt, char $\ast$$\ast$av)
+\end{DoxyCompactItemize}
+\doxysubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\hyperlink{structxb_1_1xbSchema}{xb\+Schema}} \mbox{\hyperlink{xb__test__blockread__save_8cpp_af68c3291a63fdf20ffa0e477460d148e}{My\+Dbf\+Rec}} \mbox{[}$\,$\mbox{]}
+\end{DoxyCompactItemize}
+
+
+\doxysubsection{Function Documentation}
+\mbox{\Hypertarget{xb__test__blockread__save_8cpp_a1470527971db41f828c26074cde7e15a}\label{xb__test__blockread__save_8cpp_a1470527971db41f828c26074cde7e15a}}
+\index{xb\_test\_blockread\_save.cpp@{xb\_test\_blockread\_save.cpp}!main@{main}}
+\index{main@{main}!xb\_test\_blockread\_save.cpp@{xb\_test\_blockread\_save.cpp}}
+\doxysubsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{arg\+Cnt, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+
+
+
+\doxysubsection{Variable Documentation}
+\mbox{\Hypertarget{xb__test__blockread__save_8cpp_af68c3291a63fdf20ffa0e477460d148e}\label{xb__test__blockread__save_8cpp_af68c3291a63fdf20ffa0e477460d148e}}
+\index{xb\_test\_blockread\_save.cpp@{xb\_test\_blockread\_save.cpp}!MyDbfRec@{MyDbfRec}}
+\index{MyDbfRec@{MyDbfRec}!xb\_test\_blockread\_save.cpp@{xb\_test\_blockread\_save.cpp}}
+\doxysubsubsection{\texorpdfstring{MyDbfRec}{MyDbfRec}}
+{\footnotesize\ttfamily \mbox{\hyperlink{structxb_1_1xbSchema}{xb\+Schema}} My\+Dbf\+Rec\mbox{[}$\,$\mbox{]}}
+
+{\bfseries Initial value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{= }
+\DoxyCodeLine{ \{}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}NFLD"{}}, \mbox{\hyperlink{xbdbf_8h_ae9fb6d69cc5edc94d36ae403c22ec1c6}{XB\_NUMERIC\_FLD}}, 10, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}CFLD"{}}, \mbox{\hyperlink{xbdbf_8h_a20f739b9d9dc6a002a246a999e76aeaa}{XB\_CHAR\_FLD}}, 300, 0 \},}
+\DoxyCodeLine{ \{ \textcolor{stringliteral}{"{}"{}},0,0,0 \}}
+\DoxyCodeLine{ \}}
+
+\end{DoxyCode}
diff --git a/docs/doxygen/latex/xb__test__date_8cpp.tex b/docs/doxygen/latex/xb__test__date_8cpp.tex
index ae6f280..cb48e54 100644
--- a/docs/doxygen/latex/xb__test__date_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__date_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__date_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+date.cpp File Reference}
-\label{xb__test__date_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_date.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_date.cpp}}
+\hypertarget{xb__test__date_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+date.cpp File Reference}
+\label{xb__test__date_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_date.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_date.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__dbf__v3__memos_8cpp.tex b/docs/doxygen/latex/xb__test__dbf__v3__memos_8cpp.tex
index 847b1da..bf7fc6c 100644
--- a/docs/doxygen/latex/xb__test__dbf__v3__memos_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__dbf__v3__memos_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__dbf__v3__memos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+memos.cpp File Reference}
-\label{xb__test__dbf__v3__memos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v3\_memos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v3\_memos.cpp}}
+\hypertarget{xb__test__dbf__v3__memos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+memos.cpp File Reference}
+\label{xb__test__dbf__v3__memos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v3\_memos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v3\_memos.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__dbf__v3__nomemos_8cpp.tex b/docs/doxygen/latex/xb__test__dbf__v3__nomemos_8cpp.tex
index d22af64..a79890b 100644
--- a/docs/doxygen/latex/xb__test__dbf__v3__nomemos_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__dbf__v3__nomemos_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__dbf__v3__nomemos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+nomemos.cpp File Reference}
-\label{xb__test__dbf__v3__nomemos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v3\_nomemos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v3\_nomemos.cpp}}
+\hypertarget{xb__test__dbf__v3__nomemos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v3\+\_\+nomemos.cpp File Reference}
+\label{xb__test__dbf__v3__nomemos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v3\_nomemos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v3\_nomemos.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__dbf__v4__memos_8cpp.tex b/docs/doxygen/latex/xb__test__dbf__v4__memos_8cpp.tex
index 96a427e..7812871 100644
--- a/docs/doxygen/latex/xb__test__dbf__v4__memos_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__dbf__v4__memos_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__dbf__v4__memos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+memos.cpp File Reference}
-\label{xb__test__dbf__v4__memos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v4\_memos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v4\_memos.cpp}}
+\hypertarget{xb__test__dbf__v4__memos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+memos.cpp File Reference}
+\label{xb__test__dbf__v4__memos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v4\_memos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v4\_memos.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__dbf__v4__nomemos_8cpp.tex b/docs/doxygen/latex/xb__test__dbf__v4__nomemos_8cpp.tex
index 4bd23a0..a6c65b1 100644
--- a/docs/doxygen/latex/xb__test__dbf__v4__nomemos_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__dbf__v4__nomemos_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__dbf__v4__nomemos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+nomemos.cpp File Reference}
-\label{xb__test__dbf__v4__nomemos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v4\_nomemos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_dbf\_v4\_nomemos.cpp}}
+\hypertarget{xb__test__dbf__v4__nomemos_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+dbf\+\_\+v4\+\_\+nomemos.cpp File Reference}
+\label{xb__test__dbf__v4__nomemos_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v4\_nomemos.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_dbf\_v4\_nomemos.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__expnode_8cpp.tex b/docs/doxygen/latex/xb__test__expnode_8cpp.tex
index a95fea8..6c6a884 100644
--- a/docs/doxygen/latex/xb__test__expnode_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__expnode_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__expnode_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+expnode.cpp File Reference}
-\label{xb__test__expnode_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_expnode.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_expnode.cpp}}
+\hypertarget{xb__test__expnode_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+expnode.cpp File Reference}
+\label{xb__test__expnode_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_expnode.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_expnode.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__expression_8cpp.tex b/docs/doxygen/latex/xb__test__expression_8cpp.tex
index 6822ce3..7921c70 100644
--- a/docs/doxygen/latex/xb__test__expression_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__expression_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__expression_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+expression.cpp File Reference}
-\label{xb__test__expression_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_expression.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_expression.cpp}}
+\hypertarget{xb__test__expression_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+expression.cpp File Reference}
+\label{xb__test__expression_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_expression.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_expression.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__file_8cpp.tex b/docs/doxygen/latex/xb__test__file_8cpp.tex
index 7b59e72..504a6b6 100644
--- a/docs/doxygen/latex/xb__test__file_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__file_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__file_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+file.cpp File Reference}
-\label{xb__test__file_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_file.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_file.cpp}}
+\hypertarget{xb__test__file_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+file.cpp File Reference}
+\label{xb__test__file_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_file.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_file.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__filter_8cpp.tex b/docs/doxygen/latex/xb__test__filter_8cpp.tex
index a9c8390..3c229cb 100644
--- a/docs/doxygen/latex/xb__test__filter_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__filter_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__filter_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+filter.cpp File Reference}
-\label{xb__test__filter_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_filter.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_filter.cpp}}
+\hypertarget{xb__test__filter_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+filter.cpp File Reference}
+\label{xb__test__filter_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_filter.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_filter.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__funcs_8cpp.tex b/docs/doxygen/latex/xb__test__funcs_8cpp.tex
index b72dc8f..5ea715f 100644
--- a/docs/doxygen/latex/xb__test__funcs_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__funcs_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__funcs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+funcs.cpp File Reference}
-\label{xb__test__funcs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_funcs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_funcs.cpp}}
+\hypertarget{xb__test__funcs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+funcs.cpp File Reference}
+\label{xb__test__funcs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_funcs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_funcs.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__linklist_8cpp.tex b/docs/doxygen/latex/xb__test__linklist_8cpp.tex
index 3b3f30d..434f405 100644
--- a/docs/doxygen/latex/xb__test__linklist_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__linklist_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__linklist_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+linklist.cpp File Reference}
-\label{xb__test__linklist_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_linklist.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_linklist.cpp}}
+\hypertarget{xb__test__linklist_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+linklist.cpp File Reference}
+\label{xb__test__linklist_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_linklist.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_linklist.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__lock2_8cpp.tex b/docs/doxygen/latex/xb__test__lock2_8cpp.tex
index 240d8a3..03ddf28 100644
--- a/docs/doxygen/latex/xb__test__lock2_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__lock2_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__lock2_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+lock2.cpp File Reference}
-\label{xb__test__lock2_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_lock2.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_lock2.cpp}}
+\hypertarget{xb__test__lock2_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+lock2.cpp File Reference}
+\label{xb__test__lock2_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_lock2.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_lock2.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__lock_8cpp.tex b/docs/doxygen/latex/xb__test__lock_8cpp.tex
index 4623d0c..4507a0f 100644
--- a/docs/doxygen/latex/xb__test__lock_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__lock_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__lock_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+lock.cpp File Reference}
-\label{xb__test__lock_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_lock.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_lock.cpp}}
+\hypertarget{xb__test__lock_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+lock.cpp File Reference}
+\label{xb__test__lock_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_lock.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_lock.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__log_8cpp.tex b/docs/doxygen/latex/xb__test__log_8cpp.tex
index 0178366..7bde740 100644
--- a/docs/doxygen/latex/xb__test__log_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__log_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__log_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+log.cpp File Reference}
-\label{xb__test__log_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_log.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_log.cpp}}
+\hypertarget{xb__test__log_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+log.cpp File Reference}
+\label{xb__test__log_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_log.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_log.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__mdx_8cpp.tex b/docs/doxygen/latex/xb__test__mdx_8cpp.tex
index 0b9950d..63e6d5b 100644
--- a/docs/doxygen/latex/xb__test__mdx_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__mdx_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__mdx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+mdx.cpp File Reference}
-\label{xb__test__mdx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_mdx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_mdx.cpp}}
+\hypertarget{xb__test__mdx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+mdx.cpp File Reference}
+\label{xb__test__mdx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_mdx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_mdx.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__ndx_8cpp.tex b/docs/doxygen/latex/xb__test__ndx_8cpp.tex
index 29b8240..7ad9cab 100644
--- a/docs/doxygen/latex/xb__test__ndx_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__ndx_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__ndx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+ndx.cpp File Reference}
-\label{xb__test__ndx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_ndx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_ndx.cpp}}
+\hypertarget{xb__test__ndx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+ndx.cpp File Reference}
+\label{xb__test__ndx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_ndx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_ndx.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__sql_8cpp.tex b/docs/doxygen/latex/xb__test__sql_8cpp.tex
index d85011b..7c641e5 100644
--- a/docs/doxygen/latex/xb__test__sql_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__sql_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__sql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+sql.cpp File Reference}
-\label{xb__test__sql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_sql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_sql.cpp}}
+\hypertarget{xb__test__sql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+sql.cpp File Reference}
+\label{xb__test__sql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_sql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_sql.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__string_8cpp.tex b/docs/doxygen/latex/xb__test__string_8cpp.tex
index 8a869d4..fb5ecd2 100644
--- a/docs/doxygen/latex/xb__test__string_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__string_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__string_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+string.cpp File Reference}
-\label{xb__test__string_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_string.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_string.cpp}}
+\hypertarget{xb__test__string_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+string.cpp File Reference}
+\label{xb__test__string_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_string.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_string.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Macros}
diff --git a/docs/doxygen/latex/xb__test__tblmgr_8cpp.tex b/docs/doxygen/latex/xb__test__tblmgr_8cpp.tex
index f31b5b3..cd9df27 100644
--- a/docs/doxygen/latex/xb__test__tblmgr_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__tblmgr_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__tblmgr_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+tblmgr.cpp File Reference}
-\label{xb__test__tblmgr_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_tblmgr.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_tblmgr.cpp}}
+\hypertarget{xb__test__tblmgr_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+tblmgr.cpp File Reference}
+\label{xb__test__tblmgr_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_tblmgr.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_tblmgr.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__uda_8cpp.tex b/docs/doxygen/latex/xb__test__uda_8cpp.tex
index 3f6753d..bb0bc3e 100644
--- a/docs/doxygen/latex/xb__test__uda_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__uda_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__uda_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+uda.cpp File Reference}
-\label{xb__test__uda_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_uda.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_uda.cpp}}
+\hypertarget{xb__test__uda_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+uda.cpp File Reference}
+\label{xb__test__uda_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_uda.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_uda.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__test__xbase_8cpp.tex b/docs/doxygen/latex/xb__test__xbase_8cpp.tex
index e43218f..c436f00 100644
--- a/docs/doxygen/latex/xb__test__xbase_8cpp.tex
+++ b/docs/doxygen/latex/xb__test__xbase_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__test__xbase_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\+\_\+test\+\_\+xbase.cpp File Reference}
-\label{xb__test__xbase_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_xbase.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/tests/xb\_test\_xbase.cpp}}
+\hypertarget{xb__test__xbase_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\+\_\+test\+\_\+xbase.cpp File Reference}
+\label{xb__test__xbase_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_xbase.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/tests/xb\_test\_xbase.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}tstfuncs.\+cpp\char`\"{}}\newline
\doxysubsection*{Functions}
diff --git a/docs/doxygen/latex/xb__undelall_8cpp.tex b/docs/doxygen/latex/xb__undelall_8cpp.tex
index 93d5bf4..d7b2682 100644
--- a/docs/doxygen/latex/xb__undelall_8cpp.tex
+++ b/docs/doxygen/latex/xb__undelall_8cpp.tex
@@ -1,17 +1,33 @@
-\hypertarget{xb__undelall_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+undelall.cpp File Reference}
-\label{xb__undelall_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_undelall.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_undelall.cpp}}
+\hypertarget{xb__undelall_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\+\_\+undelall.cpp File Reference}
+\label{xb__undelall_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_undelall.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/utils/xb\_undelall.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item
-int \mbox{\hyperlink{xb__undelall_8cpp_a0c99d968a34e803d378692bde2e3f18f}{main}} (int ac, char $\ast$$\ast$av)
+void \mbox{\hyperlink{xb__undelall_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}{Print\+Help}} ()
+\item
+void \mbox{\hyperlink{xb__undelall_8cpp_a1fae5968f70747445d63f63065fb7ef3}{Print\+Version}} ()
+\item
+int \mbox{\hyperlink{xb__undelall_8cpp_a0ddf1224851353fc92bfbff6f499fa97}{main}} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
-\mbox{\Hypertarget{xb__undelall_8cpp_a0c99d968a34e803d378692bde2e3f18f}\label{xb__undelall_8cpp_a0c99d968a34e803d378692bde2e3f18f}}
+\mbox{\Hypertarget{xb__undelall_8cpp_a0ddf1224851353fc92bfbff6f499fa97}\label{xb__undelall_8cpp_a0ddf1224851353fc92bfbff6f499fa97}}
\index{xb\_undelall.cpp@{xb\_undelall.cpp}!main@{main}}
\index{main@{main}!xb\_undelall.cpp@{xb\_undelall.cpp}}
\doxysubsubsection{\texorpdfstring{main()}{main()}}
-{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{ac, }\item[{char $\ast$$\ast$}]{av }\end{DoxyParamCaption})}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__undelall_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}\label{xb__undelall_8cpp_ae964ff8411b4fdcaf65cb5529aea4bef}}
+\index{xb\_undelall.cpp@{xb\_undelall.cpp}!PrintHelp@{PrintHelp}}
+\index{PrintHelp@{PrintHelp}!xb\_undelall.cpp@{xb\_undelall.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintHelp()}{PrintHelp()}}
+{\footnotesize\ttfamily void Print\+Help (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
+
+\mbox{\Hypertarget{xb__undelall_8cpp_a1fae5968f70747445d63f63065fb7ef3}\label{xb__undelall_8cpp_a1fae5968f70747445d63f63065fb7ef3}}
+\index{xb\_undelall.cpp@{xb\_undelall.cpp}!PrintVersion@{PrintVersion}}
+\index{PrintVersion@{PrintVersion}!xb\_undelall.cpp@{xb\_undelall.cpp}}
+\doxysubsubsection{\texorpdfstring{PrintVersion()}{PrintVersion()}}
+{\footnotesize\ttfamily void Print\+Version (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}
diff --git a/docs/doxygen/latex/xb__zap_8cpp.tex b/docs/doxygen/latex/xb__zap_8cpp.tex
index f8b3371..43e396d 100644
--- a/docs/doxygen/latex/xb__zap_8cpp.tex
+++ b/docs/doxygen/latex/xb__zap_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xb__zap_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\+\_\+zap.cpp File Reference}
-\label{xb__zap_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_zap.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/utils/xb\_zap.cpp}}
+\hypertarget{xb__zap_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\+\_\+zap.cpp File Reference}
+\label{xb__zap_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\_zap.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.1/src/utils/xb\_zap.cpp}}
{\ttfamily \#include $<$xbase.\+h$>$}\newline
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbalttbl_8cpp.tex b/docs/doxygen/latex/xbalttbl_8cpp.tex
index c470daa..8643874 100644
--- a/docs/doxygen/latex/xbalttbl_8cpp.tex
+++ b/docs/doxygen/latex/xbalttbl_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbalttbl_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbalttbl.cpp File Reference}
-\label{xbalttbl_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbalttbl.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbalttbl.cpp}}
+\hypertarget{xbalttbl_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbalttbl.cpp File Reference}
+\label{xbalttbl_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbalttbl.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbalttbl.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbase_8h.tex b/docs/doxygen/latex/xbase_8h.tex
index ab9b258..e1b3c3b 100644
--- a/docs/doxygen/latex/xbase_8h.tex
+++ b/docs/doxygen/latex/xbase_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbase_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbase.h File Reference}
-\label{xbase_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbase.h}}
+\hypertarget{xbase_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbase.h File Reference}
+\label{xbase_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbase.h}}
{\ttfamily \#include $<$xbconfig.\+h$>$}\newline
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
@@ -24,6 +24,7 @@
{\ttfamily \#include $<$xbexpnode.\+h$>$}\newline
{\ttfamily \#include $<$xbexp.\+h$>$}\newline
{\ttfamily \#include $<$xbtag.\+h$>$}\newline
+{\ttfamily \#include $<$xbblkread.\+h$>$}\newline
{\ttfamily \#include $<$xbdbf.\+h$>$}\newline
{\ttfamily \#include $<$xbindex.\+h$>$}\newline
{\ttfamily \#include $<$xbfilter.\+h$>$}\newline
diff --git a/docs/doxygen/latex/xbase_8h_source.tex b/docs/doxygen/latex/xbase_8h_source.tex
index e8a52ec..2d90229 100644
--- a/docs/doxygen/latex/xbase_8h_source.tex
+++ b/docs/doxygen/latex/xbase_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbase_8h_source}{}\doxysection{xbase.\+h}
-\label{xbase_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbase.h}}
+\label{xbase_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbase.h}}
\mbox{\hyperlink{xbase_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbase.h}}
@@ -7,7 +7,7 @@
\DoxyCodeLine{3 \textcolor{comment}{}}
\DoxyCodeLine{4 \textcolor{comment}{Xbase64 Software Library}}
\DoxyCodeLine{5 \textcolor{comment}{}}
-\DoxyCodeLine{6 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
+\DoxyCodeLine{6 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel}}
\DoxyCodeLine{7 \textcolor{comment}{}}
\DoxyCodeLine{8 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license}}
\DoxyCodeLine{9 \textcolor{comment}{}}
@@ -45,57 +45,62 @@
\DoxyCodeLine{41 \textcolor{preprocessor}{\#include <ctype.h>}}
\DoxyCodeLine{42 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{43 }
-\DoxyCodeLine{44 \textcolor{preprocessor}{\#ifdef HAVE\_STDARG\_H}}
-\DoxyCodeLine{45 \textcolor{preprocessor}{\#include <stdarg.h>}}
+\DoxyCodeLine{44 \textcolor{preprocessor}{\#ifdef HAVE\_PWD\_H}}
+\DoxyCodeLine{45 \textcolor{preprocessor}{\#include <pwd.h>}}
\DoxyCodeLine{46 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{47 }
-\DoxyCodeLine{48 \textcolor{preprocessor}{\#ifdef HAVE\_STAT\_H}}
-\DoxyCodeLine{49 \textcolor{preprocessor}{\#include <sys/stat.h>}}
+\DoxyCodeLine{48 \textcolor{preprocessor}{\#ifdef HAVE\_STDARG\_H}}
+\DoxyCodeLine{49 \textcolor{preprocessor}{\#include <stdarg.h>}}
\DoxyCodeLine{50 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{51 }
-\DoxyCodeLine{52 \textcolor{preprocessor}{\#ifdef HAVE\_FCNTL\_H}}
-\DoxyCodeLine{53 \textcolor{preprocessor}{\#include <fcntl.h>}}
+\DoxyCodeLine{52 \textcolor{preprocessor}{\#ifdef HAVE\_STAT\_H}}
+\DoxyCodeLine{53 \textcolor{preprocessor}{\#include <sys/stat.h>}}
\DoxyCodeLine{54 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{55 }
-\DoxyCodeLine{56 \textcolor{preprocessor}{\#ifdef HAVE\_UNISTD\_H}}
-\DoxyCodeLine{57 \textcolor{preprocessor}{\#include <unistd.h>}}
+\DoxyCodeLine{56 \textcolor{preprocessor}{\#ifdef HAVE\_FCNTL\_H}}
+\DoxyCodeLine{57 \textcolor{preprocessor}{\#include <fcntl.h>}}
\DoxyCodeLine{58 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{59 }
-\DoxyCodeLine{60 \textcolor{preprocessor}{\#ifdef HAVE\_VARARGS\_H}}
-\DoxyCodeLine{61 \textcolor{preprocessor}{\#ifndef HAVE\_STDARG\_H}}
-\DoxyCodeLine{62 \textcolor{preprocessor}{\#include <varargs.h>}}
-\DoxyCodeLine{63 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{64 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{65 }
-\DoxyCodeLine{66 \textcolor{preprocessor}{\#ifdef HAVE\_WINDOWS\_H}}
-\DoxyCodeLine{67 \textcolor{preprocessor}{\#include <windows.h>}}
-\DoxyCodeLine{68 \textcolor{preprocessor}{\#include <io.h>}}
-\DoxyCodeLine{69 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{70 }
-\DoxyCodeLine{71 \textcolor{preprocessor}{\#include <iomanip>}}
-\DoxyCodeLine{72 }
-\DoxyCodeLine{73 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbretcod_8h}{xbretcod.h}}>}}
-\DoxyCodeLine{74 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbtypes_8h}{xbtypes.h}}>}}
-\DoxyCodeLine{75 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbstring_8h}{xbstring.h}}>}}
-\DoxyCodeLine{76 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbssv_8h}{xbssv.h}}>}}
-\DoxyCodeLine{77 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbdate_8h}{xbdate.h}}>}}
-\DoxyCodeLine{78 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.h}}>}}
-\DoxyCodeLine{79 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbxbase_8h}{xbxbase.h}}>}}
-\DoxyCodeLine{80 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblnknod_8h}{xblnknod.h}}>}}
-\DoxyCodeLine{81 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblnklst_8h}{xblnklst.h}}>}}
-\DoxyCodeLine{82 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblnklstord_8h}{xblnklstord.h}}>}}
-\DoxyCodeLine{83 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbfile_8h}{xbfile.h}}>}}
-\DoxyCodeLine{84 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblog_8h}{xblog.h}}>}}
-\DoxyCodeLine{85 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbmemo_8h}{xbmemo.h}}>}}
-\DoxyCodeLine{86 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbbcd_8h}{xbbcd.h}}>}}
-\DoxyCodeLine{87 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbuda_8h}{xbuda.h}}>}}
-\DoxyCodeLine{88 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbexpnode_8h}{xbexpnode.h}}>}}
-\DoxyCodeLine{89 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbexp_8h}{xbexp.h}}>}}
-\DoxyCodeLine{90 }
-\DoxyCodeLine{91 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbtag_8h}{xbtag.h}}>}}
-\DoxyCodeLine{92 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbdbf_8h}{xbdbf.h}}>} \textcolor{comment}{/* dbf base class */}}
-\DoxyCodeLine{93 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbindex_8h}{xbindex.h}}>} \textcolor{comment}{/* index base class */}}
-\DoxyCodeLine{94 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbfilter_8h}{xbfilter.h}}>}}
-\DoxyCodeLine{95 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbsql_8h}{xbsql.h}}>}}
+\DoxyCodeLine{60 \textcolor{preprocessor}{\#ifdef HAVE\_UNISTD\_H}}
+\DoxyCodeLine{61 \textcolor{preprocessor}{\#include <unistd.h>}}
+\DoxyCodeLine{62 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{63 }
+\DoxyCodeLine{64 \textcolor{preprocessor}{\#ifdef HAVE\_VARARGS\_H}}
+\DoxyCodeLine{65 \textcolor{preprocessor}{\#ifndef HAVE\_STDARG\_H}}
+\DoxyCodeLine{66 \textcolor{preprocessor}{\#include <varargs.h>}}
+\DoxyCodeLine{67 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{68 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{69 }
+\DoxyCodeLine{70 \textcolor{preprocessor}{\#ifdef HAVE\_WINDOWS\_H}}
+\DoxyCodeLine{71 \textcolor{preprocessor}{\#include <windows.h>}}
+\DoxyCodeLine{72 \textcolor{preprocessor}{\#include <io.h>}}
+\DoxyCodeLine{73 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{74 }
+\DoxyCodeLine{75 \textcolor{preprocessor}{\#include <iomanip>}}
+\DoxyCodeLine{76 }
+\DoxyCodeLine{77 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbretcod_8h}{xbretcod.h}}>}}
+\DoxyCodeLine{78 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbtypes_8h}{xbtypes.h}}>}}
+\DoxyCodeLine{79 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbstring_8h}{xbstring.h}}>}}
+\DoxyCodeLine{80 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbssv_8h}{xbssv.h}}>}}
+\DoxyCodeLine{81 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbdate_8h}{xbdate.h}}>}}
+\DoxyCodeLine{82 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbtblmgr_8h}{xbtblmgr.h}}>}}
+\DoxyCodeLine{83 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbxbase_8h}{xbxbase.h}}>}}
+\DoxyCodeLine{84 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblnknod_8h}{xblnknod.h}}>}}
+\DoxyCodeLine{85 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblnklst_8h}{xblnklst.h}}>}}
+\DoxyCodeLine{86 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblnklstord_8h}{xblnklstord.h}}>}}
+\DoxyCodeLine{87 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbfile_8h}{xbfile.h}}>}}
+\DoxyCodeLine{88 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xblog_8h}{xblog.h}}>}}
+\DoxyCodeLine{89 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbmemo_8h}{xbmemo.h}}>}}
+\DoxyCodeLine{90 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbbcd_8h}{xbbcd.h}}>}}
+\DoxyCodeLine{91 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbuda_8h}{xbuda.h}}>}}
+\DoxyCodeLine{92 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbexpnode_8h}{xbexpnode.h}}>}}
+\DoxyCodeLine{93 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbexp_8h}{xbexp.h}}>}}
+\DoxyCodeLine{94 }
+\DoxyCodeLine{95 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbtag_8h}{xbtag.h}}>}}
+\DoxyCodeLine{96 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbblkread_8h}{xbblkread.h}}>}}
+\DoxyCodeLine{97 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbdbf_8h}{xbdbf.h}}>} \textcolor{comment}{/* dbf base class */}}
+\DoxyCodeLine{98 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbindex_8h}{xbindex.h}}>} \textcolor{comment}{/* index base class */}}
+\DoxyCodeLine{99 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbfilter_8h}{xbfilter.h}}>}}
+\DoxyCodeLine{100 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{xbsql_8h}{xbsql.h}}>}}
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbbcd_8cpp.tex b/docs/doxygen/latex/xbbcd_8cpp.tex
index 4da19bf..5236b17 100644
--- a/docs/doxygen/latex/xbbcd_8cpp.tex
+++ b/docs/doxygen/latex/xbbcd_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbbcd_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbbcd.cpp File Reference}
-\label{xbbcd_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbbcd.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbbcd.cpp}}
+\hypertarget{xbbcd_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbbcd.cpp File Reference}
+\label{xbbcd_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbbcd.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbbcd.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbbcd_8h.tex b/docs/doxygen/latex/xbbcd_8h.tex
index 08782f6..a914997 100644
--- a/docs/doxygen/latex/xbbcd_8h.tex
+++ b/docs/doxygen/latex/xbbcd_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbbcd_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbbcd.h File Reference}
-\label{xbbcd_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbbcd.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbbcd.h}}
+\hypertarget{xbbcd_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbbcd.h File Reference}
+\label{xbbcd_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbbcd.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbbcd.h}}
diff --git a/docs/doxygen/latex/xbbcd_8h_source.tex b/docs/doxygen/latex/xbbcd_8h_source.tex
index 060d1ee..8084dcd 100644
--- a/docs/doxygen/latex/xbbcd_8h_source.tex
+++ b/docs/doxygen/latex/xbbcd_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbbcd_8h_source}{}\doxysection{xbbcd.\+h}
-\label{xbbcd_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbbcd.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbbcd.h}}
+\label{xbbcd_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbbcd.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbbcd.h}}
\mbox{\hyperlink{xbbcd_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbbcd.h}}
diff --git a/docs/doxygen/latex/xbblkread_8h.tex b/docs/doxygen/latex/xbblkread_8h.tex
new file mode 100644
index 0000000..e92d03e
--- /dev/null
+++ b/docs/doxygen/latex/xbblkread_8h.tex
@@ -0,0 +1,7 @@
+\hypertarget{xbblkread_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbblkread.h File Reference}
+\label{xbblkread_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbblkread.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbblkread.h}}
+\doxysubsection*{Namespaces}
+\begin{DoxyCompactItemize}
+\item
+namespace \mbox{\hyperlink{namespacexb}{xb}}
+\end{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbblkread_8h_source.tex b/docs/doxygen/latex/xbblkread_8h_source.tex
new file mode 100644
index 0000000..75dd9c4
--- /dev/null
+++ b/docs/doxygen/latex/xbblkread_8h_source.tex
@@ -0,0 +1,69 @@
+\hypertarget{xbblkread_8h_source}{}\doxysection{xbblkread.\+h}
+\label{xbblkread_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbblkread.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbblkread.h}}
+\mbox{\hyperlink{xbblkread_8h}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{1 \textcolor{comment}{/* xbblkread.h}}
+\DoxyCodeLine{2 \textcolor{comment}{}}
+\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
+\DoxyCodeLine{4 \textcolor{comment}{}}
+\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
+\DoxyCodeLine{6 \textcolor{comment}{}}
+\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
+\DoxyCodeLine{8 \textcolor{comment}{}}
+\DoxyCodeLine{9 \textcolor{comment}{Email Contact:}}
+\DoxyCodeLine{10 \textcolor{comment}{}}
+\DoxyCodeLine{11 \textcolor{comment}{ XDB-\/devel@lists.sourceforge.net}}
+\DoxyCodeLine{12 \textcolor{comment}{ XDB-\/users@lists.sourceforge.net}}
+\DoxyCodeLine{13 \textcolor{comment}{}}
+\DoxyCodeLine{14 \textcolor{comment}{*/}}
+\DoxyCodeLine{15 }
+\DoxyCodeLine{16 \textcolor{preprocessor}{\#ifndef \_\_XB\_BLKREAD\_H\_\_}}
+\DoxyCodeLine{17 \textcolor{preprocessor}{\#define \_\_XB\_BLKREAD\_H\_\_}}
+\DoxyCodeLine{18 }
+\DoxyCodeLine{19 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespacexb}{xb}}\{}
+\DoxyCodeLine{20 \textcolor{preprocessor}{\#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{21 }
+\DoxyCodeLine{22 }
+\DoxyCodeLine{23 }
+\DoxyCodeLine{25 }
+\DoxyCodeLine{32 \textcolor{keyword}{class }XBDLLEXPORT xbBlockRead \{}
+\DoxyCodeLine{33 }
+\DoxyCodeLine{34 \textcolor{keyword}{public}:}
+\DoxyCodeLine{35 xbBlockRead( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} * d );}
+\DoxyCodeLine{36 \string~xbBlockRead();}
+\DoxyCodeLine{37 }
+\DoxyCodeLine{38 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}}
+\DoxyCodeLine{39 \textcolor{keywordtype}{void} DumpReadBlockInternals();}
+\DoxyCodeLine{40 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{41 }
+\DoxyCodeLine{42 xbInt16 Init( xbUInt32 ulBlkSize = 0 );}
+\DoxyCodeLine{43 }
+\DoxyCodeLine{44 xbUInt32 GetBlockFirstRecNo() \textcolor{keyword}{const};}
+\DoxyCodeLine{45 xbUInt32 GetBlockRecCnt() \textcolor{keyword}{const};}
+\DoxyCodeLine{46 xbUInt32 GetBlockSize() \textcolor{keyword}{const};}
+\DoxyCodeLine{47 }
+\DoxyCodeLine{48 xbInt16 GetRecord( xbUInt32 ulRecNo ); \textcolor{comment}{// retrieve a data record from a block to RecBuf}}
+\DoxyCodeLine{49 xbInt16 SetBlockSize( xbUInt32 ulBlkSize );}
+\DoxyCodeLine{50 }
+\DoxyCodeLine{51 }
+\DoxyCodeLine{52 \textcolor{keyword}{private}:}
+\DoxyCodeLine{53 }
+\DoxyCodeLine{54 xbInt16 GetBlockForRecNo( xbUInt32 ulRecNo ); \textcolor{comment}{// retrieve block from disk for a given record number}}
+\DoxyCodeLine{55 }
+\DoxyCodeLine{56 \textcolor{keywordtype}{char} *pBlock; \textcolor{comment}{// block pointer}}
+\DoxyCodeLine{57 xbUInt32 ulBlkSize; \textcolor{comment}{// block size in bytes}}
+\DoxyCodeLine{58 xbUInt32 ulFirstBlkRec; \textcolor{comment}{// first recod number in the block}}
+\DoxyCodeLine{59 xbUInt32 ulRecCnt; \textcolor{comment}{// number of records in block}}
+\DoxyCodeLine{60 xbUInt32 ulMaxRecs; \textcolor{comment}{// max number of records block can handle}}
+\DoxyCodeLine{61 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bEof; \textcolor{comment}{// EOF flag}}
+\DoxyCodeLine{62 \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf; \textcolor{comment}{// reference to associated dbf file}}
+\DoxyCodeLine{63 \textcolor{comment}{// xbXBase *xbase; // reference to main xbXBase structure}}
+\DoxyCodeLine{64 time\_t tFmTime; \textcolor{comment}{// file modify time at time of block read}}
+\DoxyCodeLine{65 }
+\DoxyCodeLine{66 \};}
+\DoxyCodeLine{67 }
+\DoxyCodeLine{68 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_BLOCKREAD}}
+\DoxyCodeLine{69 \} \textcolor{comment}{/* namespace */}}
+\DoxyCodeLine{70 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_BLOCKREAD\_H\_\_ */}\textcolor{preprocessor}{}}
+
+\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbblockread_8cpp.tex b/docs/doxygen/latex/xbblockread_8cpp.tex
new file mode 100644
index 0000000..81bae84
--- /dev/null
+++ b/docs/doxygen/latex/xbblockread_8cpp.tex
@@ -0,0 +1,3 @@
+\hypertarget{xbblockread_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbblockread.cpp File Reference}
+\label{xbblockread_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbblockread.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbblockread.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbcrix_8cpp.tex b/docs/doxygen/latex/xbcrix_8cpp.tex
index 408ab0f..93a2bf2 100644
--- a/docs/doxygen/latex/xbcrix_8cpp.tex
+++ b/docs/doxygen/latex/xbcrix_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbcrix_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbcrix.cpp File Reference}
-\label{xbcrix_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbcrix.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbcrix.cpp}}
+\hypertarget{xbcrix_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrix.cpp File Reference}
+\label{xbcrix_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrix.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrix.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbcrtbl_8cpp.tex b/docs/doxygen/latex/xbcrtbl_8cpp.tex
index 329a219..51f8351 100644
--- a/docs/doxygen/latex/xbcrtbl_8cpp.tex
+++ b/docs/doxygen/latex/xbcrtbl_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbcrtbl_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbcrtbl.cpp File Reference}
-\label{xbcrtbl_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbcrtbl.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbcrtbl.cpp}}
+\hypertarget{xbcrtbl_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrtbl.cpp File Reference}
+\label{xbcrtbl_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrtbl.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrtbl.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbcrtbl_8save_8cpp.tex b/docs/doxygen/latex/xbcrtbl_8save_8cpp.tex
new file mode 100644
index 0000000..5964451
--- /dev/null
+++ b/docs/doxygen/latex/xbcrtbl_8save_8cpp.tex
@@ -0,0 +1,3 @@
+\hypertarget{xbcrtbl_8save_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrtbl.save.\+cpp File Reference}
+\label{xbcrtbl_8save_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrtbl.save.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbcrtbl.save.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbdate_8cpp.tex b/docs/doxygen/latex/xbdate_8cpp.tex
index ac14170..c0808b1 100644
--- a/docs/doxygen/latex/xbdate_8cpp.tex
+++ b/docs/doxygen/latex/xbdate_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbdate_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbdate.cpp File Reference}
-\label{xbdate_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdate.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdate.cpp}}
+\hypertarget{xbdate_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbdate.cpp File Reference}
+\label{xbdate_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdate.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdate.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
{\ttfamily \#include $<$time.\+h$>$}\newline
\doxysubsection*{Namespaces}
diff --git a/docs/doxygen/latex/xbdate_8h.tex b/docs/doxygen/latex/xbdate_8h.tex
index 8470948..ad386cd 100644
--- a/docs/doxygen/latex/xbdate_8h.tex
+++ b/docs/doxygen/latex/xbdate_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbdate_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbdate.h File Reference}
-\label{xbdate_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdate.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdate.h}}
+\hypertarget{xbdate_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbdate.h File Reference}
+\label{xbdate_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdate.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdate.h}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbdate_8h_source.tex b/docs/doxygen/latex/xbdate_8h_source.tex
index e3c5e25..fbfa1fb 100644
--- a/docs/doxygen/latex/xbdate_8h_source.tex
+++ b/docs/doxygen/latex/xbdate_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbdate_8h_source}{}\doxysection{xbdate.\+h}
-\label{xbdate_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdate.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdate.h}}
+\label{xbdate_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdate.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdate.h}}
\mbox{\hyperlink{xbdate_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbdate.h}}
@@ -71,34 +71,33 @@
\DoxyCodeLine{92 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} DateIsValid ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDate8 ) \textcolor{keyword}{const};}
\DoxyCodeLine{93 xbInt16 DayOf( xbInt16 iFormat ) \textcolor{keyword}{const};}
\DoxyCodeLine{94 xbInt16 CTOD( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCtodInDate );}
-\DoxyCodeLine{95 \textcolor{comment}{// xbInt16 FormatDate( const char *sFmtIn, xbString \&sFmtOut );}}
-\DoxyCodeLine{96 xbInt16 FormatDate( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFmtIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFmtOut );}
-\DoxyCodeLine{97 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *Str() \textcolor{keyword}{const};}
-\DoxyCodeLine{98 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} IsLeapYear( xbInt16 iYear ) \textcolor{keyword}{const};}
-\DoxyCodeLine{99 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} IsLeapYear() \textcolor{keyword}{const};}
-\DoxyCodeLine{100 xbInt32 JulianDays() \textcolor{keyword}{const};}
-\DoxyCodeLine{101 xbInt16 JulToDate8( xbInt32 lJulDate );}
-\DoxyCodeLine{102 xbInt16 LastDayOfMonth();}
-\DoxyCodeLine{103 xbInt16 MonthOf() \textcolor{keyword}{const};}
-\DoxyCodeLine{104 xbInt16 Set( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Date8 );}
-\DoxyCodeLine{105 xbInt16 Sysdate();}
-\DoxyCodeLine{106 xbInt16 YearOf() \textcolor{keyword}{const};}
-\DoxyCodeLine{107 }
-\DoxyCodeLine{108 \textcolor{preprocessor}{\#ifdef XB\_DEBUG\_SUPPORT}}
-\DoxyCodeLine{109 \textcolor{keywordtype}{void} Dump( \textcolor{keyword}{const} \textcolor{keywordtype}{char} * title );}
-\DoxyCodeLine{110 \textcolor{keywordtype}{void} DumpDateTables();}
-\DoxyCodeLine{111 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{112 }
-\DoxyCodeLine{113 \textcolor{keyword}{private}:}
-\DoxyCodeLine{114 \textcolor{keywordtype}{void} SetDateTables();}
-\DoxyCodeLine{115 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDate8; \textcolor{comment}{/* CCYYMMDD date format ie; 20140718 */}}
-\DoxyCodeLine{116 }
-\DoxyCodeLine{117 \textcolor{keyword}{static} \textcolor{keywordtype}{int} iAggregatedDaysInMonths[2][13];}
-\DoxyCodeLine{118 \textcolor{keyword}{static} \textcolor{keywordtype}{int} iDaysInMonths[2][13];}
-\DoxyCodeLine{119 \};}
-\DoxyCodeLine{120 }
-\DoxyCodeLine{121 \} \textcolor{comment}{/* namespace */}}
-\DoxyCodeLine{122 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/*\_\_XB\_XBDATE\_H\_\_ */}\textcolor{preprocessor}{}}
-\DoxyCodeLine{123 }
+\DoxyCodeLine{95 xbInt16 FormatDate( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFmtIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFmtOut );}
+\DoxyCodeLine{96 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *Str() \textcolor{keyword}{const};}
+\DoxyCodeLine{97 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} IsLeapYear( xbInt16 iYear ) \textcolor{keyword}{const};}
+\DoxyCodeLine{98 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} IsLeapYear() \textcolor{keyword}{const};}
+\DoxyCodeLine{99 xbInt32 JulianDays() \textcolor{keyword}{const};}
+\DoxyCodeLine{100 xbInt16 JulToDate8( xbInt32 lJulDate );}
+\DoxyCodeLine{101 xbInt16 LastDayOfMonth();}
+\DoxyCodeLine{102 xbInt16 MonthOf() \textcolor{keyword}{const};}
+\DoxyCodeLine{103 xbInt16 Set( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Date8 );}
+\DoxyCodeLine{104 xbInt16 Sysdate();}
+\DoxyCodeLine{105 xbInt16 YearOf() \textcolor{keyword}{const};}
+\DoxyCodeLine{106 }
+\DoxyCodeLine{107 \textcolor{preprocessor}{\#ifdef XB\_DEBUG\_SUPPORT}}
+\DoxyCodeLine{108 \textcolor{keywordtype}{void} Dump( \textcolor{keyword}{const} \textcolor{keywordtype}{char} * title );}
+\DoxyCodeLine{109 \textcolor{keywordtype}{void} DumpDateTables();}
+\DoxyCodeLine{110 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{111 }
+\DoxyCodeLine{112 \textcolor{keyword}{private}:}
+\DoxyCodeLine{113 \textcolor{keywordtype}{void} SetDateTables();}
+\DoxyCodeLine{114 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDate8; \textcolor{comment}{/* CCYYMMDD date format ie; 20140718 */}}
+\DoxyCodeLine{115 }
+\DoxyCodeLine{116 \textcolor{keyword}{static} \textcolor{keywordtype}{int} iAggregatedDaysInMonths[2][13];}
+\DoxyCodeLine{117 \textcolor{keyword}{static} \textcolor{keywordtype}{int} iDaysInMonths[2][13];}
+\DoxyCodeLine{118 \};}
+\DoxyCodeLine{119 }
+\DoxyCodeLine{120 \} \textcolor{comment}{/* namespace */}}
+\DoxyCodeLine{121 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/*\_\_XB\_XBDATE\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{122 }
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbdbf3_8cpp.tex b/docs/doxygen/latex/xbdbf3_8cpp.tex
index 051e18d..158b426 100644
--- a/docs/doxygen/latex/xbdbf3_8cpp.tex
+++ b/docs/doxygen/latex/xbdbf3_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbdbf3_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf3.cpp File Reference}
-\label{xbdbf3_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf3.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf3.cpp}}
+\hypertarget{xbdbf3_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf3.cpp File Reference}
+\label{xbdbf3_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf3.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf3.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbdbf4_8cpp.tex b/docs/doxygen/latex/xbdbf4_8cpp.tex
index e7d2997..5b06efb 100644
--- a/docs/doxygen/latex/xbdbf4_8cpp.tex
+++ b/docs/doxygen/latex/xbdbf4_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbdbf4_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf4.cpp File Reference}
-\label{xbdbf4_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf4.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf4.cpp}}
+\hypertarget{xbdbf4_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf4.cpp File Reference}
+\label{xbdbf4_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf4.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf4.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbdbf_8cpp.tex b/docs/doxygen/latex/xbdbf_8cpp.tex
index 71c3a1d..42f926d 100644
--- a/docs/doxygen/latex/xbdbf_8cpp.tex
+++ b/docs/doxygen/latex/xbdbf_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbdbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf.cpp File Reference}
-\label{xbdbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbdbf.cpp}}
+\hypertarget{xbdbf_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf.cpp File Reference}
+\label{xbdbf_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbdbf.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbdbf_8h.tex b/docs/doxygen/latex/xbdbf_8h.tex
index 40e74f6..59ea13f 100644
--- a/docs/doxygen/latex/xbdbf_8h.tex
+++ b/docs/doxygen/latex/xbdbf_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbdbf_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbdbf.h File Reference}
-\label{xbdbf_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdbf.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdbf.h}}
+\hypertarget{xbdbf_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbdbf.h File Reference}
+\label{xbdbf_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdbf.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdbf.h}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbdbf_8h_source.tex b/docs/doxygen/latex/xbdbf_8h_source.tex
index 620bbad..0bf6c91 100644
--- a/docs/doxygen/latex/xbdbf_8h_source.tex
+++ b/docs/doxygen/latex/xbdbf_8h_source.tex
@@ -1,12 +1,12 @@
\hypertarget{xbdbf_8h_source}{}\doxysection{xbdbf.\+h}
-\label{xbdbf_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdbf.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbdbf.h}}
+\label{xbdbf_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdbf.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbdbf.h}}
\mbox{\hyperlink{xbdbf_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbdbf.h}}
\DoxyCodeLine{2 \textcolor{comment}{}}
\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
\DoxyCodeLine{4 \textcolor{comment}{}}
-\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel}}
+\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel}}
\DoxyCodeLine{6 \textcolor{comment}{}}
\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
\DoxyCodeLine{8 \textcolor{comment}{}}
@@ -130,367 +130,382 @@
\DoxyCodeLine{168 \textcolor{keyword}{virtual} xbInt16 DumpRecord ( xbUInt32 ulRecNo, xbInt16 iOutputDest = 0, xbInt16 iOutputFmt = 0 );}
\DoxyCodeLine{169 \textcolor{keyword}{virtual} xbInt16 GetAutoCommit () \textcolor{keyword}{const};}
\DoxyCodeLine{170 \textcolor{keyword}{virtual} xbInt16 GetAutoCommit ( xbInt16 iOption ) \textcolor{keyword}{const};}
-\DoxyCodeLine{171 \textcolor{keyword}{virtual} xbUInt32 GetCurRecNo () \textcolor{keyword}{const};}
-\DoxyCodeLine{172 \textcolor{keyword}{virtual} xbInt16 GetDbfStatus () \textcolor{keyword}{const};}
-\DoxyCodeLine{173 \textcolor{keyword}{virtual} xbInt32 GetFieldCnt () \textcolor{keyword}{const};}
-\DoxyCodeLine{174 \textcolor{keyword}{virtual} xbInt16 GetFirstRecord ();}
-\DoxyCodeLine{175 \textcolor{keyword}{virtual} xbInt16 GetFirstRecord ( xbInt16 iOption );}
-\DoxyCodeLine{176 \textcolor{keyword}{virtual} xbInt16 GetLastRecord ();}
-\DoxyCodeLine{177 \textcolor{keyword}{virtual} xbInt16 GetLastRecord ( xbInt16 iOption );}
-\DoxyCodeLine{178 }
-\DoxyCodeLine{179 \textcolor{keyword}{virtual} xbInt16 GetNextRecord ();}
-\DoxyCodeLine{180 \textcolor{keyword}{virtual} xbInt16 GetNextRecord ( xbInt16 iOption );}
-\DoxyCodeLine{181 \textcolor{keyword}{virtual} xbInt16 GetNextRecord ( xbInt16 iOption, xbUInt32 ulStartRec );}
-\DoxyCodeLine{182 \textcolor{keyword}{virtual} xbInt16 GetPrevRecord ();}
-\DoxyCodeLine{183 \textcolor{keyword}{virtual} xbInt16 GetPrevRecord ( xbInt16 iOption );}
-\DoxyCodeLine{184 \textcolor{keyword}{virtual} xbInt16 GetRecord ( xbUInt32 ulRecNo );}
-\DoxyCodeLine{185 }
-\DoxyCodeLine{186 \textcolor{keyword}{virtual} xbUInt32 GetRecordCount ();}
-\DoxyCodeLine{187 \textcolor{keyword}{virtual} xbInt16 GetRecordCnt ( xbUInt32 \& ulRecCnt );}
+\DoxyCodeLine{171 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetBof ();}
+\DoxyCodeLine{172 \textcolor{keyword}{virtual} xbUInt32 GetCurRecNo () \textcolor{keyword}{const};}
+\DoxyCodeLine{173 \textcolor{keyword}{virtual} xbInt16 GetDbfStatus () \textcolor{keyword}{const};}
+\DoxyCodeLine{174 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetEof ();}
+\DoxyCodeLine{175 \textcolor{keyword}{virtual} xbInt32 GetFieldCnt () \textcolor{keyword}{const};}
+\DoxyCodeLine{176 \textcolor{keyword}{virtual} xbInt16 GetFirstRecord ();}
+\DoxyCodeLine{177 \textcolor{keyword}{virtual} xbInt16 GetFirstRecord ( xbInt16 iOption );}
+\DoxyCodeLine{178 \textcolor{keyword}{virtual} xbUInt16 \mbox{\hyperlink{classxb_1_1xbDbf_ad56be2756b7a9f8318d9ba5cf215dafb}{GetHeaderLen}} () \textcolor{keyword}{const};}
+\DoxyCodeLine{179 \textcolor{keyword}{virtual} xbInt16 GetLastRecord ();}
+\DoxyCodeLine{180 \textcolor{keyword}{virtual} xbInt16 GetLastRecord ( xbInt16 iOption );}
+\DoxyCodeLine{181 }
+\DoxyCodeLine{182 \textcolor{keyword}{virtual} xbInt16 GetNextRecord ();}
+\DoxyCodeLine{183 \textcolor{keyword}{virtual} xbInt16 GetNextRecord ( xbInt16 iOption );}
+\DoxyCodeLine{184 \textcolor{keyword}{virtual} xbInt16 GetNextRecord ( xbInt16 iOption, xbUInt32 ulStartRec );}
+\DoxyCodeLine{185 \textcolor{keyword}{virtual} xbInt16 GetPrevRecord ();}
+\DoxyCodeLine{186 \textcolor{keyword}{virtual} xbInt16 GetPrevRecord ( xbInt16 iOption );}
+\DoxyCodeLine{187 \textcolor{keyword}{virtual} xbInt16 GetRecord ( xbUInt32 ulRecNo );}
\DoxyCodeLine{188 }
-\DoxyCodeLine{189 \textcolor{keyword}{virtual} \textcolor{keywordtype}{char} * GetRecordBuf ( xbInt16 iOpt = 0 ) \textcolor{keyword}{const};}
-\DoxyCodeLine{190 \textcolor{keyword}{virtual} xbUInt16 GetRecordLen () \textcolor{keyword}{const};}
-\DoxyCodeLine{191 \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&GetTblAlias() \textcolor{keyword}{const};}
-\DoxyCodeLine{192 \textcolor{keyword}{virtual} xbInt16 \mbox{\hyperlink{classxb_1_1xbDbf_a49212a9eb17f7fa9f303e08d5fc50fc6}{GetVersion}} () \textcolor{keyword}{const} = 0; }
-\DoxyCodeLine{193 \textcolor{keyword}{virtual} \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *GetXbasePtr () \textcolor{keyword}{const}; \textcolor{comment}{// return xbase pointer}}
-\DoxyCodeLine{194 }
-\DoxyCodeLine{195 }
-\DoxyCodeLine{196 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} MemoFieldsExist () \textcolor{keyword}{const};}
+\DoxyCodeLine{189 \textcolor{keyword}{virtual} xbUInt32 GetRecordCount ();}
+\DoxyCodeLine{190 \textcolor{keyword}{virtual} xbInt16 GetRecordCnt ( xbUInt32 \& ulRecCnt );}
+\DoxyCodeLine{191 }
+\DoxyCodeLine{192 \textcolor{keyword}{virtual} \textcolor{keywordtype}{char} * GetRecordBuf ( xbInt16 iOpt = 0 ) \textcolor{keyword}{const};}
+\DoxyCodeLine{193 \textcolor{keyword}{virtual} xbUInt16 GetRecordLen () \textcolor{keyword}{const};}
+\DoxyCodeLine{194 \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&GetTblAlias() \textcolor{keyword}{const};}
+\DoxyCodeLine{195 \textcolor{keyword}{virtual} xbInt16 \mbox{\hyperlink{classxb_1_1xbDbf_a49212a9eb17f7fa9f303e08d5fc50fc6}{GetVersion}} () \textcolor{keyword}{const} = 0; }
+\DoxyCodeLine{196 \textcolor{keyword}{virtual} \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *GetXbasePtr () \textcolor{keyword}{const}; \textcolor{comment}{// return xbase pointer}}
\DoxyCodeLine{197 }
-\DoxyCodeLine{198 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName );}
-\DoxyCodeLine{199 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias );}
-\DoxyCodeLine{200 \textcolor{keyword}{virtual} xbInt16 \mbox{\hyperlink{classxb_1_1xbDbf_a4d018cbf44d8d8b2145c9acab02c8adf}{Open}} ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias, xbInt16 iOpenMode, xbInt16 iShareMode ) = 0;}
-\DoxyCodeLine{201 \textcolor{keyword}{virtual} xbInt16 Pack ();}
-\DoxyCodeLine{202 \textcolor{keyword}{virtual} xbInt16 Pack ( xbUInt32 \&ulDeletedRecCnt );}
-\DoxyCodeLine{203 }
-\DoxyCodeLine{204 }
-\DoxyCodeLine{205 \textcolor{keyword}{virtual} xbInt16 PutRecord (); \textcolor{comment}{// Put record to current location}}
-\DoxyCodeLine{206 \textcolor{keyword}{virtual} xbInt16 PutRecord ( xbUInt32 ulRecNo );}
-\DoxyCodeLine{207 \textcolor{keyword}{virtual} xbInt16 ReadHeader ( xbInt16 iFilePositionOption, xbInt16 iReadOption );}
-\DoxyCodeLine{208 \textcolor{keyword}{virtual} xbInt16 RecordDeleted ( xbInt16 iOpt = 0 ) \textcolor{keyword}{const};}
-\DoxyCodeLine{209 \textcolor{keyword}{virtual} xbInt16 \mbox{\hyperlink{classxb_1_1xbDbf_aeeeb2eb5fabcd0f91d457df07b0e0708}{Rename}} ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sNewName ) = 0;}
-\DoxyCodeLine{210 }
-\DoxyCodeLine{211 \textcolor{keyword}{virtual} xbInt16 SetAutoCommit ( xbInt16 iAutoCommit );}
-\DoxyCodeLine{212 }
-\DoxyCodeLine{213 \textcolor{keyword}{virtual} xbInt16 UndeleteAllRecords();}
-\DoxyCodeLine{214 \textcolor{keyword}{virtual} xbInt16 UndeleteRecord ();}
-\DoxyCodeLine{215 \textcolor{keyword}{virtual} xbInt16 Zap ();}
-\DoxyCodeLine{216 }
-\DoxyCodeLine{217 }
-\DoxyCodeLine{218 \textcolor{comment}{/* field methods */}}
-\DoxyCodeLine{219 \textcolor{comment}{//virtual xbInt16 GetRawField( xbInt16 iFieldNo, char *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) const;}}
-\DoxyCodeLine{220 \textcolor{keyword}{virtual} xbInt16 GetField(xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldValue, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
-\DoxyCodeLine{221 \textcolor{keyword}{virtual} xbInt16 GetField(xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldValue) \textcolor{keyword}{const};}
-\DoxyCodeLine{222 \textcolor{keyword}{virtual} xbInt16 GetField(\textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldValue) \textcolor{keyword}{const};}
-\DoxyCodeLine{223 \textcolor{keyword}{virtual} xbInt16 GetFieldDecimal( xbInt16 iFieldNo, xbInt16 \&iFieldDecimal ) \textcolor{keyword}{const};}
-\DoxyCodeLine{224 \textcolor{keyword}{virtual} xbInt16 GetFieldDecimal( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt16 \&iFieldDecimal ) \textcolor{keyword}{const};}
-\DoxyCodeLine{225 \textcolor{keyword}{virtual} xbInt16 GetFieldLen( xbInt16 iFieldNo, xbInt16 \&iFieldLen ) \textcolor{keyword}{const};}
-\DoxyCodeLine{226 \textcolor{keyword}{virtual} xbInt16 GetFieldLen( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt16 \&iFieldLen ) \textcolor{keyword}{const};}
-\DoxyCodeLine{227 \textcolor{keyword}{virtual} xbInt16 GetFieldName( xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName ) \textcolor{keyword}{const};}
-\DoxyCodeLine{228 }
-\DoxyCodeLine{229 \textcolor{keyword}{virtual} xbInt16 GetFieldNo( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt16 \&iFieldNo ) \textcolor{keyword}{const};}
-\DoxyCodeLine{230 \textcolor{keyword}{virtual} xbInt16 GetFieldNo( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName ) \textcolor{keyword}{const};}
+\DoxyCodeLine{198 }
+\DoxyCodeLine{199 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} MemoFieldsExist () \textcolor{keyword}{const};}
+\DoxyCodeLine{200 }
+\DoxyCodeLine{201 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName );}
+\DoxyCodeLine{202 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias );}
+\DoxyCodeLine{203 \textcolor{keyword}{virtual} xbInt16 \mbox{\hyperlink{classxb_1_1xbDbf_a4d018cbf44d8d8b2145c9acab02c8adf}{Open}} ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias, xbInt16 iOpenMode, xbInt16 iShareMode ) = 0;}
+\DoxyCodeLine{204 \textcolor{keyword}{virtual} xbInt16 Pack ();}
+\DoxyCodeLine{205 \textcolor{keyword}{virtual} xbInt16 Pack ( xbUInt32 \&ulDeletedRecCnt );}
+\DoxyCodeLine{206 }
+\DoxyCodeLine{207 }
+\DoxyCodeLine{208 \textcolor{keyword}{virtual} xbInt16 PutRecord (); \textcolor{comment}{// Put record to current location}}
+\DoxyCodeLine{209 \textcolor{keyword}{virtual} xbInt16 PutRecord ( xbUInt32 ulRecNo );}
+\DoxyCodeLine{210 \textcolor{keyword}{virtual} xbInt16 ReadHeader ( xbInt16 iFilePositionOption, xbInt16 iReadOption );}
+\DoxyCodeLine{211 \textcolor{keyword}{virtual} xbInt16 RecordDeleted ( xbInt16 iOpt = 0 ) \textcolor{keyword}{const};}
+\DoxyCodeLine{212 \textcolor{keyword}{virtual} xbInt16 \mbox{\hyperlink{classxb_1_1xbDbf_aeeeb2eb5fabcd0f91d457df07b0e0708}{Rename}} ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sNewName ) = 0;}
+\DoxyCodeLine{213 }
+\DoxyCodeLine{214 \textcolor{keyword}{virtual} xbInt16 SetAutoCommit ( xbInt16 iAutoCommit );}
+\DoxyCodeLine{215 }
+\DoxyCodeLine{216 \textcolor{keyword}{virtual} xbInt16 UndeleteAllRecords();}
+\DoxyCodeLine{217 \textcolor{keyword}{virtual} xbInt16 UndeleteRecord ();}
+\DoxyCodeLine{218 \textcolor{keyword}{virtual} xbInt16 Zap ();}
+\DoxyCodeLine{219 }
+\DoxyCodeLine{220 }
+\DoxyCodeLine{221 \textcolor{comment}{/* field methods */}}
+\DoxyCodeLine{222 \textcolor{comment}{//virtual xbInt16 GetRawField( xbInt16 iFieldNo, char *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) const;}}
+\DoxyCodeLine{223 \textcolor{keyword}{virtual} xbInt16 GetField(xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldValue, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
+\DoxyCodeLine{224 \textcolor{keyword}{virtual} xbInt16 GetField(xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldValue) \textcolor{keyword}{const};}
+\DoxyCodeLine{225 \textcolor{keyword}{virtual} xbInt16 GetField(\textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldValue) \textcolor{keyword}{const};}
+\DoxyCodeLine{226 \textcolor{keyword}{virtual} xbInt16 GetFieldDecimal( xbInt16 iFieldNo, xbInt16 \&iFieldDecimal ) \textcolor{keyword}{const};}
+\DoxyCodeLine{227 \textcolor{keyword}{virtual} xbInt16 GetFieldDecimal( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt16 \&iFieldDecimal ) \textcolor{keyword}{const};}
+\DoxyCodeLine{228 \textcolor{keyword}{virtual} xbInt16 GetFieldLen( xbInt16 iFieldNo, xbInt16 \&iFieldLen ) \textcolor{keyword}{const};}
+\DoxyCodeLine{229 \textcolor{keyword}{virtual} xbInt16 GetFieldLen( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt16 \&iFieldLen ) \textcolor{keyword}{const};}
+\DoxyCodeLine{230 \textcolor{keyword}{virtual} xbInt16 GetFieldName( xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName ) \textcolor{keyword}{const};}
\DoxyCodeLine{231 }
-\DoxyCodeLine{232 \textcolor{keyword}{virtual} xbInt16 GetFieldType( xbInt16 iFieldNo, \textcolor{keywordtype}{char} \&cFieldType ) \textcolor{keyword}{const};}
-\DoxyCodeLine{233 \textcolor{keyword}{virtual} xbInt16 GetFieldType( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keywordtype}{char} \&cFieldType ) \textcolor{keyword}{const};}
-\DoxyCodeLine{234 \textcolor{keyword}{virtual} xbInt16 PutField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
-\DoxyCodeLine{235 \textcolor{keyword}{virtual} xbInt16 PutField( xbInt16 iFieldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
-\DoxyCodeLine{236 }
-\DoxyCodeLine{237 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( xbInt16 iFieldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
-\DoxyCodeLine{238 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
-\DoxyCodeLine{239 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData ) \textcolor{keyword}{const};}
-\DoxyCodeLine{240 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData) \textcolor{keyword}{const};}
-\DoxyCodeLine{241 }
-\DoxyCodeLine{242 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFieldData );}
-\DoxyCodeLine{243 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFieldData );}
-\DoxyCodeLine{244 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFieldData ) \textcolor{keyword}{const};}
-\DoxyCodeLine{245 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFieldData, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
-\DoxyCodeLine{246 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFieldData) \textcolor{keyword}{const};}
-\DoxyCodeLine{247 }
-\DoxyCodeLine{248 \textcolor{keyword}{virtual} xbInt16 GetLongField( xbInt16 iFieldNo, xbInt32 \&lFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{249 \textcolor{keyword}{virtual} xbInt16 GetLongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt32 \&lFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{250 \textcolor{keyword}{virtual} xbInt16 PutLongField( xbInt16 iFieldNo, xbInt32 lFieldValue );}
-\DoxyCodeLine{251 \textcolor{keyword}{virtual} xbInt16 PutLongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldNo, xbInt32 lFieldValue );}
-\DoxyCodeLine{252 }
-\DoxyCodeLine{253 \textcolor{keyword}{virtual} xbInt16 GetULongField( xbInt16 iFieldNo, xbUInt32 \&lFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{254 \textcolor{keyword}{virtual} xbInt16 GetULongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbUInt32 \&lFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{255 \textcolor{keyword}{virtual} xbInt16 PutULongField( xbInt16 iFieldNo, xbUInt32 lFieldValue );}
-\DoxyCodeLine{256 \textcolor{keyword}{virtual} xbInt16 PutULongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldNo, xbUInt32 lFieldValue );}
-\DoxyCodeLine{257 }
-\DoxyCodeLine{258 \textcolor{keyword}{virtual} xbInt16 GetDoubleField( xbInt16 FieldNo, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{259 \textcolor{keyword}{virtual} xbInt16 GetDoubleField( xbInt16 FieldNo, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dFieldValue, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
-\DoxyCodeLine{260 \textcolor{keyword}{virtual} xbInt16 GetDoubleField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{261 \textcolor{keyword}{virtual} xbInt16 PutDoubleField( xbInt16 FieldNo, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dFieldValue );}
-\DoxyCodeLine{262 \textcolor{keyword}{virtual} xbInt16 PutDoubleField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&FieldName, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dFieldValue );}
-\DoxyCodeLine{263 }
-\DoxyCodeLine{264 \textcolor{keyword}{virtual} xbInt16 GetFloatField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} \&fFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{265 \textcolor{keyword}{virtual} xbInt16 GetFloatField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} \&fFieldValue ) \textcolor{keyword}{const};}
-\DoxyCodeLine{266 \textcolor{keyword}{virtual} xbInt16 PutFloatField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} fFieldValue );}
-\DoxyCodeLine{267 \textcolor{keyword}{virtual} xbInt16 PutFloatField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} fFieldValue );}
-\DoxyCodeLine{268 }
-\DoxyCodeLine{269 \textcolor{keyword}{virtual} xbInt16 GetDateField( xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt ) \textcolor{keyword}{const};}
-\DoxyCodeLine{270 \textcolor{keyword}{virtual} xbInt16 GetDateField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt ) \textcolor{keyword}{const};}
-\DoxyCodeLine{271 \textcolor{keyword}{virtual} xbInt16 PutDateField( xbInt16 iFieldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt );}
-\DoxyCodeLine{272 \textcolor{keyword}{virtual} xbInt16 PutDateField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt );}
-\DoxyCodeLine{273 }
-\DoxyCodeLine{274 }
-\DoxyCodeLine{275 }
-\DoxyCodeLine{276 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
-\DoxyCodeLine{277 \textcolor{keyword}{virtual} xbInt16 GetMemoFieldCnt () \textcolor{keyword}{const};}
-\DoxyCodeLine{278 \textcolor{keyword}{virtual} xbMemo *GetMemoPtr ();}
-\DoxyCodeLine{279 \textcolor{keyword}{virtual} xbUInt32 GetCreateMemoBlockSize() \textcolor{keyword}{const};}
-\DoxyCodeLine{280 \textcolor{keyword}{virtual} xbInt16 GetMemoField ( xbInt16 iFldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
-\DoxyCodeLine{281 \textcolor{keyword}{virtual} xbInt16 GetMemoField ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sFldName, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
-\DoxyCodeLine{282 \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen ( xbInt16 iFldNo, xbUInt32 \&ullMemoFieldLen );}
-\DoxyCodeLine{283 \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sFldName, xbUInt32 \&ulMemoFieldLen );}
-\DoxyCodeLine{284 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} MemoFieldExists ( xbInt16 iFieldNo ) \textcolor{keyword}{const};}
-\DoxyCodeLine{285 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} MemoFieldExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName ) \textcolor{keyword}{const};}
-\DoxyCodeLine{286 \textcolor{keyword}{virtual} xbInt16 SetCreateMemoBlockSize( xbUInt32 ulBlockSize ) = 0;}
-\DoxyCodeLine{287 \textcolor{keyword}{virtual} xbInt16 UpdateMemoField ( xbInt16 iFldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
-\DoxyCodeLine{288 \textcolor{keyword}{virtual} xbInt16 UpdateMemoField ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sFldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
-\DoxyCodeLine{289 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_MEMO\_SUPPORT}}
-\DoxyCodeLine{290 }
-\DoxyCodeLine{291 }
-\DoxyCodeLine{292 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{293 \textcolor{keyword}{virtual} xbInt16 LockTable ( xbInt16 iLockFunction );}
-\DoxyCodeLine{294 \textcolor{keyword}{virtual} xbInt16 LockRecord ( xbInt16 iLockFunction, xbUInt32 ulRecNo );}
-\DoxyCodeLine{295 \textcolor{keyword}{virtual} xbInt16 LockAppend ( xbInt16 iLockFunction );}
-\DoxyCodeLine{296 \textcolor{keyword}{virtual} xbInt16 LockHeader ( xbInt16 iLockFunction );}
-\DoxyCodeLine{297 }
-\DoxyCodeLine{298 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
-\DoxyCodeLine{299 \textcolor{keyword}{virtual} xbInt16 LockMemo ( xbInt16 iLockFunction );}
-\DoxyCodeLine{300 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetMemoLocked () \textcolor{keyword}{const}; }
-\DoxyCodeLine{301 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_MEMO\_LOCK}}
-\DoxyCodeLine{302 }
-\DoxyCodeLine{303 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{304 \textcolor{keyword}{virtual} xbInt16 LockIndices ( xbInt16 iLockFunction );}
-\DoxyCodeLine{305 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{306 }
-\DoxyCodeLine{307 xbInt16 GetAutoLock () \textcolor{keyword}{const};}
-\DoxyCodeLine{308 \textcolor{keywordtype}{void} SetAutoLock ( xbInt16 iAutoLock );}
-\DoxyCodeLine{309 xbInt16 GetLockFlavor () \textcolor{keyword}{const};}
-\DoxyCodeLine{310 \textcolor{keywordtype}{void} SetLockFlavor ( xbInt16 iLockFlavor );}
-\DoxyCodeLine{311 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetTableLocked () \textcolor{keyword}{const};}
-\DoxyCodeLine{312 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetHeaderLocked () \textcolor{keyword}{const};}
-\DoxyCodeLine{313 xbUInt32 GetAppendLocked () \textcolor{keyword}{const};}
-\DoxyCodeLine{314 xbLinkListNode<xbUInt32> * GetFirstRecLock () \textcolor{keyword}{const};}
-\DoxyCodeLine{315 }
-\DoxyCodeLine{316 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}}
-\DoxyCodeLine{317 \textcolor{keywordtype}{void} DumpTableLockStatus() \textcolor{keyword}{const};}
-\DoxyCodeLine{318 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_DEBUG\_SUPPORT}}
-\DoxyCodeLine{319 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{320 }
-\DoxyCodeLine{321 }
-\DoxyCodeLine{322 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{323 \textcolor{keyword}{virtual} xbInt16 CheckTagIntegrity( xbInt16 iTagOpt, xbInt16 iOutputOpt );}
-\DoxyCodeLine{324 \textcolor{keyword}{virtual} xbInt16 CloseIndexFile( xbIx *pIx );}
-\DoxyCodeLine{325 \textcolor{keyword}{virtual} xbInt16 CreateTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sKey, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFilter, }
-\DoxyCodeLine{326 xbInt16 iDescending, xbInt16 iUnique, xbInt16 iOverLay, xbIx **xbIxOut, \textcolor{keywordtype}{void} **vpTagOut );}
-\DoxyCodeLine{327 \textcolor{keyword}{virtual} xbInt16 DeleteTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sName );}
-\DoxyCodeLine{328 \textcolor{keyword}{virtual} xbInt16 DeleteAllIndexFiles();}
-\DoxyCodeLine{329 \textcolor{keyword}{virtual} xbInt16 Find( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sKey );}
-\DoxyCodeLine{330 \textcolor{keyword}{virtual} xbInt16 Find( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dtKey );}
-\DoxyCodeLine{331 \textcolor{keyword}{virtual} xbInt16 Find( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dKey );}
-\DoxyCodeLine{332 \textcolor{keyword}{virtual} xbIx *GetCurIx() \textcolor{keyword}{const};}
-\DoxyCodeLine{333 \textcolor{keyword}{virtual} \textcolor{keywordtype}{void} *GetCurTag() \textcolor{keyword}{const};}
-\DoxyCodeLine{334 }
-\DoxyCodeLine{335 \textcolor{keyword}{virtual} xbInt16 GetFirstKey();}
-\DoxyCodeLine{336 \textcolor{keyword}{virtual} xbInt16 GetNextKey();}
-\DoxyCodeLine{337 \textcolor{keyword}{virtual} xbInt16 GetPrevKey();}
-\DoxyCodeLine{338 \textcolor{keyword}{virtual} xbInt16 GetLastKey();}
-\DoxyCodeLine{339 }
-\DoxyCodeLine{340 \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&GetCurIxType() \textcolor{keyword}{const};}
-\DoxyCodeLine{341 \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&GetCurTagName() \textcolor{keyword}{const};}
-\DoxyCodeLine{342 \textcolor{keyword}{virtual} xbIxList *GetIxList() \textcolor{keyword}{const};}
-\DoxyCodeLine{343 \textcolor{keyword}{virtual} xbInt32 GetPhysicalIxCnt () \textcolor{keyword}{const};}
-\DoxyCodeLine{344 xbLinkListNode<xbTag *> *GetTagList () \textcolor{keyword}{const};}
-\DoxyCodeLine{345 }
-\DoxyCodeLine{346 \textcolor{keyword}{virtual} xbInt16 OpenIndex( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIndexName );}
-\DoxyCodeLine{347 \textcolor{keyword}{virtual} xbInt16 Reindex( xbInt16 iTagOpt );}
-\DoxyCodeLine{348 \textcolor{keyword}{virtual} xbInt16 SetCurTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTagName );}
-\DoxyCodeLine{349 \textcolor{keyword}{virtual} \textcolor{keywordtype}{void} SetCurTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, xbIx *pIx, \textcolor{keywordtype}{void} *vpTag );}
-\DoxyCodeLine{350 }
-\DoxyCodeLine{351 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{352 }
-\DoxyCodeLine{353 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
-\DoxyCodeLine{354 \textcolor{keyword}{virtual} xbInt16 AssociateIndex( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sName, xbInt16 iOption );}
-\DoxyCodeLine{355 xbLinkListNode<xbString> *GetInfList() \textcolor{keyword}{const};}
-\DoxyCodeLine{356 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
-\DoxyCodeLine{357 }
-\DoxyCodeLine{358 \textcolor{comment}{//\#ifdef XB\_MDX\_SUPPORT}}
-\DoxyCodeLine{359 \textcolor{comment}{//virtual xbInt16 GetCreateMdxBlockSize() const;}}
-\DoxyCodeLine{360 \textcolor{comment}{//virtual xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );}}
-\DoxyCodeLine{361 \textcolor{comment}{//\#endif}}
-\DoxyCodeLine{362 }
-\DoxyCodeLine{363 }
-\DoxyCodeLine{364 }
-\DoxyCodeLine{365 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{366 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{367 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbIx;}
-\DoxyCodeLine{368 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbIxMdx;}
-\DoxyCodeLine{369 }
-\DoxyCodeLine{370 xbInt16 AddIndex( xbIx *ix, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFmt );}
-\DoxyCodeLine{371 \textcolor{keywordtype}{void} ClearTagList();}
-\DoxyCodeLine{372 xbInt16 RemoveIndex( xbIx * ix );}
-\DoxyCodeLine{373 \textcolor{keywordtype}{void} UpdateSchemaIxFlag( xbInt16 iFldNo, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cVal );}
-\DoxyCodeLine{374 \textcolor{keyword}{virtual} xbInt16 UpdateTagList ();}
-\DoxyCodeLine{375 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{232 \textcolor{keyword}{virtual} xbInt16 GetFieldNo( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt16 \&iFieldNo ) \textcolor{keyword}{const};}
+\DoxyCodeLine{233 \textcolor{keyword}{virtual} xbInt16 GetFieldNo( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName ) \textcolor{keyword}{const};}
+\DoxyCodeLine{234 }
+\DoxyCodeLine{235 \textcolor{keyword}{virtual} xbInt16 GetFieldType( xbInt16 iFieldNo, \textcolor{keywordtype}{char} \&cFieldType ) \textcolor{keyword}{const};}
+\DoxyCodeLine{236 \textcolor{keyword}{virtual} xbInt16 GetFieldType( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keywordtype}{char} \&cFieldType ) \textcolor{keyword}{const};}
+\DoxyCodeLine{237 \textcolor{keyword}{virtual} xbInt16 PutField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
+\DoxyCodeLine{238 \textcolor{keyword}{virtual} xbInt16 PutField( xbInt16 iFieldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
+\DoxyCodeLine{239 }
+\DoxyCodeLine{240 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( xbInt16 iFieldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
+\DoxyCodeLine{241 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData );}
+\DoxyCodeLine{242 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData ) \textcolor{keyword}{const};}
+\DoxyCodeLine{243 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldData) \textcolor{keyword}{const};}
+\DoxyCodeLine{244 }
+\DoxyCodeLine{245 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFieldData );}
+\DoxyCodeLine{246 \textcolor{keyword}{virtual} xbInt16 PutLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFieldData );}
+\DoxyCodeLine{247 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFieldData ) \textcolor{keyword}{const};}
+\DoxyCodeLine{248 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFieldData, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
+\DoxyCodeLine{249 \textcolor{keyword}{virtual} xbInt16 GetLogicalField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFieldData) \textcolor{keyword}{const};}
+\DoxyCodeLine{250 }
+\DoxyCodeLine{251 \textcolor{keyword}{virtual} xbInt16 GetLongField( xbInt16 iFieldNo, xbInt32 \&lFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{252 \textcolor{keyword}{virtual} xbInt16 GetLongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbInt32 \&lFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{253 \textcolor{keyword}{virtual} xbInt16 PutLongField( xbInt16 iFieldNo, xbInt32 lFieldValue );}
+\DoxyCodeLine{254 \textcolor{keyword}{virtual} xbInt16 PutLongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldNo, xbInt32 lFieldValue );}
+\DoxyCodeLine{255 }
+\DoxyCodeLine{256 \textcolor{keyword}{virtual} xbInt16 GetULongField( xbInt16 iFieldNo, xbUInt32 \&lFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{257 \textcolor{keyword}{virtual} xbInt16 GetULongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, xbUInt32 \&lFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{258 \textcolor{keyword}{virtual} xbInt16 PutULongField( xbInt16 iFieldNo, xbUInt32 lFieldValue );}
+\DoxyCodeLine{259 \textcolor{keyword}{virtual} xbInt16 PutULongField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldNo, xbUInt32 lFieldValue );}
+\DoxyCodeLine{260 }
+\DoxyCodeLine{261 \textcolor{keyword}{virtual} xbInt16 GetDoubleField( xbInt16 FieldNo, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{262 \textcolor{keyword}{virtual} xbInt16 GetDoubleField( xbInt16 FieldNo, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dFieldValue, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
+\DoxyCodeLine{263 \textcolor{keyword}{virtual} xbInt16 GetDoubleField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{264 \textcolor{keyword}{virtual} xbInt16 PutDoubleField( xbInt16 FieldNo, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dFieldValue );}
+\DoxyCodeLine{265 \textcolor{keyword}{virtual} xbInt16 PutDoubleField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&FieldName, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dFieldValue );}
+\DoxyCodeLine{266 }
+\DoxyCodeLine{267 \textcolor{keyword}{virtual} xbInt16 GetFloatField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} \&fFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{268 \textcolor{keyword}{virtual} xbInt16 GetFloatField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} \&fFieldValue ) \textcolor{keyword}{const};}
+\DoxyCodeLine{269 \textcolor{keyword}{virtual} xbInt16 PutFloatField( xbInt16 iFieldNo, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} fFieldValue );}
+\DoxyCodeLine{270 \textcolor{keyword}{virtual} xbInt16 PutFloatField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{namespacexb_a83aa6a550398db55973aa9fb4257e66e}{xbFloat}} fFieldValue );}
+\DoxyCodeLine{271 }
+\DoxyCodeLine{272 \textcolor{keyword}{virtual} xbInt16 GetDateField( xbInt16 iFieldNo, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt ) \textcolor{keyword}{const};}
+\DoxyCodeLine{273 \textcolor{keyword}{virtual} xbInt16 GetDateField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt ) \textcolor{keyword}{const};}
+\DoxyCodeLine{274 \textcolor{keyword}{virtual} xbInt16 PutDateField( xbInt16 iFieldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt );}
+\DoxyCodeLine{275 \textcolor{keyword}{virtual} xbInt16 PutDateField( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dt );}
+\DoxyCodeLine{276 }
+\DoxyCodeLine{277 }
+\DoxyCodeLine{278 }
+\DoxyCodeLine{279 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
+\DoxyCodeLine{280 \textcolor{keyword}{virtual} xbInt16 GetMemoFieldCnt () \textcolor{keyword}{const};}
+\DoxyCodeLine{281 \textcolor{keyword}{virtual} xbMemo *GetMemoPtr ();}
+\DoxyCodeLine{282 \textcolor{keyword}{virtual} xbUInt32 GetCreateMemoBlockSize() \textcolor{keyword}{const};}
+\DoxyCodeLine{283 \textcolor{keyword}{virtual} xbInt16 GetMemoField ( xbInt16 iFldNo, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
+\DoxyCodeLine{284 \textcolor{keyword}{virtual} xbInt16 GetMemoField ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sFldName, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
+\DoxyCodeLine{285 \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen ( xbInt16 iFldNo, xbUInt32 \&ullMemoFieldLen );}
+\DoxyCodeLine{286 \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sFldName, xbUInt32 \&ulMemoFieldLen );}
+\DoxyCodeLine{287 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} MemoFieldExists ( xbInt16 iFieldNo ) \textcolor{keyword}{const};}
+\DoxyCodeLine{288 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} MemoFieldExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFieldName ) \textcolor{keyword}{const};}
+\DoxyCodeLine{289 \textcolor{keyword}{virtual} xbInt16 SetCreateMemoBlockSize( xbUInt32 ulBlockSize ) = 0;}
+\DoxyCodeLine{290 \textcolor{keyword}{virtual} xbInt16 UpdateMemoField ( xbInt16 iFldNo, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
+\DoxyCodeLine{291 \textcolor{keyword}{virtual} xbInt16 UpdateMemoField ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sFldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMemoData );}
+\DoxyCodeLine{292 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_MEMO\_SUPPORT}}
+\DoxyCodeLine{293 }
+\DoxyCodeLine{294 }
+\DoxyCodeLine{295 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{296 \textcolor{keyword}{virtual} xbInt16 LockTable ( xbInt16 iLockFunction );}
+\DoxyCodeLine{297 \textcolor{keyword}{virtual} xbInt16 LockRecord ( xbInt16 iLockFunction, xbUInt32 ulRecNo );}
+\DoxyCodeLine{298 \textcolor{keyword}{virtual} xbInt16 LockAppend ( xbInt16 iLockFunction );}
+\DoxyCodeLine{299 \textcolor{keyword}{virtual} xbInt16 LockHeader ( xbInt16 iLockFunction );}
+\DoxyCodeLine{300 }
+\DoxyCodeLine{301 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
+\DoxyCodeLine{302 \textcolor{keyword}{virtual} xbInt16 LockMemo ( xbInt16 iLockFunction );}
+\DoxyCodeLine{303 \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetMemoLocked () \textcolor{keyword}{const}; }
+\DoxyCodeLine{304 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_MEMO\_LOCK}}
+\DoxyCodeLine{305 }
+\DoxyCodeLine{306 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{307 \textcolor{keyword}{virtual} xbInt16 LockIndices ( xbInt16 iLockFunction );}
+\DoxyCodeLine{308 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{309 }
+\DoxyCodeLine{310 xbInt16 GetAutoLock () \textcolor{keyword}{const};}
+\DoxyCodeLine{311 \textcolor{keywordtype}{void} SetAutoLock ( xbInt16 iAutoLock );}
+\DoxyCodeLine{312 xbInt16 GetLockFlavor () \textcolor{keyword}{const};}
+\DoxyCodeLine{313 \textcolor{keywordtype}{void} SetLockFlavor ( xbInt16 iLockFlavor );}
+\DoxyCodeLine{314 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetTableLocked () \textcolor{keyword}{const};}
+\DoxyCodeLine{315 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetHeaderLocked () \textcolor{keyword}{const};}
+\DoxyCodeLine{316 xbUInt32 GetAppendLocked () \textcolor{keyword}{const};}
+\DoxyCodeLine{317 xbLinkListNode<xbUInt32> * GetFirstRecLock () \textcolor{keyword}{const};}
+\DoxyCodeLine{318 }
+\DoxyCodeLine{319 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}}
+\DoxyCodeLine{320 \textcolor{keywordtype}{void} DumpTableLockStatus() \textcolor{keyword}{const};}
+\DoxyCodeLine{321 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_DEBUG\_SUPPORT}}
+\DoxyCodeLine{322 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{323 }
+\DoxyCodeLine{324 }
+\DoxyCodeLine{325 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{326 \textcolor{keyword}{virtual} xbInt16 CheckTagIntegrity( xbInt16 iTagOpt, xbInt16 iOutputOpt );}
+\DoxyCodeLine{327 \textcolor{keyword}{virtual} xbInt16 CloseIndexFile( xbIx *pIx );}
+\DoxyCodeLine{328 \textcolor{keyword}{virtual} xbInt16 CreateTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sKey, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFilter, }
+\DoxyCodeLine{329 xbInt16 iDescending, xbInt16 iUnique, xbInt16 iOverLay, xbIx **xbIxOut, \textcolor{keywordtype}{void} **vpTagOut );}
+\DoxyCodeLine{330 \textcolor{keyword}{virtual} xbInt16 DeleteTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sName );}
+\DoxyCodeLine{331 \textcolor{keyword}{virtual} xbInt16 DeleteAllIndexFiles();}
+\DoxyCodeLine{332 \textcolor{keyword}{virtual} xbInt16 Find( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sKey );}
+\DoxyCodeLine{333 \textcolor{keyword}{virtual} xbInt16 Find( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dtKey );}
+\DoxyCodeLine{334 \textcolor{keyword}{virtual} xbInt16 Find( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dKey );}
+\DoxyCodeLine{335 \textcolor{keyword}{virtual} xbIx *GetCurIx() \textcolor{keyword}{const};}
+\DoxyCodeLine{336 \textcolor{keyword}{virtual} \textcolor{keywordtype}{void} *GetCurTag() \textcolor{keyword}{const};}
+\DoxyCodeLine{337 }
+\DoxyCodeLine{338 \textcolor{keyword}{virtual} xbInt16 GetFirstKey();}
+\DoxyCodeLine{339 \textcolor{keyword}{virtual} xbInt16 GetNextKey();}
+\DoxyCodeLine{340 \textcolor{keyword}{virtual} xbInt16 GetPrevKey();}
+\DoxyCodeLine{341 \textcolor{keyword}{virtual} xbInt16 GetLastKey();}
+\DoxyCodeLine{342 }
+\DoxyCodeLine{343 \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&GetCurIxType() \textcolor{keyword}{const};}
+\DoxyCodeLine{344 \textcolor{keyword}{virtual} \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&GetCurTagName() \textcolor{keyword}{const};}
+\DoxyCodeLine{345 \textcolor{keyword}{virtual} xbIxList *GetIxList() \textcolor{keyword}{const};}
+\DoxyCodeLine{346 \textcolor{keyword}{virtual} xbInt32 GetPhysicalIxCnt () \textcolor{keyword}{const};}
+\DoxyCodeLine{347 xbLinkListNode<xbTag *> *GetTagList () \textcolor{keyword}{const};}
+\DoxyCodeLine{348 }
+\DoxyCodeLine{349 \textcolor{keyword}{virtual} xbInt16 OpenIndex( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIndexName );}
+\DoxyCodeLine{350 \textcolor{keyword}{virtual} xbInt16 Reindex( xbInt16 iTagOpt );}
+\DoxyCodeLine{351 \textcolor{keyword}{virtual} xbInt16 SetCurTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTagName );}
+\DoxyCodeLine{352 \textcolor{keyword}{virtual} \textcolor{keywordtype}{void} SetCurTag( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIxType, xbIx *pIx, \textcolor{keywordtype}{void} *vpTag );}
+\DoxyCodeLine{353 }
+\DoxyCodeLine{354 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{355 }
+\DoxyCodeLine{356 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
+\DoxyCodeLine{357 \textcolor{keyword}{virtual} xbInt16 AssociateIndex( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sType, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sName, xbInt16 iOption );}
+\DoxyCodeLine{358 xbLinkListNode<xbString> *GetInfList() \textcolor{keyword}{const};}
+\DoxyCodeLine{359 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
+\DoxyCodeLine{360 }
+\DoxyCodeLine{361 \textcolor{comment}{//\#ifdef XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{362 \textcolor{comment}{//virtual xbInt16 GetCreateMdxBlockSize() const;}}
+\DoxyCodeLine{363 \textcolor{comment}{//virtual xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );}}
+\DoxyCodeLine{364 \textcolor{comment}{//\#endif}}
+\DoxyCodeLine{365 }
+\DoxyCodeLine{366 \textcolor{preprocessor}{ \#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{367 xbInt16 DisableBlockReadProcessing();}
+\DoxyCodeLine{368 xbInt16 EnableBlockReadProcessing();}
+\DoxyCodeLine{369 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetBlockReadStatus() \textcolor{keyword}{const};}
+\DoxyCodeLine{370 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{371 }
+\DoxyCodeLine{372 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{373 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{374 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbIx;}
+\DoxyCodeLine{375 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbIxMdx;}
\DoxyCodeLine{376 }
-\DoxyCodeLine{377 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
-\DoxyCodeLine{378 \textcolor{keyword}{virtual} xbInt16 GetInfFileName( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sNdxIdxFileName );}
-\DoxyCodeLine{379 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
-\DoxyCodeLine{380 }
-\DoxyCodeLine{381 }
-\DoxyCodeLine{382 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{383 \textcolor{keywordtype}{void} SetHeaderLocked ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bTableLocked );}
-\DoxyCodeLine{384 \textcolor{keywordtype}{void} SetTableLocked ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bTableLocked );}
-\DoxyCodeLine{385 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_LOCKING\_SUPORT}}
-\DoxyCodeLine{386 }
-\DoxyCodeLine{387 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
-\DoxyCodeLine{388 xbInt16 iMemoFieldCnt; \textcolor{comment}{// Memo field cnt in the table}}
-\DoxyCodeLine{389 xbMemo *Memo; \textcolor{comment}{// Pointer to memo class}}
-\DoxyCodeLine{390 xbUInt32 ulCreateMemoBlockSize; \textcolor{comment}{// blocksize to use when creating dbt file}}
-\DoxyCodeLine{391 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{377 xbInt16 AddIndex( xbIx *ix, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFmt );}
+\DoxyCodeLine{378 \textcolor{keywordtype}{void} ClearTagList();}
+\DoxyCodeLine{379 xbInt16 RemoveIndex( xbIx * ix );}
+\DoxyCodeLine{380 \textcolor{keywordtype}{void} UpdateSchemaIxFlag( xbInt16 iFldNo, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cVal );}
+\DoxyCodeLine{381 \textcolor{keyword}{virtual} xbInt16 UpdateTagList ();}
+\DoxyCodeLine{382 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{383 }
+\DoxyCodeLine{384 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
+\DoxyCodeLine{385 \textcolor{keyword}{virtual} xbInt16 GetInfFileName( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sNdxIdxFileName );}
+\DoxyCodeLine{386 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
+\DoxyCodeLine{387 }
+\DoxyCodeLine{388 \textcolor{preprocessor}{ \#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{389 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbBlockRead;}
+\DoxyCodeLine{390 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{391 }
\DoxyCodeLine{392 }
-\DoxyCodeLine{393 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
-\DoxyCodeLine{394 \textcolor{keyword}{virtual} xbInt16 DeleteInfData();}
-\DoxyCodeLine{395 \textcolor{keyword}{virtual} xbInt16 LoadInfData();}
-\DoxyCodeLine{396 \textcolor{keyword}{virtual} xbInt16 SaveInfData();}
-\DoxyCodeLine{397 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
-\DoxyCodeLine{398 }
-\DoxyCodeLine{399 \textcolor{comment}{/*}}
-\DoxyCodeLine{400 \textcolor{comment}{ \#ifdef XB\_MDX\_SUPPORT}}
-\DoxyCodeLine{401 \textcolor{comment}{ xbInt16 iCreateMdxBlockSize;}}
-\DoxyCodeLine{402 \textcolor{comment}{ \#endif // XB\_MDX\_SUPPORT}}
-\DoxyCodeLine{403 \textcolor{comment}{*/}}
-\DoxyCodeLine{404 }
-\DoxyCodeLine{405 \textcolor{keyword}{virtual} xbInt16 GetRawField( xbInt16 iFieldNo, \textcolor{keywordtype}{char} *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
-\DoxyCodeLine{406 \textcolor{keyword}{virtual} \textcolor{keywordtype}{void} InitVars(); }
-\DoxyCodeLine{407 \textcolor{keyword}{virtual} xbInt16 SetVersion() = 0;}
-\DoxyCodeLine{408 \textcolor{keyword}{virtual} xbInt16 ValidateSchema( \mbox{\hyperlink{structxb_1_1xbSchema}{xbSchema}} * s ) = 0;}
-\DoxyCodeLine{409 xbInt16 WriteHeader( xbInt16 iPositionOption, xbInt16 iWriteOption );}
-\DoxyCodeLine{410 }
-\DoxyCodeLine{411 }
-\DoxyCodeLine{412 xbUInt32 ulCurRec; \textcolor{comment}{// Current record or zero}}
-\DoxyCodeLine{413 xbInt16 iAutoCommit; \textcolor{comment}{// Auto commit updates if not explicitly performed before moving off record?}}
-\DoxyCodeLine{414 \textcolor{comment}{// -\/1 -\/-\/> Use DBMS default}}
-\DoxyCodeLine{415 \textcolor{comment}{// 0 -\/-\/> No auto update on this table, regardless of DBMS setting}}
-\DoxyCodeLine{416 \textcolor{comment}{// 1 -\/-\/> Auto update on this table, regardless of DBMS setting}}
-\DoxyCodeLine{417 }
-\DoxyCodeLine{418 xbInt16 iFileVersion; \textcolor{comment}{// xBase file version -\/ which class is in play}}
-\DoxyCodeLine{419 }
-\DoxyCodeLine{420 }
-\DoxyCodeLine{421 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sAlias; \textcolor{comment}{// table alias}}
-\DoxyCodeLine{422 xbInt16 iNoOfFields;}
-\DoxyCodeLine{423 xbInt16 iDbfStatus; \textcolor{comment}{// 0 = closed}}
-\DoxyCodeLine{424 \textcolor{comment}{// 1 = open}}
-\DoxyCodeLine{425 \textcolor{comment}{// 2 = updates pending}}
-\DoxyCodeLine{426 }
-\DoxyCodeLine{427 xbSchemaRec *SchemaPtr; \textcolor{comment}{// Pointer to field data}}
-\DoxyCodeLine{428 \textcolor{keywordtype}{char} *RecBuf; \textcolor{comment}{// Pointer to record buffer}}
-\DoxyCodeLine{429 \textcolor{keywordtype}{char} *RecBuf2; \textcolor{comment}{// Pointer to original rec buf}}
+\DoxyCodeLine{393 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{394 \textcolor{keywordtype}{void} SetHeaderLocked ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bTableLocked );}
+\DoxyCodeLine{395 \textcolor{keywordtype}{void} SetTableLocked ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bTableLocked );}
+\DoxyCodeLine{396 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_LOCKING\_SUPORT}}
+\DoxyCodeLine{397 }
+\DoxyCodeLine{398 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
+\DoxyCodeLine{399 xbInt16 iMemoFieldCnt; \textcolor{comment}{// Memo field cnt in the table}}
+\DoxyCodeLine{400 xbMemo *Memo; \textcolor{comment}{// Pointer to memo class}}
+\DoxyCodeLine{401 xbUInt32 ulCreateMemoBlockSize; \textcolor{comment}{// blocksize to use when creating dbt file}}
+\DoxyCodeLine{402 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{403 }
+\DoxyCodeLine{404 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
+\DoxyCodeLine{405 \textcolor{keyword}{virtual} xbInt16 DeleteInfData();}
+\DoxyCodeLine{406 \textcolor{keyword}{virtual} xbInt16 LoadInfData();}
+\DoxyCodeLine{407 \textcolor{keyword}{virtual} xbInt16 SaveInfData();}
+\DoxyCodeLine{408 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
+\DoxyCodeLine{409 }
+\DoxyCodeLine{410 \textcolor{comment}{/*}}
+\DoxyCodeLine{411 \textcolor{comment}{ \#ifdef XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{412 \textcolor{comment}{ xbInt16 iCreateMdxBlockSize;}}
+\DoxyCodeLine{413 \textcolor{comment}{ \#endif // XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{414 \textcolor{comment}{*/}}
+\DoxyCodeLine{415 }
+\DoxyCodeLine{416 \textcolor{keyword}{virtual} xbInt16 GetRawField( xbInt16 iFieldNo, \textcolor{keywordtype}{char} *Buf, xbUInt32 BufSize, xbInt16 iRecBufSw ) \textcolor{keyword}{const};}
+\DoxyCodeLine{417 \textcolor{keyword}{virtual} \textcolor{keywordtype}{void} InitVars(); }
+\DoxyCodeLine{418 \textcolor{keyword}{virtual} xbInt16 SetVersion() = 0;}
+\DoxyCodeLine{419 \textcolor{keyword}{virtual} xbInt16 ValidateSchema( \mbox{\hyperlink{structxb_1_1xbSchema}{xbSchema}} * s ) = 0;}
+\DoxyCodeLine{420 xbInt16 WriteHeader( xbInt16 iPositionOption, xbInt16 iWriteOption );}
+\DoxyCodeLine{421 }
+\DoxyCodeLine{422 }
+\DoxyCodeLine{423 xbUInt32 ulCurRec; \textcolor{comment}{// Current record or zero}}
+\DoxyCodeLine{424 xbInt16 iAutoCommit; \textcolor{comment}{// Auto commit updates if not explicitly performed before moving off record?}}
+\DoxyCodeLine{425 \textcolor{comment}{// -\/1 -\/-\/> Use DBMS default}}
+\DoxyCodeLine{426 \textcolor{comment}{// 0 -\/-\/> No auto update on this table, regardless of DBMS setting}}
+\DoxyCodeLine{427 \textcolor{comment}{// 1 -\/-\/> Auto update on this table, regardless of DBMS setting}}
+\DoxyCodeLine{428 }
+\DoxyCodeLine{429 xbInt16 iFileVersion; \textcolor{comment}{// xBase file version -\/ which class is in play}}
\DoxyCodeLine{430 }
\DoxyCodeLine{431 }
-\DoxyCodeLine{432 \textcolor{comment}{/* Next several variables are database header fields, up through dbase V */}}
-\DoxyCodeLine{433 \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cVersion;}
-\DoxyCodeLine{434 \textcolor{keywordtype}{char} cUpdateYY;}
-\DoxyCodeLine{435 \textcolor{keywordtype}{char} cUpdateMM;}
-\DoxyCodeLine{436 \textcolor{keywordtype}{char} cUpdateDD;}
-\DoxyCodeLine{437 xbUInt32 ulNoOfRecs;}
-\DoxyCodeLine{438 xbUInt16 uiHeaderLen;}
-\DoxyCodeLine{439 xbUInt16 uiRecordLen;}
-\DoxyCodeLine{440 \textcolor{keywordtype}{char} cTransactionFlag;}
-\DoxyCodeLine{441 \textcolor{keywordtype}{char} cEncryptionFlag;}
-\DoxyCodeLine{442 \textcolor{keywordtype}{char} cIndexFlag;}
-\DoxyCodeLine{443 \textcolor{keywordtype}{char} cLangDriver; \textcolor{comment}{// dbase 7 sets to 1B}}
-\DoxyCodeLine{444 }
-\DoxyCodeLine{445 }
-\DoxyCodeLine{446 }
-\DoxyCodeLine{447 \textcolor{keyword}{private}:}
-\DoxyCodeLine{448 \textcolor{keywordtype}{void} ResetNoOfRecords(); }
-\DoxyCodeLine{449 }
-\DoxyCodeLine{450 }
-\DoxyCodeLine{451 \textcolor{preprocessor}{\#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{452 xbInt16 iAutoLock; \textcolor{comment}{// 0 -\/ autolock off, 1 -\/ autolock on}}
-\DoxyCodeLine{453 xbInt16 iLockFlavor;}
-\DoxyCodeLine{454 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bTableLocked; \textcolor{comment}{// is the table locked}}
-\DoxyCodeLine{455 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bHeaderLocked; \textcolor{comment}{// is the header locked}}
-\DoxyCodeLine{456 xbUInt32 ulAppendLocked; \textcolor{comment}{// record number of the new record for the append lock operation}}
-\DoxyCodeLine{457 xbLinkListOrd<xbUInt32> lloRecLocks; \textcolor{comment}{// ordered link list of locked records}}
-\DoxyCodeLine{458 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{459 }
+\DoxyCodeLine{432 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sAlias; \textcolor{comment}{// table alias}}
+\DoxyCodeLine{433 xbInt16 iNoOfFields;}
+\DoxyCodeLine{434 xbInt16 iDbfStatus; \textcolor{comment}{// 0 = closed}}
+\DoxyCodeLine{435 \textcolor{comment}{// 1 = open}}
+\DoxyCodeLine{436 \textcolor{comment}{// 2 = updates pending}}
+\DoxyCodeLine{437 }
+\DoxyCodeLine{438 xbSchemaRec *SchemaPtr; \textcolor{comment}{// Pointer to field data}}
+\DoxyCodeLine{439 \textcolor{keywordtype}{char} *RecBuf; \textcolor{comment}{// Pointer to record buffer}}
+\DoxyCodeLine{440 \textcolor{keywordtype}{char} *RecBuf2; \textcolor{comment}{// Pointer to original rec buf allocation}}
+\DoxyCodeLine{441 }
+\DoxyCodeLine{442 }
+\DoxyCodeLine{443 \textcolor{comment}{/* Next several variables are database header fields, up through dbase V */}}
+\DoxyCodeLine{444 \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cVersion;}
+\DoxyCodeLine{445 \textcolor{keywordtype}{char} cUpdateYY;}
+\DoxyCodeLine{446 \textcolor{keywordtype}{char} cUpdateMM;}
+\DoxyCodeLine{447 \textcolor{keywordtype}{char} cUpdateDD;}
+\DoxyCodeLine{448 xbUInt32 ulNoOfRecs;}
+\DoxyCodeLine{449 xbUInt16 uiHeaderLen;}
+\DoxyCodeLine{450 xbUInt16 uiRecordLen;}
+\DoxyCodeLine{451 \textcolor{keywordtype}{char} cTransactionFlag;}
+\DoxyCodeLine{452 \textcolor{keywordtype}{char} cEncryptionFlag;}
+\DoxyCodeLine{453 \textcolor{keywordtype}{char} cIndexFlag;}
+\DoxyCodeLine{454 \textcolor{keywordtype}{char} cLangDriver; \textcolor{comment}{// dbase 7 sets to 1B}}
+\DoxyCodeLine{455 }
+\DoxyCodeLine{456 }
+\DoxyCodeLine{457 }
+\DoxyCodeLine{458 \textcolor{keyword}{private}:}
+\DoxyCodeLine{459 \textcolor{keywordtype}{void} ResetNoOfRecords(); }
\DoxyCodeLine{460 }
-\DoxyCodeLine{461 \textcolor{preprocessor}{\#ifdef XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{462 xbIxList *ixList; \textcolor{comment}{// pointer to a list of indices associated with the table}}
-\DoxyCodeLine{463 xbIx *pCurIx; \textcolor{comment}{// Pointer to current index class}}
-\DoxyCodeLine{464 \textcolor{keywordtype}{void} *vpCurIxTag; \textcolor{comment}{// Pointer to current tag}}
-\DoxyCodeLine{465 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sCurIxType; \textcolor{comment}{// Current index type}}
-\DoxyCodeLine{466 xbLinkList<xbTag *> llTags; \textcolor{comment}{// linked list of open tags}}
-\DoxyCodeLine{467 }
-\DoxyCodeLine{468 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{469 }
-\DoxyCodeLine{470 \textcolor{preprocessor}{\#ifdef XB\_INF\_SUPPORT}}
-\DoxyCodeLine{471 xbLinkList<xbString> llInfData; \textcolor{comment}{// linked list of strings containing ndx file entries}}
-\DoxyCodeLine{472 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
-\DoxyCodeLine{473 }
-\DoxyCodeLine{474 }
-\DoxyCodeLine{475 \};}
-\DoxyCodeLine{476 }
-\DoxyCodeLine{477 }
-\DoxyCodeLine{478 \textcolor{preprocessor}{\#ifdef XB\_DBF3\_SUPPORT}}
-\DoxyCodeLine{480 }
-\DoxyCodeLine{486 \textcolor{keyword}{class }XBDLLEXPORT xbDbf3 : \textcolor{keyword}{public} \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} \{}
-\DoxyCodeLine{487 \textcolor{keyword}{public}:}
-\DoxyCodeLine{488 xbDbf3(\mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *x);}
-\DoxyCodeLine{489 \string~xbDbf3();}
-\DoxyCodeLine{490 \textcolor{keyword}{virtual} xbInt16 CreateTable ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias, \mbox{\hyperlink{structxb_1_1xbSchema}{xbSchema}} *, xbInt16 iOverlay, xbInt16 iShareMode );}
-\DoxyCodeLine{491 \textcolor{keyword}{virtual} xbInt16 GetVersion () \textcolor{keyword}{const};}
-\DoxyCodeLine{492 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );}
-\DoxyCodeLine{493 \textcolor{keyword}{virtual} xbInt16 Rename ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sNewName );}
-\DoxyCodeLine{494 }
-\DoxyCodeLine{495 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
-\DoxyCodeLine{496 \textcolor{keyword}{virtual} xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );}
-\DoxyCodeLine{497 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{498 }
-\DoxyCodeLine{499 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{500 xbInt16 SetVersion ();}
-\DoxyCodeLine{501 \textcolor{keyword}{virtual} xbInt16 ValidateSchema( \mbox{\hyperlink{structxb_1_1xbSchema}{xbSchema}} *s );}
-\DoxyCodeLine{502 }
-\DoxyCodeLine{503 \textcolor{keyword}{private}:}
-\DoxyCodeLine{504 }
-\DoxyCodeLine{505 \};}
-\DoxyCodeLine{506 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* XB\_DBF3\_SUPPORT */}\textcolor{preprocessor}{}}
-\DoxyCodeLine{507 }
-\DoxyCodeLine{508 }
-\DoxyCodeLine{509 \textcolor{preprocessor}{\#ifdef XB\_DBF4\_SUPPORT}}
-\DoxyCodeLine{511 }
-\DoxyCodeLine{516 \textcolor{keyword}{class }XBDLLEXPORT xbDbf4 : \textcolor{keyword}{public} \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} \{}
-\DoxyCodeLine{517 \textcolor{keyword}{public}:}
-\DoxyCodeLine{518 xbDbf4( \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *x );}
+\DoxyCodeLine{461 }
+\DoxyCodeLine{462 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{463 xbInt16 iAutoLock; \textcolor{comment}{// 0 -\/ autolock off, 1 -\/ autolock on}}
+\DoxyCodeLine{464 xbInt16 iLockFlavor;}
+\DoxyCodeLine{465 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bTableLocked; \textcolor{comment}{// is the table locked}}
+\DoxyCodeLine{466 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bHeaderLocked; \textcolor{comment}{// is the header locked}}
+\DoxyCodeLine{467 xbUInt32 ulAppendLocked; \textcolor{comment}{// record number of the new record for the append lock operation}}
+\DoxyCodeLine{468 xbLinkListOrd<xbUInt32> lloRecLocks; \textcolor{comment}{// ordered link list of locked records}}
+\DoxyCodeLine{469 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{470 }
+\DoxyCodeLine{471 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{472 xbIxList *ixList; \textcolor{comment}{// pointer to a list of indices associated with the table}}
+\DoxyCodeLine{473 xbIx *pCurIx; \textcolor{comment}{// Pointer to current index class}}
+\DoxyCodeLine{474 \textcolor{keywordtype}{void} *vpCurIxTag; \textcolor{comment}{// Pointer to current tag}}
+\DoxyCodeLine{475 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sCurIxType; \textcolor{comment}{// Current index type}}
+\DoxyCodeLine{476 xbLinkList<xbTag *> llTags; \textcolor{comment}{// linked list of open tags}}
+\DoxyCodeLine{477 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{478 }
+\DoxyCodeLine{479 \textcolor{preprocessor}{ \#ifdef XB\_INF\_SUPPORT}}
+\DoxyCodeLine{480 xbLinkList<xbString> llInfData; \textcolor{comment}{// linked list of strings containing ndx file entries}}
+\DoxyCodeLine{481 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INF\_SUPPORT}}
+\DoxyCodeLine{482 }
+\DoxyCodeLine{483 \textcolor{preprocessor}{ \#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{484 xbBlockRead *pRb;}
+\DoxyCodeLine{485 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bBlockReadEnabled; \textcolor{comment}{// if true, then block read mode is on}}
+\DoxyCodeLine{486 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{487 }
+\DoxyCodeLine{488 }
+\DoxyCodeLine{489 }
+\DoxyCodeLine{490 \};}
+\DoxyCodeLine{491 }
+\DoxyCodeLine{492 }
+\DoxyCodeLine{493 \textcolor{preprocessor}{\#ifdef XB\_DBF3\_SUPPORT}}
+\DoxyCodeLine{495 }
+\DoxyCodeLine{501 \textcolor{keyword}{class }XBDLLEXPORT xbDbf3 : \textcolor{keyword}{public} \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} \{}
+\DoxyCodeLine{502 \textcolor{keyword}{public}:}
+\DoxyCodeLine{503 xbDbf3(\mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *x);}
+\DoxyCodeLine{504 \string~xbDbf3();}
+\DoxyCodeLine{505 \textcolor{keyword}{virtual} xbInt16 CreateTable ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias, \mbox{\hyperlink{structxb_1_1xbSchema}{xbSchema}} *, xbInt16 iOverlay, xbInt16 iShareMode );}
+\DoxyCodeLine{506 \textcolor{keyword}{virtual} xbInt16 GetVersion () \textcolor{keyword}{const};}
+\DoxyCodeLine{507 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTableName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );}
+\DoxyCodeLine{508 \textcolor{keyword}{virtual} xbInt16 Rename ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sNewName );}
+\DoxyCodeLine{509 }
+\DoxyCodeLine{510 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
+\DoxyCodeLine{511 \textcolor{keyword}{virtual} xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );}
+\DoxyCodeLine{512 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{513 }
+\DoxyCodeLine{514 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{515 xbInt16 SetVersion ();}
+\DoxyCodeLine{516 \textcolor{keyword}{virtual} xbInt16 ValidateSchema( \mbox{\hyperlink{structxb_1_1xbSchema}{xbSchema}} *s );}
+\DoxyCodeLine{517 }
+\DoxyCodeLine{518 \textcolor{keyword}{private}:}
\DoxyCodeLine{519 }
-\DoxyCodeLine{520 \string~xbDbf4();}
-\DoxyCodeLine{521 }
-\DoxyCodeLine{522 \textcolor{keyword}{virtual} xbInt16 CreateTable ( \textcolor{keyword}{const} xbString \&sTableName, \textcolor{keyword}{const} xbString \&sAlias, xbSchema *, xbInt16 iOverlay, xbInt16 iShareMode );}
-\DoxyCodeLine{523 \textcolor{keyword}{virtual} xbInt16 GetVersion () \textcolor{keyword}{const};}
-\DoxyCodeLine{524 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} xbString \&sTableName, \textcolor{keyword}{const} xbString \&sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );}
-\DoxyCodeLine{525 \textcolor{keyword}{virtual} xbInt16 Rename ( \textcolor{keyword}{const} xbString sNewName );}
+\DoxyCodeLine{520 \};}
+\DoxyCodeLine{521 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* XB\_DBF3\_SUPPORT */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{522 }
+\DoxyCodeLine{523 }
+\DoxyCodeLine{524 \textcolor{preprocessor}{\#ifdef XB\_DBF4\_SUPPORT}}
\DoxyCodeLine{526 }
-\DoxyCodeLine{527 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
-\DoxyCodeLine{528 \textcolor{keyword}{virtual} xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );}
-\DoxyCodeLine{529 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{530 }
-\DoxyCodeLine{531 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{532 \textcolor{comment}{// void InitVars ();}}
-\DoxyCodeLine{533 xbInt16 SetVersion();}
-\DoxyCodeLine{534 \textcolor{keyword}{virtual} xbInt16 ValidateSchema ( xbSchema *s );}
-\DoxyCodeLine{535 }
-\DoxyCodeLine{536 \textcolor{keyword}{private}:}
-\DoxyCodeLine{537 }
-\DoxyCodeLine{538 \};}
-\DoxyCodeLine{539 }
-\DoxyCodeLine{540 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* XB\_DBF4\_SUPPORT */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{531 \textcolor{keyword}{class }XBDLLEXPORT xbDbf4 : \textcolor{keyword}{public} \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} \{}
+\DoxyCodeLine{532 \textcolor{keyword}{public}:}
+\DoxyCodeLine{533 xbDbf4( \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *x );}
+\DoxyCodeLine{534 }
+\DoxyCodeLine{535 \string~xbDbf4();}
+\DoxyCodeLine{536 }
+\DoxyCodeLine{537 \textcolor{keyword}{virtual} xbInt16 CreateTable ( \textcolor{keyword}{const} xbString \&sTableName, \textcolor{keyword}{const} xbString \&sAlias, xbSchema *, xbInt16 iOverlay, xbInt16 iShareMode );}
+\DoxyCodeLine{538 \textcolor{keyword}{virtual} xbInt16 GetVersion () \textcolor{keyword}{const};}
+\DoxyCodeLine{539 \textcolor{keyword}{virtual} xbInt16 Open ( \textcolor{keyword}{const} xbString \&sTableName, \textcolor{keyword}{const} xbString \&sAlias, xbInt16 iOpenMode, xbInt16 iShareMode );}
+\DoxyCodeLine{540 \textcolor{keyword}{virtual} xbInt16 Rename ( \textcolor{keyword}{const} xbString sNewName );}
\DoxyCodeLine{541 }
-\DoxyCodeLine{542 \} \textcolor{comment}{/* namespace xb */}}
-\DoxyCodeLine{543 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_DBF\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{542 \textcolor{preprocessor}{ \#ifdef XB\_MEMO\_SUPPORT}}
+\DoxyCodeLine{543 \textcolor{keyword}{virtual} xbInt16 SetCreateMemoBlockSize( xbUInt32 iBlockSize );}
+\DoxyCodeLine{544 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{545 }
+\DoxyCodeLine{546 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{547 \textcolor{comment}{// void InitVars ();}}
+\DoxyCodeLine{548 xbInt16 SetVersion();}
+\DoxyCodeLine{549 \textcolor{keyword}{virtual} xbInt16 ValidateSchema ( xbSchema *s );}
+\DoxyCodeLine{550 }
+\DoxyCodeLine{551 \textcolor{keyword}{private}:}
+\DoxyCodeLine{552 }
+\DoxyCodeLine{553 \};}
+\DoxyCodeLine{554 }
+\DoxyCodeLine{555 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* XB\_DBF4\_SUPPORT */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{556 }
+\DoxyCodeLine{557 \} \textcolor{comment}{/* namespace xb */}}
+\DoxyCodeLine{558 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_DBF\_H\_\_ */}\textcolor{preprocessor}{}}
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbdelete_8cpp.tex b/docs/doxygen/latex/xbdelete_8cpp.tex
index 6c9a05a..f24ada6 100644
--- a/docs/doxygen/latex/xbdelete_8cpp.tex
+++ b/docs/doxygen/latex/xbdelete_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbdelete_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdelete.cpp File Reference}
-\label{xbdelete_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdelete.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdelete.cpp}}
+\hypertarget{xbdelete_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdelete.cpp File Reference}
+\label{xbdelete_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdelete.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdelete.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbdrpix_8cpp.tex b/docs/doxygen/latex/xbdrpix_8cpp.tex
index f4975e6..39be17f 100644
--- a/docs/doxygen/latex/xbdrpix_8cpp.tex
+++ b/docs/doxygen/latex/xbdrpix_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbdrpix_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdrpix.cpp File Reference}
-\label{xbdrpix_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdrpix.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdrpix.cpp}}
+\hypertarget{xbdrpix_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdrpix.cpp File Reference}
+\label{xbdrpix_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdrpix.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdrpix.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbdrptbl_8cpp.tex b/docs/doxygen/latex/xbdrptbl_8cpp.tex
index c62fd23..c31d938 100644
--- a/docs/doxygen/latex/xbdrptbl_8cpp.tex
+++ b/docs/doxygen/latex/xbdrptbl_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbdrptbl_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdrptbl.cpp File Reference}
-\label{xbdrptbl_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdrptbl.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbdrptbl.cpp}}
+\hypertarget{xbdrptbl_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdrptbl.cpp File Reference}
+\label{xbdrptbl_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdrptbl.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbdrptbl.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbexp_8cpp.tex b/docs/doxygen/latex/xbexp_8cpp.tex
index c0a4e04..554b4cd 100644
--- a/docs/doxygen/latex/xbexp_8cpp.tex
+++ b/docs/doxygen/latex/xbexp_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbexp_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbexp.cpp File Reference}
-\label{xbexp_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbexp.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbexp.cpp}}
+\hypertarget{xbexp_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbexp.cpp File Reference}
+\label{xbexp_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbexp.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbexp.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbexp_8h.tex b/docs/doxygen/latex/xbexp_8h.tex
index 8c4d497..4b3e7a7 100644
--- a/docs/doxygen/latex/xbexp_8h.tex
+++ b/docs/doxygen/latex/xbexp_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbexp_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbexp.h File Reference}
-\label{xbexp_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexp.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexp.h}}
+\hypertarget{xbexp_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbexp.h File Reference}
+\label{xbexp_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexp.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexp.h}}
diff --git a/docs/doxygen/latex/xbexp_8h_source.tex b/docs/doxygen/latex/xbexp_8h_source.tex
index 5d21561..26b5f1a 100644
--- a/docs/doxygen/latex/xbexp_8h_source.tex
+++ b/docs/doxygen/latex/xbexp_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbexp_8h_source}{}\doxysection{xbexp.\+h}
-\label{xbexp_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexp.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexp.h}}
+\label{xbexp_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexp.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexp.h}}
\mbox{\hyperlink{xbexp_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbexp.h}}
diff --git a/docs/doxygen/latex/xbexpnode_8cpp.tex b/docs/doxygen/latex/xbexpnode_8cpp.tex
index b92c84a..3ebbca7 100644
--- a/docs/doxygen/latex/xbexpnode_8cpp.tex
+++ b/docs/doxygen/latex/xbexpnode_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbexpnode_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbexpnode.cpp File Reference}
-\label{xbexpnode_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbexpnode.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbexpnode.cpp}}
+\hypertarget{xbexpnode_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbexpnode.cpp File Reference}
+\label{xbexpnode_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbexpnode.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbexpnode.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbexpnode_8h.tex b/docs/doxygen/latex/xbexpnode_8h.tex
index e247062..bfc9f0d 100644
--- a/docs/doxygen/latex/xbexpnode_8h.tex
+++ b/docs/doxygen/latex/xbexpnode_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbexpnode_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbexpnode.h File Reference}
-\label{xbexpnode_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexpnode.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexpnode.h}}
+\hypertarget{xbexpnode_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbexpnode.h File Reference}
+\label{xbexpnode_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexpnode.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexpnode.h}}
diff --git a/docs/doxygen/latex/xbexpnode_8h_source.tex b/docs/doxygen/latex/xbexpnode_8h_source.tex
index 00b8f9c..ddd8ed1 100644
--- a/docs/doxygen/latex/xbexpnode_8h_source.tex
+++ b/docs/doxygen/latex/xbexpnode_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbexpnode_8h_source}{}\doxysection{xbexpnode.\+h}
-\label{xbexpnode_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexpnode.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbexpnode.h}}
+\label{xbexpnode_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexpnode.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbexpnode.h}}
\mbox{\hyperlink{xbexpnode_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbexpnode.h}}
diff --git a/docs/doxygen/latex/xbfields_8cpp.tex b/docs/doxygen/latex/xbfields_8cpp.tex
index 803cb06..723435f 100644
--- a/docs/doxygen/latex/xbfields_8cpp.tex
+++ b/docs/doxygen/latex/xbfields_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbfields_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbfields.cpp File Reference}
-\label{xbfields_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfields.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfields.cpp}}
+\hypertarget{xbfields_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbfields.cpp File Reference}
+\label{xbfields_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfields.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfields.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbfile_8cpp.tex b/docs/doxygen/latex/xbfile_8cpp.tex
index 8f4dee3..247d030 100644
--- a/docs/doxygen/latex/xbfile_8cpp.tex
+++ b/docs/doxygen/latex/xbfile_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbfile_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbfile.cpp File Reference}
-\label{xbfile_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfile.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfile.cpp}}
+\hypertarget{xbfile_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbfile.cpp File Reference}
+\label{xbfile_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfile.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfile.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbfile_8h.tex b/docs/doxygen/latex/xbfile_8h.tex
index c5079e8..a3c4964 100644
--- a/docs/doxygen/latex/xbfile_8h.tex
+++ b/docs/doxygen/latex/xbfile_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbfile_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbfile.h File Reference}
-\label{xbfile_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfile.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfile.h}}
+\hypertarget{xbfile_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbfile.h File Reference}
+\label{xbfile_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfile.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfile.h}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbfile_8h_source.tex b/docs/doxygen/latex/xbfile_8h_source.tex
index 506fe71..34e78f5 100644
--- a/docs/doxygen/latex/xbfile_8h_source.tex
+++ b/docs/doxygen/latex/xbfile_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbfile_8h_source}{}\doxysection{xbfile.\+h}
-\label{xbfile_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfile.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfile.h}}
+\label{xbfile_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfile.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfile.h}}
\mbox{\hyperlink{xbfile_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbfile.h}}
@@ -44,136 +44,140 @@
\DoxyCodeLine{60 \mbox{\hyperlink{classxb_1_1xbFile}{xbFile}}( \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} * x );}
\DoxyCodeLine{61 }
\DoxyCodeLine{62 \mbox{\hyperlink{classxb_1_1xbFile}{\string~xbFile}}();}
-\DoxyCodeLine{63 xbInt16 CreateUniqueFileName( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirIn, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sExtIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqnOut );}
-\DoxyCodeLine{64 xbInt16 CreateUniqueFileName( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirIn, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sExtIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqnOut, xbInt16 iOption );}
+\DoxyCodeLine{63 }
+\DoxyCodeLine{64 xbInt16 SetHomeFolders();}
\DoxyCodeLine{65 }
-\DoxyCodeLine{66 \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetDirectory() \textcolor{keyword}{const};}
-\DoxyCodeLine{67 \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetFileName() \textcolor{keyword}{const};}
-\DoxyCodeLine{68 \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetFqFileName() \textcolor{keyword}{const};}
-\DoxyCodeLine{69 }
-\DoxyCodeLine{70 \textcolor{keywordtype}{void} SetDirectory ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirectory);}
-\DoxyCodeLine{71 \textcolor{keywordtype}{void} SetFileName ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName );}
-\DoxyCodeLine{72 \textcolor{keywordtype}{void} SetFqFileName( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqName );}
-\DoxyCodeLine{73 }
-\DoxyCodeLine{74 xbUInt32 GetBlockSize () \textcolor{keyword}{const};}
-\DoxyCodeLine{75 xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );}
+\DoxyCodeLine{66 xbInt16 CreateUniqueFileName( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirIn, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sExtIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqnOut );}
+\DoxyCodeLine{67 xbInt16 CreateUniqueFileName( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirIn, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sExtIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqnOut, xbInt16 iOption );}
+\DoxyCodeLine{68 }
+\DoxyCodeLine{69 \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetDirectory() \textcolor{keyword}{const};}
+\DoxyCodeLine{70 \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetFileName() \textcolor{keyword}{const};}
+\DoxyCodeLine{71 \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetFqFileName() \textcolor{keyword}{const};}
+\DoxyCodeLine{72 }
+\DoxyCodeLine{73 \textcolor{keywordtype}{void} SetDirectory ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirectory);}
+\DoxyCodeLine{74 \textcolor{keywordtype}{void} SetFileName ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName );}
+\DoxyCodeLine{75 \textcolor{keywordtype}{void} SetFqFileName( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqName );}
\DoxyCodeLine{76 }
-\DoxyCodeLine{77 xbInt16 GetOpenMode () \textcolor{keyword}{const};}
-\DoxyCodeLine{78 xbInt16 GetShareMode () \textcolor{keyword}{const};}
+\DoxyCodeLine{77 xbUInt32 GetBlockSize () \textcolor{keyword}{const};}
+\DoxyCodeLine{78 xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );}
\DoxyCodeLine{79 }
-\DoxyCodeLine{80 xbInt16 GetFileDirPart ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileDirPartOut ) \textcolor{keyword}{const};}
-\DoxyCodeLine{81 xbInt16 GetFileDirPart ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileDirPartOut ) \textcolor{keyword}{const};}
-\DoxyCodeLine{82 xbInt16 GetFileExtPart ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileExtPartOut ) \textcolor{keyword}{const};}
-\DoxyCodeLine{83 xbInt16 GetFileExtPart ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileExtPartOut ) \textcolor{keyword}{const};}
-\DoxyCodeLine{84 xbInt16 GetFileNamePart( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileNamePartOut ) \textcolor{keyword}{const};}
-\DoxyCodeLine{85 xbInt16 GetFileNamePart( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileNamePartOut ) \textcolor{keyword}{const};}
-\DoxyCodeLine{86 xbInt16 GetFileType ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileType ) \textcolor{keyword}{const};}
-\DoxyCodeLine{87 }
-\DoxyCodeLine{88 xbInt16 GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 \&iVersion );}
-\DoxyCodeLine{89 xbInt16 GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \&cFileTypeByte );}
-\DoxyCodeLine{90 xbInt16 GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \&cFileTypeByte, xbInt16 \&iVersion );}
-\DoxyCodeLine{91 xbInt16 DetermineXbaseTableVersion( \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cFileTypeByte ) \textcolor{keyword}{const};}
-\DoxyCodeLine{92 xbInt16 DetermineXbaseMemoVersion( \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cFileTypeByte ) \textcolor{keyword}{const};}
-\DoxyCodeLine{93 }
-\DoxyCodeLine{94 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists () \textcolor{keyword}{const};}
-\DoxyCodeLine{95 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists ( xbInt16 iOption ) \textcolor{keyword}{const};}
-\DoxyCodeLine{96 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName ) \textcolor{keyword}{const};}
-\DoxyCodeLine{97 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
-\DoxyCodeLine{98 }
-\DoxyCodeLine{99 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileIsOpen () \textcolor{keyword}{const};}
-\DoxyCodeLine{100 }
-\DoxyCodeLine{101 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} readSize, \textcolor{keywordtype}{void} *buf );}
-\DoxyCodeLine{102 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, \textcolor{keywordtype}{size\_t} readSize, \textcolor{keywordtype}{void} *buf );}
-\DoxyCodeLine{103 xbInt16 WriteBlock( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} writeSize, \textcolor{keywordtype}{void} *buf );}
-\DoxyCodeLine{104 }
-\DoxyCodeLine{105 xbInt16 GetFileSize( xbUInt64 \&ullFileSize );}
-\DoxyCodeLine{106 xbInt16 GetFileMtime( time\_t \&mtime );}
+\DoxyCodeLine{80 xbInt16 GetOpenMode () \textcolor{keyword}{const};}
+\DoxyCodeLine{81 xbInt16 GetShareMode () \textcolor{keyword}{const};}
+\DoxyCodeLine{82 }
+\DoxyCodeLine{83 xbInt16 GetFileDirPart ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileDirPartOut ) \textcolor{keyword}{const};}
+\DoxyCodeLine{84 xbInt16 GetFileDirPart ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileDirPartOut ) \textcolor{keyword}{const};}
+\DoxyCodeLine{85 xbInt16 GetFileExtPart ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileExtPartOut ) \textcolor{keyword}{const};}
+\DoxyCodeLine{86 xbInt16 GetFileExtPart ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileExtPartOut ) \textcolor{keyword}{const};}
+\DoxyCodeLine{87 xbInt16 GetFileNamePart( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileNamePartOut ) \textcolor{keyword}{const};}
+\DoxyCodeLine{88 xbInt16 GetFileNamePart( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileNamePartOut ) \textcolor{keyword}{const};}
+\DoxyCodeLine{89 xbInt16 GetFileType ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileType ) \textcolor{keyword}{const};}
+\DoxyCodeLine{90 }
+\DoxyCodeLine{91 xbInt16 GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 \&iVersion );}
+\DoxyCodeLine{92 xbInt16 GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \&cFileTypeByte );}
+\DoxyCodeLine{93 xbInt16 GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \&cFileTypeByte, xbInt16 \&iVersion );}
+\DoxyCodeLine{94 xbInt16 DetermineXbaseTableVersion( \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cFileTypeByte ) \textcolor{keyword}{const};}
+\DoxyCodeLine{95 xbInt16 DetermineXbaseMemoVersion( \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cFileTypeByte ) \textcolor{keyword}{const};}
+\DoxyCodeLine{96 }
+\DoxyCodeLine{97 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists () \textcolor{keyword}{const};}
+\DoxyCodeLine{98 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists ( xbInt16 iOption ) \textcolor{keyword}{const};}
+\DoxyCodeLine{99 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName ) \textcolor{keyword}{const};}
+\DoxyCodeLine{100 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
+\DoxyCodeLine{101 }
+\DoxyCodeLine{102 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} FileIsOpen () \textcolor{keyword}{const};}
+\DoxyCodeLine{103 }
+\DoxyCodeLine{104 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} readSize, \textcolor{keywordtype}{void} *buf );}
+\DoxyCodeLine{105 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, \textcolor{keywordtype}{size\_t} readSize, \textcolor{keywordtype}{void} *buf );}
+\DoxyCodeLine{106 xbInt16 WriteBlock( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} writeSize, \textcolor{keywordtype}{void} *buf );}
\DoxyCodeLine{107 }
-\DoxyCodeLine{108 \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} eGetDouble( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
-\DoxyCodeLine{109 xbInt32 eGetInt32 ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
-\DoxyCodeLine{110 xbUInt32 eGetUInt32( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
-\DoxyCodeLine{111 xbInt16 eGetInt16 ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
-\DoxyCodeLine{112 xbUInt16 eGetUInt16( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
-\DoxyCodeLine{113 \textcolor{keywordtype}{void} ePutDouble( \textcolor{keywordtype}{char} *p, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} d );}
-\DoxyCodeLine{114 \textcolor{keywordtype}{void} ePutInt32 ( \textcolor{keywordtype}{char} *p, xbInt32 l );}
-\DoxyCodeLine{115 \textcolor{keywordtype}{void} ePutUInt32( \textcolor{keywordtype}{char} *p, xbUInt32 ul );}
-\DoxyCodeLine{116 \textcolor{keywordtype}{void} ePutInt16 ( \textcolor{keywordtype}{char} *p, xbInt16 s );}
-\DoxyCodeLine{117 \textcolor{keywordtype}{void} ePutUInt16( \textcolor{keywordtype}{char} *p, xbUInt16 s );}
-\DoxyCodeLine{118 }
-\DoxyCodeLine{119 xbInt16 xbFclose ();}
-\DoxyCodeLine{120 xbInt16 xbFeof ();}
-\DoxyCodeLine{121 xbInt16 xbFflush ();}
-\DoxyCodeLine{122 xbInt16 xbFgetc ( xbInt32 \&c );}
-\DoxyCodeLine{123 xbInt16 xbFgetc ( \textcolor{keywordtype}{char} \&c );}
-\DoxyCodeLine{124 }
-\DoxyCodeLine{125 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{126 xbInt16 xbLock ( xbInt16 iFunction, xbInt64 llOffset, \textcolor{keywordtype}{size\_t} stLen );}
-\DoxyCodeLine{127 xbInt16 GetLockRetryCount() \textcolor{keyword}{const};}
-\DoxyCodeLine{128 \textcolor{keywordtype}{void} SetLockRetryCount( xbInt16 iLockRetries );}
-\DoxyCodeLine{129 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{130 }
-\DoxyCodeLine{131 xbInt16 \mbox{\hyperlink{classxb_1_1xbFile_a7cdfef5ede9ac98d44a28a6b7a70972c}{xbFopen}} ( xbInt16 iOpenMode );}
-\DoxyCodeLine{132 xbInt16 xbFopen ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOpenMode, xbInt16 iShareMode );}
-\DoxyCodeLine{133 xbInt16 xbFopen ( xbInt16 iOpenMode, xbInt16 iShareMode );}
-\DoxyCodeLine{134 xbInt16 xbFopen ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMode, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iShareMode );}
-\DoxyCodeLine{135 }
-\DoxyCodeLine{136 xbInt16 xbFputc ( xbInt32 c );}
-\DoxyCodeLine{137 xbInt16 xbFputc ( xbInt32 c, xbInt32 iNoTimes );}
-\DoxyCodeLine{138 xbInt16 xbFputs ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s );}
-\DoxyCodeLine{139 xbInt16 xbFread ( \textcolor{keywordtype}{void} *ptr, \textcolor{keywordtype}{size\_t} size, \textcolor{keywordtype}{size\_t} nmemb );}
-\DoxyCodeLine{140 xbInt16 xbFgets ( \textcolor{keywordtype}{size\_t} lSize, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sLine );}
-\DoxyCodeLine{141 }
-\DoxyCodeLine{142 \textcolor{keywordtype}{size\_t} xbFtell ();}
-\DoxyCodeLine{143 xbInt16 xbFseek ( xbInt64 llOffset, xbInt32 whence );}
+\DoxyCodeLine{108 xbInt16 GetFileSize( xbUInt64 \&ullFileSize );}
+\DoxyCodeLine{109 xbInt16 GetFileMtime( time\_t \&mtime );}
+\DoxyCodeLine{110 }
+\DoxyCodeLine{111 \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} eGetDouble( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
+\DoxyCodeLine{112 xbInt32 eGetInt32 ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
+\DoxyCodeLine{113 xbUInt32 eGetUInt32( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
+\DoxyCodeLine{114 xbInt16 eGetInt16 ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
+\DoxyCodeLine{115 xbUInt16 eGetUInt16( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
+\DoxyCodeLine{116 \textcolor{keywordtype}{void} ePutDouble( \textcolor{keywordtype}{char} *p, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} d );}
+\DoxyCodeLine{117 \textcolor{keywordtype}{void} ePutInt32 ( \textcolor{keywordtype}{char} *p, xbInt32 l );}
+\DoxyCodeLine{118 \textcolor{keywordtype}{void} ePutUInt32( \textcolor{keywordtype}{char} *p, xbUInt32 ul );}
+\DoxyCodeLine{119 \textcolor{keywordtype}{void} ePutInt16 ( \textcolor{keywordtype}{char} *p, xbInt16 s );}
+\DoxyCodeLine{120 \textcolor{keywordtype}{void} ePutUInt16( \textcolor{keywordtype}{char} *p, xbUInt16 s );}
+\DoxyCodeLine{121 }
+\DoxyCodeLine{122 xbInt16 xbFclose ();}
+\DoxyCodeLine{123 xbInt16 xbFeof ();}
+\DoxyCodeLine{124 xbInt16 xbFflush ();}
+\DoxyCodeLine{125 xbInt16 xbFgetc ( xbInt32 \&c );}
+\DoxyCodeLine{126 xbInt16 xbFgetc ( \textcolor{keywordtype}{char} \&c );}
+\DoxyCodeLine{127 }
+\DoxyCodeLine{128 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{129 xbInt16 xbLock ( xbInt16 iFunction, xbInt64 llOffset, \textcolor{keywordtype}{size\_t} stLen );}
+\DoxyCodeLine{130 xbInt16 GetLockRetryCount() \textcolor{keyword}{const};}
+\DoxyCodeLine{131 \textcolor{keywordtype}{void} SetLockRetryCount( xbInt16 iLockRetries );}
+\DoxyCodeLine{132 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{133 }
+\DoxyCodeLine{134 xbInt16 \mbox{\hyperlink{classxb_1_1xbFile_a7cdfef5ede9ac98d44a28a6b7a70972c}{xbFopen}} ( xbInt16 iOpenMode );}
+\DoxyCodeLine{135 xbInt16 xbFopen ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOpenMode, xbInt16 iShareMode );}
+\DoxyCodeLine{136 xbInt16 xbFopen ( xbInt16 iOpenMode, xbInt16 iShareMode );}
+\DoxyCodeLine{137 xbInt16 xbFopen ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sMode, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iShareMode );}
+\DoxyCodeLine{138 }
+\DoxyCodeLine{139 xbInt16 xbFputc ( xbInt32 c );}
+\DoxyCodeLine{140 xbInt16 xbFputc ( xbInt32 c, xbInt32 iNoTimes );}
+\DoxyCodeLine{141 xbInt16 xbFputs ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s );}
+\DoxyCodeLine{142 xbInt16 xbFread ( \textcolor{keywordtype}{void} *ptr, \textcolor{keywordtype}{size\_t} size, \textcolor{keywordtype}{size\_t} nmemb );}
+\DoxyCodeLine{143 xbInt16 xbFgets ( \textcolor{keywordtype}{size\_t} lSize, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sLine );}
\DoxyCodeLine{144 }
-\DoxyCodeLine{145 \textcolor{keywordtype}{void} xbFTurnOffFileBuffering();}
-\DoxyCodeLine{146 xbInt16 xbFwrite ( \textcolor{keyword}{const} \textcolor{keywordtype}{void} *ptr, \textcolor{keywordtype}{size\_t} lSize, \textcolor{keywordtype}{size\_t} lNmemb );}
+\DoxyCodeLine{145 \textcolor{keywordtype}{size\_t} xbFtell ();}
+\DoxyCodeLine{146 xbInt16 xbFseek ( xbInt64 llOffset, xbInt32 whence );}
\DoxyCodeLine{147 }
-\DoxyCodeLine{148 xbInt16 xbReadUntil ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} cDelim, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{149 xbInt16 xbRemove ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption );}
-\DoxyCodeLine{150 xbInt16 xbRemove ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName );}
-\DoxyCodeLine{151 xbInt16 xbRemove ();}
-\DoxyCodeLine{152 }
-\DoxyCodeLine{153 xbInt16 xbRename ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sNewName );}
-\DoxyCodeLine{154 \textcolor{keywordtype}{void} xbRewind ();}
+\DoxyCodeLine{148 \textcolor{keywordtype}{void} xbFTurnOffFileBuffering();}
+\DoxyCodeLine{149 xbInt16 xbFwrite ( \textcolor{keyword}{const} \textcolor{keywordtype}{void} *ptr, \textcolor{keywordtype}{size\_t} lSize, \textcolor{keywordtype}{size\_t} lNmemb );}
+\DoxyCodeLine{150 }
+\DoxyCodeLine{151 xbInt16 xbReadUntil ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} cDelim, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{152 xbInt16 xbRemove ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption );}
+\DoxyCodeLine{153 xbInt16 xbRemove ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName );}
+\DoxyCodeLine{154 xbInt16 xbRemove ();}
\DoxyCodeLine{155 }
-\DoxyCodeLine{156 xbInt16 xbTruncate ( xbInt64 llSize );}
-\DoxyCodeLine{157 xbInt16 NameSuffixMissing( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
+\DoxyCodeLine{156 xbInt16 xbRename ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sNewName );}
+\DoxyCodeLine{157 \textcolor{keywordtype}{void} xbRewind ();}
\DoxyCodeLine{158 }
-\DoxyCodeLine{159 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}}
-\DoxyCodeLine{160 xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} lBlockSize );}
-\DoxyCodeLine{161 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{162 }
-\DoxyCodeLine{163 }
-\DoxyCodeLine{164 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{165 }
-\DoxyCodeLine{166 \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *\mbox{\hyperlink{classxb_1_1xbFile_ae39a67ea391b46055d4ca299cb222004}{xbase}}; \textcolor{comment}{/* pointer to the main structures */}}
+\DoxyCodeLine{159 xbInt16 xbTruncate ( xbInt64 llSize );}
+\DoxyCodeLine{160 xbInt16 NameSuffixMissing( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
+\DoxyCodeLine{161 }
+\DoxyCodeLine{162 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}}
+\DoxyCodeLine{163 xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} lBlockSize );}
+\DoxyCodeLine{164 xbInt16 DumpMemToDisk ( \textcolor{keywordtype}{char} *p, \textcolor{keywordtype}{size\_t} lBlockSize );}
+\DoxyCodeLine{165 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{166 }
\DoxyCodeLine{167 }
-\DoxyCodeLine{168 \textcolor{keyword}{private}:}
-\DoxyCodeLine{169 FILE *fp;}
-\DoxyCodeLine{170 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFqFileName; \textcolor{comment}{/* fully qualified file name */}}
-\DoxyCodeLine{171 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFileName; \textcolor{comment}{/* file name */}}
-\DoxyCodeLine{172 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDirectory; \textcolor{comment}{/* directory, ends with / or \(\backslash\) */}}
-\DoxyCodeLine{173 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFileOpen; \textcolor{comment}{/* true if file is open */}}
-\DoxyCodeLine{174 xbUInt32 ulBlockSize; \textcolor{comment}{/* used for memo and index files */}}
-\DoxyCodeLine{175 }
-\DoxyCodeLine{176 xbInt16 iOpenMode; \textcolor{comment}{/* XB\_READ || XB\_READ\_WRITE || XB\_WRITE */}}
-\DoxyCodeLine{177 xbInt16 iShareMode; \textcolor{comment}{/* XB\_SINGLE\_USER || XB\_MULTI\_USER -\/ set file buffering */}}
-\DoxyCodeLine{178 xbInt32 iFileNo; \textcolor{comment}{/* Library File No */}}
+\DoxyCodeLine{168 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{169 }
+\DoxyCodeLine{170 \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *\mbox{\hyperlink{classxb_1_1xbFile_ae39a67ea391b46055d4ca299cb222004}{xbase}}; \textcolor{comment}{/* pointer to the main structures */}}
+\DoxyCodeLine{171 }
+\DoxyCodeLine{172 \textcolor{keyword}{private}:}
+\DoxyCodeLine{173 FILE *fp;}
+\DoxyCodeLine{174 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFqFileName; \textcolor{comment}{/* fully qualified file name */}}
+\DoxyCodeLine{175 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFileName; \textcolor{comment}{/* file name */}}
+\DoxyCodeLine{176 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDirectory; \textcolor{comment}{/* directory, ends with / or \(\backslash\) */}}
+\DoxyCodeLine{177 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFileOpen; \textcolor{comment}{/* true if file is open */}}
+\DoxyCodeLine{178 xbUInt32 ulBlockSize; \textcolor{comment}{/* used for memo and index files */}}
\DoxyCodeLine{179 }
-\DoxyCodeLine{180 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{181 xbInt16 iLockRetries; \textcolor{comment}{/* file override number of lock attempts */}}
-\DoxyCodeLine{182 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{180 xbInt16 iOpenMode; \textcolor{comment}{/* XB\_READ || XB\_READ\_WRITE || XB\_WRITE */}}
+\DoxyCodeLine{181 xbInt16 iShareMode; \textcolor{comment}{/* XB\_SINGLE\_USER || XB\_MULTI\_USER -\/ set file buffering */}}
+\DoxyCodeLine{182 xbInt32 iFileNo; \textcolor{comment}{/* Library File No */}}
\DoxyCodeLine{183 }
-\DoxyCodeLine{184 \textcolor{preprocessor}{ \#ifdef HAVE\_SETENDOFFILE\_F}}
-\DoxyCodeLine{185 HANDLE fHandle;}
+\DoxyCodeLine{184 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{185 xbInt16 iLockRetries; \textcolor{comment}{/* file override number of lock attempts */}}
\DoxyCodeLine{186 \textcolor{preprocessor}{ \#endif}}
\DoxyCodeLine{187 }
-\DoxyCodeLine{188 }
-\DoxyCodeLine{189 \};}
-\DoxyCodeLine{190 }
-\DoxyCodeLine{191 \} \textcolor{comment}{/* namespace */}}
-\DoxyCodeLine{192 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XBFILE\_H\_\_ */}\textcolor{preprocessor}{}}
-\DoxyCodeLine{193 }
+\DoxyCodeLine{188 \textcolor{preprocessor}{ \#ifdef HAVE\_SETENDOFFILE\_F}}
+\DoxyCodeLine{189 HANDLE fHandle;}
+\DoxyCodeLine{190 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{191 }
+\DoxyCodeLine{192 }
+\DoxyCodeLine{193 \};}
+\DoxyCodeLine{194 }
+\DoxyCodeLine{195 \} \textcolor{comment}{/* namespace */}}
+\DoxyCodeLine{196 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XBFILE\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{197 }
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbfilter_8cpp.tex b/docs/doxygen/latex/xbfilter_8cpp.tex
index 0b88920..93db5f7 100644
--- a/docs/doxygen/latex/xbfilter_8cpp.tex
+++ b/docs/doxygen/latex/xbfilter_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbfilter_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbfilter.cpp File Reference}
-\label{xbfilter_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfilter.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfilter.cpp}}
+\hypertarget{xbfilter_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbfilter.cpp File Reference}
+\label{xbfilter_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfilter.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfilter.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbfilter_8h.tex b/docs/doxygen/latex/xbfilter_8h.tex
index b19421f..f8801e0 100644
--- a/docs/doxygen/latex/xbfilter_8h.tex
+++ b/docs/doxygen/latex/xbfilter_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbfilter_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbfilter.h File Reference}
-\label{xbfilter_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfilter.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfilter.h}}
+\hypertarget{xbfilter_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbfilter.h File Reference}
+\label{xbfilter_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfilter.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfilter.h}}
diff --git a/docs/doxygen/latex/xbfilter_8h_source.tex b/docs/doxygen/latex/xbfilter_8h_source.tex
index c0f8e55..861045b 100644
--- a/docs/doxygen/latex/xbfilter_8h_source.tex
+++ b/docs/doxygen/latex/xbfilter_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbfilter_8h_source}{}\doxysection{xbfilter.\+h}
-\label{xbfilter_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfilter.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbfilter.h}}
+\label{xbfilter_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfilter.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbfilter.h}}
\mbox{\hyperlink{xbfilter_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbfilter.h}}
@@ -41,20 +41,20 @@
\DoxyCodeLine{37 \textcolor{keyword}{class }XBDLLEXPORT xbFilter \{}
\DoxyCodeLine{38 }
\DoxyCodeLine{39 \textcolor{keyword}{public}:}
-\DoxyCodeLine{40 xbFilter( \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *xbase, \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf );}
+\DoxyCodeLine{40 xbFilter( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf );}
\DoxyCodeLine{41 \string~xbFilter();}
\DoxyCodeLine{42 xbInt16 Set( xbString \&sFilterExpression );}
-\DoxyCodeLine{43 xbInt16 GetFirstRecord( xbInt16 iOpt = 1 );}
-\DoxyCodeLine{44 xbInt16 GetNextRecord ( xbInt16 iOpt = 1 );}
-\DoxyCodeLine{45 xbInt16 GetPrevRecord ( xbInt16 iOpt = 1 );}
-\DoxyCodeLine{46 xbInt16 GetLastRecord ( xbInt16 iOpt = 1 );}
-\DoxyCodeLine{47 \textcolor{keywordtype}{void} SetLimit( xbInt32 ulLimit );}
-\DoxyCodeLine{48 xbInt32 GetLimit() \textcolor{keyword}{const};}
-\DoxyCodeLine{49 \textcolor{keywordtype}{void} ResetQryCnt();}
-\DoxyCodeLine{50 xbInt32 GetQryCnt() \textcolor{keyword}{const};}
-\DoxyCodeLine{51 }
-\DoxyCodeLine{52 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{53 \textcolor{comment}{// void Set( xbIx *pIx, void *vpTag );}}
+\DoxyCodeLine{43 xbInt16 Set( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *sFilterExpression );}
+\DoxyCodeLine{44 xbInt16 GetFirstRecord( xbInt16 iOpt = 1 );}
+\DoxyCodeLine{45 xbInt16 GetNextRecord ( xbInt16 iOpt = 1 );}
+\DoxyCodeLine{46 xbInt16 GetPrevRecord ( xbInt16 iOpt = 1 );}
+\DoxyCodeLine{47 xbInt16 GetLastRecord ( xbInt16 iOpt = 1 );}
+\DoxyCodeLine{48 \textcolor{keywordtype}{void} SetLimit( xbInt32 ulLimit );}
+\DoxyCodeLine{49 xbInt32 GetLimit() \textcolor{keyword}{const};}
+\DoxyCodeLine{50 \textcolor{keywordtype}{void} ResetQryCnt();}
+\DoxyCodeLine{51 xbInt32 GetQryCnt() \textcolor{keyword}{const};}
+\DoxyCodeLine{52 }
+\DoxyCodeLine{53 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
\DoxyCodeLine{54 xbInt16 GetFirstRecordIx( xbInt16 iOpt = 1 );}
\DoxyCodeLine{55 xbInt16 GetNextRecordIx ( xbInt16 iOpt = 1 );}
\DoxyCodeLine{56 xbInt16 GetPrevRecordIx ( xbInt16 iOpt = 1 );}
@@ -63,7 +63,7 @@
\DoxyCodeLine{59 }
\DoxyCodeLine{60 }
\DoxyCodeLine{61 \textcolor{keyword}{private}:}
-\DoxyCodeLine{62 \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *xbase;}
+\DoxyCodeLine{62 \textcolor{comment}{// xbXBase *xbase;}}
\DoxyCodeLine{63 \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf;}
\DoxyCodeLine{64 xbExp *exp;}
\DoxyCodeLine{65 }
diff --git a/docs/doxygen/latex/xbfuncs_8cpp.tex b/docs/doxygen/latex/xbfuncs_8cpp.tex
index 58aeb21..aa4a914 100644
--- a/docs/doxygen/latex/xbfuncs_8cpp.tex
+++ b/docs/doxygen/latex/xbfuncs_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbfuncs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbfuncs.cpp File Reference}
-\label{xbfuncs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfuncs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbfuncs.cpp}}
+\hypertarget{xbfuncs_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbfuncs.cpp File Reference}
+\label{xbfuncs_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfuncs.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbfuncs.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbindex_8h.tex b/docs/doxygen/latex/xbindex_8h.tex
index 8090a64..3a731e4 100644
--- a/docs/doxygen/latex/xbindex_8h.tex
+++ b/docs/doxygen/latex/xbindex_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbindex_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbindex.h File Reference}
-\label{xbindex_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbindex.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbindex.h}}
+\hypertarget{xbindex_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbindex.h File Reference}
+\label{xbindex_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbindex.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbindex.h}}
diff --git a/docs/doxygen/latex/xbindex_8h_source.tex b/docs/doxygen/latex/xbindex_8h_source.tex
index d234125..bc9fde0 100644
--- a/docs/doxygen/latex/xbindex_8h_source.tex
+++ b/docs/doxygen/latex/xbindex_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbindex_8h_source}{}\doxysection{xbindex.\+h}
-\label{xbindex_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbindex.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbindex.h}}
+\label{xbindex_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbindex.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbindex.h}}
\mbox{\hyperlink{xbindex_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbindex.h}}
diff --git a/docs/doxygen/latex/xbinsert_8cpp.tex b/docs/doxygen/latex/xbinsert_8cpp.tex
index ffb7fe6..9f7c740 100644
--- a/docs/doxygen/latex/xbinsert_8cpp.tex
+++ b/docs/doxygen/latex/xbinsert_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbinsert_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbinsert.cpp File Reference}
-\label{xbinsert_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbinsert.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbinsert.cpp}}
+\hypertarget{xbinsert_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbinsert.cpp File Reference}
+\label{xbinsert_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbinsert.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbinsert.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbixbase_8cpp.tex b/docs/doxygen/latex/xbixbase_8cpp.tex
index f987129..da7e909 100644
--- a/docs/doxygen/latex/xbixbase_8cpp.tex
+++ b/docs/doxygen/latex/xbixbase_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbixbase_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbixbase.cpp File Reference}
-\label{xbixbase_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbixbase.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbixbase.cpp}}
+\hypertarget{xbixbase_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbixbase.cpp File Reference}
+\label{xbixbase_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbixbase.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbixbase.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbixmdx_8cpp.tex b/docs/doxygen/latex/xbixmdx_8cpp.tex
index 07a7006..ecab55f 100644
--- a/docs/doxygen/latex/xbixmdx_8cpp.tex
+++ b/docs/doxygen/latex/xbixmdx_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbixmdx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbixmdx.cpp File Reference}
-\label{xbixmdx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbixmdx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbixmdx.cpp}}
+\hypertarget{xbixmdx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbixmdx.cpp File Reference}
+\label{xbixmdx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbixmdx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbixmdx.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbixndx_8cpp.tex b/docs/doxygen/latex/xbixndx_8cpp.tex
index 457c279..c25c6b6 100644
--- a/docs/doxygen/latex/xbixndx_8cpp.tex
+++ b/docs/doxygen/latex/xbixndx_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbixndx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbixndx.cpp File Reference}
-\label{xbixndx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbixndx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbixndx.cpp}}
+\hypertarget{xbixndx_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbixndx.cpp File Reference}
+\label{xbixndx_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbixndx.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbixndx.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xblnklst_8h.tex b/docs/doxygen/latex/xblnklst_8h.tex
index 1734760..6ae38d4 100644
--- a/docs/doxygen/latex/xblnklst_8h.tex
+++ b/docs/doxygen/latex/xblnklst_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xblnklst_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklst.h File Reference}
-\label{xblnklst_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklst.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklst.h}}
+\hypertarget{xblnklst_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklst.h File Reference}
+\label{xblnklst_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklst.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklst.h}}
diff --git a/docs/doxygen/latex/xblnklst_8h_source.tex b/docs/doxygen/latex/xblnklst_8h_source.tex
index cbf9fa9..536e0ab 100644
--- a/docs/doxygen/latex/xblnklst_8h_source.tex
+++ b/docs/doxygen/latex/xblnklst_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xblnklst_8h_source}{}\doxysection{xblnklst.\+h}
-\label{xblnklst_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklst.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklst.h}}
+\label{xblnklst_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklst.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklst.h}}
\mbox{\hyperlink{xblnklst_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xblnklst.h}}
diff --git a/docs/doxygen/latex/xblnklstord_8h.tex b/docs/doxygen/latex/xblnklstord_8h.tex
index f6d60d1..6facabb 100644
--- a/docs/doxygen/latex/xblnklstord_8h.tex
+++ b/docs/doxygen/latex/xblnklstord_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xblnklstord_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklstord.h File Reference}
-\label{xblnklstord_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklstord.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklstord.h}}
+\hypertarget{xblnklstord_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklstord.h File Reference}
+\label{xblnklstord_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklstord.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklstord.h}}
diff --git a/docs/doxygen/latex/xblnklstord_8h_source.tex b/docs/doxygen/latex/xblnklstord_8h_source.tex
index 5f4c000..a94bd82 100644
--- a/docs/doxygen/latex/xblnklstord_8h_source.tex
+++ b/docs/doxygen/latex/xblnklstord_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xblnklstord_8h_source}{}\doxysection{xblnklstord.\+h}
-\label{xblnklstord_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklstord.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnklstord.h}}
+\label{xblnklstord_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklstord.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnklstord.h}}
\mbox{\hyperlink{xblnklstord_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xblnklstord.h}}
diff --git a/docs/doxygen/latex/xblnknod_8h.tex b/docs/doxygen/latex/xblnknod_8h.tex
index 9be4f78..cc23e56 100644
--- a/docs/doxygen/latex/xblnknod_8h.tex
+++ b/docs/doxygen/latex/xblnknod_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xblnknod_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xblnknod.h File Reference}
-\label{xblnknod_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnknod.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnknod.h}}
+\hypertarget{xblnknod_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xblnknod.h File Reference}
+\label{xblnknod_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnknod.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnknod.h}}
diff --git a/docs/doxygen/latex/xblnknod_8h_source.tex b/docs/doxygen/latex/xblnknod_8h_source.tex
index 73fc62f..4127b84 100644
--- a/docs/doxygen/latex/xblnknod_8h_source.tex
+++ b/docs/doxygen/latex/xblnknod_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xblnknod_8h_source}{}\doxysection{xblnknod.\+h}
-\label{xblnknod_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnknod.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblnknod.h}}
+\label{xblnknod_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnknod.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblnknod.h}}
\mbox{\hyperlink{xblnknod_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xblnknod.h}}
diff --git a/docs/doxygen/latex/xblog_8cpp.tex b/docs/doxygen/latex/xblog_8cpp.tex
index e0d9529..1a69ec7 100644
--- a/docs/doxygen/latex/xblog_8cpp.tex
+++ b/docs/doxygen/latex/xblog_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xblog_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xblog.cpp File Reference}
-\label{xblog_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xblog.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xblog.cpp}}
+\hypertarget{xblog_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xblog.cpp File Reference}
+\label{xblog_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xblog.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xblog.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xblog_8h.tex b/docs/doxygen/latex/xblog_8h.tex
index 28822ab..9ad1cb8 100644
--- a/docs/doxygen/latex/xblog_8h.tex
+++ b/docs/doxygen/latex/xblog_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xblog_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xblog.h File Reference}
-\label{xblog_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblog.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblog.h}}
+\hypertarget{xblog_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xblog.h File Reference}
+\label{xblog_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblog.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblog.h}}
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xblog_8h_source.tex b/docs/doxygen/latex/xblog_8h_source.tex
index b4f73ea..03a4094 100644
--- a/docs/doxygen/latex/xblog_8h_source.tex
+++ b/docs/doxygen/latex/xblog_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xblog_8h_source}{}\doxysection{xblog.\+h}
-\label{xblog_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblog.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xblog.h}}
+\label{xblog_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblog.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xblog.h}}
\mbox{\hyperlink{xblog_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xblog.h}}
diff --git a/docs/doxygen/latex/xbmemo3_8cpp.tex b/docs/doxygen/latex/xbmemo3_8cpp.tex
index b7343e7..9697fff 100644
--- a/docs/doxygen/latex/xbmemo3_8cpp.tex
+++ b/docs/doxygen/latex/xbmemo3_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbmemo3_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo3.cpp File Reference}
-\label{xbmemo3_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo3.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo3.cpp}}
+\hypertarget{xbmemo3_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo3.cpp File Reference}
+\label{xbmemo3_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo3.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo3.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbmemo4_8cpp.tex b/docs/doxygen/latex/xbmemo4_8cpp.tex
index 2e8bd11..7f0a348 100644
--- a/docs/doxygen/latex/xbmemo4_8cpp.tex
+++ b/docs/doxygen/latex/xbmemo4_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbmemo4_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo4.cpp File Reference}
-\label{xbmemo4_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo4.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo4.cpp}}
+\hypertarget{xbmemo4_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo4.cpp File Reference}
+\label{xbmemo4_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo4.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo4.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbmemo_8cpp.tex b/docs/doxygen/latex/xbmemo_8cpp.tex
index 902360b..c62dee8 100644
--- a/docs/doxygen/latex/xbmemo_8cpp.tex
+++ b/docs/doxygen/latex/xbmemo_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbmemo_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo.cpp File Reference}
-\label{xbmemo_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbmemo.cpp}}
+\hypertarget{xbmemo_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo.cpp File Reference}
+\label{xbmemo_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbmemo.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbmemo_8h.tex b/docs/doxygen/latex/xbmemo_8h.tex
index f3f9a26..c9771e4 100644
--- a/docs/doxygen/latex/xbmemo_8h.tex
+++ b/docs/doxygen/latex/xbmemo_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbmemo_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbmemo.h File Reference}
-\label{xbmemo_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbmemo.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbmemo.h}}
+\hypertarget{xbmemo_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbmemo.h File Reference}
+\label{xbmemo_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbmemo.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbmemo.h}}
diff --git a/docs/doxygen/latex/xbmemo_8h_source.tex b/docs/doxygen/latex/xbmemo_8h_source.tex
index f9628c6..e46386c 100644
--- a/docs/doxygen/latex/xbmemo_8h_source.tex
+++ b/docs/doxygen/latex/xbmemo_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbmemo_8h_source}{}\doxysection{xbmemo.\+h}
-\label{xbmemo_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbmemo.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbmemo.h}}
+\label{xbmemo_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbmemo.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbmemo.h}}
\mbox{\hyperlink{xbmemo_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbmemo.h}}
diff --git a/docs/doxygen/latex/xbretcod_8h.tex b/docs/doxygen/latex/xbretcod_8h.tex
index 9e36114..fc7d89e 100644
--- a/docs/doxygen/latex/xbretcod_8h.tex
+++ b/docs/doxygen/latex/xbretcod_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbretcod_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbretcod.h File Reference}
-\label{xbretcod_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbretcod.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbretcod.h}}
+\hypertarget{xbretcod_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbretcod.h File Reference}
+\label{xbretcod_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbretcod.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbretcod.h}}
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
@@ -20,6 +20,8 @@ namespace \mbox{\hyperlink{namespacexb}{xb}}
\item
\#define \mbox{\hyperlink{xbretcod_8h_ad60dbb1862c0c1c2dc0464cfbfd93a34}{XB\+\_\+\+KEY\+\_\+\+NOT\+\_\+\+UNIQUE}}~-\/121
\item
+\#define \mbox{\hyperlink{xbretcod_8h_aa2925f035e3b186d7efa14648ea0e86d}{XB\+\_\+\+MEMCPY\+\_\+\+ERROR}}~-\/122
+\item
\#define \mbox{\hyperlink{xbretcod_8h_a54303a9677dbd5342233f33dd08c64d0}{XB\+\_\+\+FILE\+\_\+\+EXISTS}}~-\/200
\item
\#define \mbox{\hyperlink{xbretcod_8h_aa2ff8301503f446c6a5f6510090e520f}{XB\+\_\+\+ALREADY\+\_\+\+OPEN}}~-\/201
@@ -66,6 +68,10 @@ namespace \mbox{\hyperlink{namespacexb}{xb}}
\item
\#define \mbox{\hyperlink{xbretcod_8h_a59f1a8a6aca19595c2d1804349a24850}{XB\+\_\+\+LIMIT\+\_\+\+REACHED}}~-\/222
\item
+\#define \mbox{\hyperlink{xbretcod_8h_aae9241d91cfb37f5d236128b3bce0a4a}{XB\+\_\+\+BLOCKREAD\+\_\+\+NOT\+\_\+\+ENABLED}}~-\/223
+\item
+\#define \mbox{\hyperlink{xbretcod_8h_af532df74147ce2d872f61abfee49c53e}{XB\+\_\+\+DIRECTORY\+\_\+\+ERROR}}~-\/224
+\item
\#define \mbox{\hyperlink{xbretcod_8h_a79e2588f067d6e236c0e5a2c0728ba9f}{XB\+\_\+\+INVALID\+\_\+\+FIELD\+\_\+\+TYPE}}~-\/300
\item
\#define \mbox{\hyperlink{xbretcod_8h_a09d6c08a44316f551108a74003efd381}{XB\+\_\+\+INVALID\+\_\+\+FIELD\+\_\+\+NO}}~-\/301
@@ -125,6 +131,12 @@ namespace \mbox{\hyperlink{namespacexb}{xb}}
\doxysubsubsection{\texorpdfstring{XB\_ALREADY\_OPEN}{XB\_ALREADY\_OPEN}}
{\footnotesize\ttfamily \#define XB\+\_\+\+ALREADY\+\_\+\+OPEN~-\/201}
+\mbox{\Hypertarget{xbretcod_8h_aae9241d91cfb37f5d236128b3bce0a4a}\label{xbretcod_8h_aae9241d91cfb37f5d236128b3bce0a4a}}
+\index{xbretcod.h@{xbretcod.h}!XB\_BLOCKREAD\_NOT\_ENABLED@{XB\_BLOCKREAD\_NOT\_ENABLED}}
+\index{XB\_BLOCKREAD\_NOT\_ENABLED@{XB\_BLOCKREAD\_NOT\_ENABLED}!xbretcod.h@{xbretcod.h}}
+\doxysubsubsection{\texorpdfstring{XB\_BLOCKREAD\_NOT\_ENABLED}{XB\_BLOCKREAD\_NOT\_ENABLED}}
+{\footnotesize\ttfamily \#define XB\+\_\+\+BLOCKREAD\+\_\+\+NOT\+\_\+\+ENABLED~-\/223}
+
\mbox{\Hypertarget{xbretcod_8h_ade5f3a7cf1467d12761e4e21b5e4200f}\label{xbretcod_8h_ade5f3a7cf1467d12761e4e21b5e4200f}}
\index{xbretcod.h@{xbretcod.h}!XB\_BOF@{XB\_BOF}}
\index{XB\_BOF@{XB\_BOF}!xbretcod.h@{xbretcod.h}}
@@ -149,6 +161,12 @@ namespace \mbox{\hyperlink{namespacexb}{xb}}
\doxysubsubsection{\texorpdfstring{XB\_DELETE\_FAILED}{XB\_DELETE\_FAILED}}
{\footnotesize\ttfamily \#define XB\+\_\+\+DELETE\+\_\+\+FAILED~-\/219}
+\mbox{\Hypertarget{xbretcod_8h_af532df74147ce2d872f61abfee49c53e}\label{xbretcod_8h_af532df74147ce2d872f61abfee49c53e}}
+\index{xbretcod.h@{xbretcod.h}!XB\_DIRECTORY\_ERROR@{XB\_DIRECTORY\_ERROR}}
+\index{XB\_DIRECTORY\_ERROR@{XB\_DIRECTORY\_ERROR}!xbretcod.h@{xbretcod.h}}
+\doxysubsubsection{\texorpdfstring{XB\_DIRECTORY\_ERROR}{XB\_DIRECTORY\_ERROR}}
+{\footnotesize\ttfamily \#define XB\+\_\+\+DIRECTORY\+\_\+\+ERROR~-\/224}
+
\mbox{\Hypertarget{xbretcod_8h_ac18036408d10e5eee1bf76cf92352b95}\label{xbretcod_8h_ac18036408d10e5eee1bf76cf92352b95}}
\index{xbretcod.h@{xbretcod.h}!XB\_DUP\_TABLE\_OR\_ALIAS@{XB\_DUP\_TABLE\_OR\_ALIAS}}
\index{XB\_DUP\_TABLE\_OR\_ALIAS@{XB\_DUP\_TABLE\_OR\_ALIAS}!xbretcod.h@{xbretcod.h}}
@@ -359,6 +377,12 @@ namespace \mbox{\hyperlink{namespacexb}{xb}}
\doxysubsubsection{\texorpdfstring{XB\_MAX\_ERROR\_NO}{XB\_MAX\_ERROR\_NO}}
{\footnotesize\ttfamily \#define XB\+\_\+\+MAX\+\_\+\+ERROR\+\_\+\+NO~-\/999}
+\mbox{\Hypertarget{xbretcod_8h_aa2925f035e3b186d7efa14648ea0e86d}\label{xbretcod_8h_aa2925f035e3b186d7efa14648ea0e86d}}
+\index{xbretcod.h@{xbretcod.h}!XB\_MEMCPY\_ERROR@{XB\_MEMCPY\_ERROR}}
+\index{XB\_MEMCPY\_ERROR@{XB\_MEMCPY\_ERROR}!xbretcod.h@{xbretcod.h}}
+\doxysubsubsection{\texorpdfstring{XB\_MEMCPY\_ERROR}{XB\_MEMCPY\_ERROR}}
+{\footnotesize\ttfamily \#define XB\+\_\+\+MEMCPY\+\_\+\+ERROR~-\/122}
+
\mbox{\Hypertarget{xbretcod_8h_ac720d5b4ec45bfd606f5865d40816e23}\label{xbretcod_8h_ac720d5b4ec45bfd606f5865d40816e23}}
\index{xbretcod.h@{xbretcod.h}!XB\_NO\_ERROR@{XB\_NO\_ERROR}}
\index{XB\_NO\_ERROR@{XB\_NO\_ERROR}!xbretcod.h@{xbretcod.h}}
diff --git a/docs/doxygen/latex/xbretcod_8h_source.tex b/docs/doxygen/latex/xbretcod_8h_source.tex
index 69b09ed..48e4cbd 100644
--- a/docs/doxygen/latex/xbretcod_8h_source.tex
+++ b/docs/doxygen/latex/xbretcod_8h_source.tex
@@ -1,12 +1,12 @@
\hypertarget{xbretcod_8h_source}{}\doxysection{xbretcod.\+h}
-\label{xbretcod_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbretcod.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbretcod.h}}
+\label{xbretcod_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbretcod.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbretcod.h}}
\mbox{\hyperlink{xbretcod_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbretcod.h}}
\DoxyCodeLine{2 \textcolor{comment}{}}
\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
\DoxyCodeLine{4 \textcolor{comment}{}}
-\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
+\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel}}
\DoxyCodeLine{6 \textcolor{comment}{}}
\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
\DoxyCodeLine{8 \textcolor{comment}{}}
@@ -31,70 +31,73 @@
\DoxyCodeLine{27 \textcolor{preprocessor}{ \#define XB\_DUP\_TABLE\_OR\_ALIAS -\/110 }\textcolor{comment}{// table manager}}
\DoxyCodeLine{28 \textcolor{preprocessor}{ \#define XB\_INVALID\_NODELINK -\/120 }\textcolor{comment}{// linklist}}
\DoxyCodeLine{29 \textcolor{preprocessor}{ \#define XB\_KEY\_NOT\_UNIQUE -\/121 }\textcolor{comment}{// linklist}}
-\DoxyCodeLine{30 }
-\DoxyCodeLine{31 \textcolor{preprocessor}{ \#define XB\_FILE\_EXISTS -\/200 }\textcolor{comment}{// file}}
-\DoxyCodeLine{32 \textcolor{preprocessor}{ \#define XB\_ALREADY\_OPEN -\/201 }\textcolor{comment}{// file}}
-\DoxyCodeLine{33 \textcolor{preprocessor}{ \#define XB\_DBF\_FILE\_NOT\_OPEN -\/202 }\textcolor{comment}{// file}}
-\DoxyCodeLine{34 \textcolor{preprocessor}{ \#define XB\_FILE\_NOT\_FOUND -\/203 }\textcolor{comment}{// file}}
-\DoxyCodeLine{35 \textcolor{preprocessor}{ \#define XB\_FILE\_TYPE\_NOT\_SUPPORTED -\/204 }\textcolor{comment}{// file}}
-\DoxyCodeLine{36 \textcolor{preprocessor}{ \#define XB\_RENAME\_ERROR -\/205 }\textcolor{comment}{// file}}
-\DoxyCodeLine{37 \textcolor{preprocessor}{ \#define XB\_INVALID\_OBJECT -\/206 }\textcolor{comment}{// file}}
-\DoxyCodeLine{38 \textcolor{preprocessor}{ \#define XB\_NOT\_OPEN -\/207 }\textcolor{comment}{// file}}
-\DoxyCodeLine{39 \textcolor{preprocessor}{ \#define XB\_NOT\_FOUND -\/208 }\textcolor{comment}{// file}}
-\DoxyCodeLine{40 \textcolor{preprocessor}{ \#define XB\_OPEN\_ERROR -\/209 }\textcolor{comment}{// file}}
-\DoxyCodeLine{41 \textcolor{preprocessor}{ \#define XB\_CLOSE\_ERROR -\/210 }\textcolor{comment}{// file}}
-\DoxyCodeLine{42 \textcolor{preprocessor}{ \#define XB\_SEEK\_ERROR -\/211 }\textcolor{comment}{// file}}
-\DoxyCodeLine{43 \textcolor{preprocessor}{ \#define XB\_READ\_ERROR -\/212 }\textcolor{comment}{// file}}
-\DoxyCodeLine{44 \textcolor{preprocessor}{ \#define XB\_WRITE\_ERROR -\/213 }\textcolor{comment}{// file}}
-\DoxyCodeLine{45 \textcolor{preprocessor}{ \#define XB\_EOF -\/214 }\textcolor{comment}{// file}}
-\DoxyCodeLine{46 \textcolor{preprocessor}{ \#define XB\_BOF -\/215 }\textcolor{comment}{// file}}
-\DoxyCodeLine{47 \textcolor{preprocessor}{ \#define XB\_INVALID\_BLOCK\_SIZE -\/216 }\textcolor{comment}{// file}}
-\DoxyCodeLine{48 \textcolor{preprocessor}{ \#define XB\_INVALID\_BLOCK\_NO -\/217 }\textcolor{comment}{// file}}
-\DoxyCodeLine{49 \textcolor{preprocessor}{ \#define XB\_INVALID\_RECORD -\/218 }\textcolor{comment}{// file}}
-\DoxyCodeLine{50 \textcolor{preprocessor}{ \#define XB\_DELETE\_FAILED -\/219 }\textcolor{comment}{// file}}
-\DoxyCodeLine{51 \textcolor{preprocessor}{ \#define XB\_INVALID\_TABLE\_NAME -\/220 }\textcolor{comment}{// file}}
-\DoxyCodeLine{52 \textcolor{preprocessor}{ \#define XB\_EMPTY -\/221 }\textcolor{comment}{// file}}
-\DoxyCodeLine{53 \textcolor{preprocessor}{ \#define XB\_LIMIT\_REACHED -\/222 }\textcolor{comment}{// file}}
-\DoxyCodeLine{54 }
-\DoxyCodeLine{55 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_TYPE -\/300 }\textcolor{comment}{// field}}
-\DoxyCodeLine{56 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_NO -\/301 }\textcolor{comment}{// field}}
-\DoxyCodeLine{57 \textcolor{preprocessor}{ \#define XB\_INVALID\_DATA -\/302 }\textcolor{comment}{// field}}
-\DoxyCodeLine{58 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_NAME -\/303 }\textcolor{comment}{// field}}
-\DoxyCodeLine{59 \textcolor{preprocessor}{ \#define XB\_INVALID\_MEMO\_FIELD -\/304 }\textcolor{comment}{// field}}
-\DoxyCodeLine{60 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD -\/305 }\textcolor{comment}{// field}}
-\DoxyCodeLine{61 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_LEN -\/306 }\textcolor{comment}{// field}}
-\DoxyCodeLine{62 \textcolor{preprocessor}{ \#define XB\_INVALID\_DATE -\/307 }\textcolor{comment}{// date field}}
-\DoxyCodeLine{63 }
-\DoxyCodeLine{64 \textcolor{preprocessor}{ \#define XB\_INVALID\_LOCK\_OPTION -\/400 }\textcolor{comment}{// lock}}
-\DoxyCodeLine{65 \textcolor{preprocessor}{ \#define XB\_LOCK\_FAILED -\/401 }\textcolor{comment}{// lock}}
-\DoxyCodeLine{66 \textcolor{preprocessor}{ \#define XB\_TABLE\_NOT\_LOCKED -\/402 }\textcolor{comment}{// lock -\/ need table locked for operation}}
-\DoxyCodeLine{67 }
-\DoxyCodeLine{68 \textcolor{preprocessor}{ \#define XB\_PARSE\_ERROR -\/500 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{69 \textcolor{preprocessor}{ \#define XB\_INVALID\_FUNCTION -\/501 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{70 \textcolor{preprocessor}{ \#define XB\_INVALID\_PARM -\/502 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{71 \textcolor{preprocessor}{ \#define XB\_INCONSISTENT\_PARM\_LENS -\/503 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{72 \textcolor{preprocessor}{ \#define XB\_INCOMPATIBLE\_OPERANDS -\/504 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{73 \textcolor{preprocessor}{ \#define XB\_UNBALANCED\_PARENS -\/505 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{74 \textcolor{preprocessor}{ \#define XB\_UNBALANCED\_QUOTES -\/506 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{75 \textcolor{preprocessor}{ \#define XB\_INVALID\_EXPRESSION -\/507 }\textcolor{comment}{// expression}}
-\DoxyCodeLine{76 }
-\DoxyCodeLine{77 \textcolor{preprocessor}{ \#define XB\_INVALID\_KEYNO -\/600 }\textcolor{comment}{// index}}
-\DoxyCodeLine{78 \textcolor{preprocessor}{ \#define XB\_INVALID\_INDEX -\/601 }\textcolor{comment}{// index file error}}
-\DoxyCodeLine{79 \textcolor{preprocessor}{ \#define XB\_INVALID\_TAG -\/602 }\textcolor{comment}{// invalid index tag name, must be <= 10 bytes}}
-\DoxyCodeLine{80 \textcolor{preprocessor}{ \#define XB\_INVALID\_PAGE -\/603 }\textcolor{comment}{// invalid index page}}
-\DoxyCodeLine{81 }
-\DoxyCodeLine{82 }
-\DoxyCodeLine{83 \textcolor{preprocessor}{ \#define XB\_SYNTAX\_ERROR -\/700 }\textcolor{comment}{// sql syntax error}}
+\DoxyCodeLine{30 \textcolor{preprocessor}{ \#define XB\_MEMCPY\_ERROR -\/122 }\textcolor{comment}{// memcpy failure}}
+\DoxyCodeLine{31 }
+\DoxyCodeLine{32 \textcolor{preprocessor}{ \#define XB\_FILE\_EXISTS -\/200 }\textcolor{comment}{// file}}
+\DoxyCodeLine{33 \textcolor{preprocessor}{ \#define XB\_ALREADY\_OPEN -\/201 }\textcolor{comment}{// file}}
+\DoxyCodeLine{34 \textcolor{preprocessor}{ \#define XB\_DBF\_FILE\_NOT\_OPEN -\/202 }\textcolor{comment}{// file}}
+\DoxyCodeLine{35 \textcolor{preprocessor}{ \#define XB\_FILE\_NOT\_FOUND -\/203 }\textcolor{comment}{// file}}
+\DoxyCodeLine{36 \textcolor{preprocessor}{ \#define XB\_FILE\_TYPE\_NOT\_SUPPORTED -\/204 }\textcolor{comment}{// file}}
+\DoxyCodeLine{37 \textcolor{preprocessor}{ \#define XB\_RENAME\_ERROR -\/205 }\textcolor{comment}{// file}}
+\DoxyCodeLine{38 \textcolor{preprocessor}{ \#define XB\_INVALID\_OBJECT -\/206 }\textcolor{comment}{// file}}
+\DoxyCodeLine{39 \textcolor{preprocessor}{ \#define XB\_NOT\_OPEN -\/207 }\textcolor{comment}{// file}}
+\DoxyCodeLine{40 \textcolor{preprocessor}{ \#define XB\_NOT\_FOUND -\/208 }\textcolor{comment}{// file}}
+\DoxyCodeLine{41 \textcolor{preprocessor}{ \#define XB\_OPEN\_ERROR -\/209 }\textcolor{comment}{// file}}
+\DoxyCodeLine{42 \textcolor{preprocessor}{ \#define XB\_CLOSE\_ERROR -\/210 }\textcolor{comment}{// file}}
+\DoxyCodeLine{43 \textcolor{preprocessor}{ \#define XB\_SEEK\_ERROR -\/211 }\textcolor{comment}{// file}}
+\DoxyCodeLine{44 \textcolor{preprocessor}{ \#define XB\_READ\_ERROR -\/212 }\textcolor{comment}{// file}}
+\DoxyCodeLine{45 \textcolor{preprocessor}{ \#define XB\_WRITE\_ERROR -\/213 }\textcolor{comment}{// file}}
+\DoxyCodeLine{46 \textcolor{preprocessor}{ \#define XB\_EOF -\/214 }\textcolor{comment}{// file}}
+\DoxyCodeLine{47 \textcolor{preprocessor}{ \#define XB\_BOF -\/215 }\textcolor{comment}{// file}}
+\DoxyCodeLine{48 \textcolor{preprocessor}{ \#define XB\_INVALID\_BLOCK\_SIZE -\/216 }\textcolor{comment}{// file}}
+\DoxyCodeLine{49 \textcolor{preprocessor}{ \#define XB\_INVALID\_BLOCK\_NO -\/217 }\textcolor{comment}{// file}}
+\DoxyCodeLine{50 \textcolor{preprocessor}{ \#define XB\_INVALID\_RECORD -\/218 }\textcolor{comment}{// file}}
+\DoxyCodeLine{51 \textcolor{preprocessor}{ \#define XB\_DELETE\_FAILED -\/219 }\textcolor{comment}{// file}}
+\DoxyCodeLine{52 \textcolor{preprocessor}{ \#define XB\_INVALID\_TABLE\_NAME -\/220 }\textcolor{comment}{// file}}
+\DoxyCodeLine{53 \textcolor{preprocessor}{ \#define XB\_EMPTY -\/221 }\textcolor{comment}{// file}}
+\DoxyCodeLine{54 \textcolor{preprocessor}{ \#define XB\_LIMIT\_REACHED -\/222 }\textcolor{comment}{// file}}
+\DoxyCodeLine{55 \textcolor{preprocessor}{ \#define XB\_BLOCKREAD\_NOT\_ENABLED -\/223 }\textcolor{comment}{// file}}
+\DoxyCodeLine{56 \textcolor{preprocessor}{ \#define XB\_DIRECTORY\_ERROR -\/224 }\textcolor{comment}{// file}}
+\DoxyCodeLine{57 }
+\DoxyCodeLine{58 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_TYPE -\/300 }\textcolor{comment}{// field}}
+\DoxyCodeLine{59 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_NO -\/301 }\textcolor{comment}{// field}}
+\DoxyCodeLine{60 \textcolor{preprocessor}{ \#define XB\_INVALID\_DATA -\/302 }\textcolor{comment}{// field}}
+\DoxyCodeLine{61 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_NAME -\/303 }\textcolor{comment}{// field}}
+\DoxyCodeLine{62 \textcolor{preprocessor}{ \#define XB\_INVALID\_MEMO\_FIELD -\/304 }\textcolor{comment}{// field}}
+\DoxyCodeLine{63 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD -\/305 }\textcolor{comment}{// field}}
+\DoxyCodeLine{64 \textcolor{preprocessor}{ \#define XB\_INVALID\_FIELD\_LEN -\/306 }\textcolor{comment}{// field}}
+\DoxyCodeLine{65 \textcolor{preprocessor}{ \#define XB\_INVALID\_DATE -\/307 }\textcolor{comment}{// date field}}
+\DoxyCodeLine{66 }
+\DoxyCodeLine{67 \textcolor{preprocessor}{ \#define XB\_INVALID\_LOCK\_OPTION -\/400 }\textcolor{comment}{// lock}}
+\DoxyCodeLine{68 \textcolor{preprocessor}{ \#define XB\_LOCK\_FAILED -\/401 }\textcolor{comment}{// lock}}
+\DoxyCodeLine{69 \textcolor{preprocessor}{ \#define XB\_TABLE\_NOT\_LOCKED -\/402 }\textcolor{comment}{// lock -\/ need table locked for operation}}
+\DoxyCodeLine{70 }
+\DoxyCodeLine{71 \textcolor{preprocessor}{ \#define XB\_PARSE\_ERROR -\/500 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{72 \textcolor{preprocessor}{ \#define XB\_INVALID\_FUNCTION -\/501 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{73 \textcolor{preprocessor}{ \#define XB\_INVALID\_PARM -\/502 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{74 \textcolor{preprocessor}{ \#define XB\_INCONSISTENT\_PARM\_LENS -\/503 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{75 \textcolor{preprocessor}{ \#define XB\_INCOMPATIBLE\_OPERANDS -\/504 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{76 \textcolor{preprocessor}{ \#define XB\_UNBALANCED\_PARENS -\/505 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{77 \textcolor{preprocessor}{ \#define XB\_UNBALANCED\_QUOTES -\/506 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{78 \textcolor{preprocessor}{ \#define XB\_INVALID\_EXPRESSION -\/507 }\textcolor{comment}{// expression}}
+\DoxyCodeLine{79 }
+\DoxyCodeLine{80 \textcolor{preprocessor}{ \#define XB\_INVALID\_KEYNO -\/600 }\textcolor{comment}{// index}}
+\DoxyCodeLine{81 \textcolor{preprocessor}{ \#define XB\_INVALID\_INDEX -\/601 }\textcolor{comment}{// index file error}}
+\DoxyCodeLine{82 \textcolor{preprocessor}{ \#define XB\_INVALID\_TAG -\/602 }\textcolor{comment}{// invalid index tag name, must be <= 10 bytes}}
+\DoxyCodeLine{83 \textcolor{preprocessor}{ \#define XB\_INVALID\_PAGE -\/603 }\textcolor{comment}{// invalid index page}}
\DoxyCodeLine{84 }
\DoxyCodeLine{85 }
-\DoxyCodeLine{86 \textcolor{preprocessor}{ \#define XB\_MAX\_ERROR\_NO -\/999}}
+\DoxyCodeLine{86 \textcolor{preprocessor}{ \#define XB\_SYNTAX\_ERROR -\/700 }\textcolor{comment}{// sql syntax error}}
\DoxyCodeLine{87 }
\DoxyCodeLine{88 }
-\DoxyCodeLine{89 \textcolor{comment}{/* when updating this table, also need to update messages in xbssv.cpp */}}
+\DoxyCodeLine{89 \textcolor{preprocessor}{ \#define XB\_MAX\_ERROR\_NO -\/999}}
\DoxyCodeLine{90 }
\DoxyCodeLine{91 }
-\DoxyCodeLine{92 \} \textcolor{comment}{/* namespace */}}
-\DoxyCodeLine{93 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_RETCODES\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{92 \textcolor{comment}{/* when updating this table, also need to update messages in xbssv.cpp */}}
+\DoxyCodeLine{93 }
\DoxyCodeLine{94 }
+\DoxyCodeLine{95 \} \textcolor{comment}{/* namespace */}}
+\DoxyCodeLine{96 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_RETCODES\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{97 }
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbselect_8cpp.tex b/docs/doxygen/latex/xbselect_8cpp.tex
new file mode 100644
index 0000000..921de45
--- /dev/null
+++ b/docs/doxygen/latex/xbselect_8cpp.tex
@@ -0,0 +1,3 @@
+\hypertarget{xbselect_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbselect.cpp File Reference}
+\label{xbselect_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbselect.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbselect.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbset_8cpp.tex b/docs/doxygen/latex/xbset_8cpp.tex
index 4ee080e..ea5e5a3 100644
--- a/docs/doxygen/latex/xbset_8cpp.tex
+++ b/docs/doxygen/latex/xbset_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbset_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbset.cpp File Reference}
-\label{xbset_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbset.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbset.cpp}}
+\hypertarget{xbset_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbset.cpp File Reference}
+\label{xbset_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbset.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbset.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbsql_8cpp.tex b/docs/doxygen/latex/xbsql_8cpp.tex
index e70fabf..e6c9503 100644
--- a/docs/doxygen/latex/xbsql_8cpp.tex
+++ b/docs/doxygen/latex/xbsql_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbsql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/sql/xbsql.cpp File Reference}
-\label{xbsql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbsql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/sql/xbsql.cpp}}
+\hypertarget{xbsql_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbsql.cpp File Reference}
+\label{xbsql_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbsql.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbsql.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbsql_8h.tex b/docs/doxygen/latex/xbsql_8h.tex
index df1b008..c1b5903 100644
--- a/docs/doxygen/latex/xbsql_8h.tex
+++ b/docs/doxygen/latex/xbsql_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbsql_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbsql.h File Reference}
-\label{xbsql_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbsql.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbsql.h}}
+\hypertarget{xbsql_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbsql.h File Reference}
+\label{xbsql_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbsql.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbsql.h}}
diff --git a/docs/doxygen/latex/xbsql_8h_source.tex b/docs/doxygen/latex/xbsql_8h_source.tex
index f42eca3..f52325d 100644
--- a/docs/doxygen/latex/xbsql_8h_source.tex
+++ b/docs/doxygen/latex/xbsql_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbsql_8h_source}{}\doxysection{xbsql.\+h}
-\label{xbsql_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbsql.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbsql.h}}
+\label{xbsql_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbsql.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbsql.h}}
\mbox{\hyperlink{xbsql_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbsql.h}}
@@ -33,50 +33,135 @@
\DoxyCodeLine{29 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespacexb}{xb}}\{}
\DoxyCodeLine{30 }
\DoxyCodeLine{31 }
-\DoxyCodeLine{32 \textcolor{keyword}{class }XBDLLEXPORT xbSql : \textcolor{keyword}{public} xbSsv \{}
-\DoxyCodeLine{33 \textcolor{keyword}{public}:}
-\DoxyCodeLine{34 \textcolor{comment}{// xbSql();}}
-\DoxyCodeLine{35 xbSql( \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *x );}
-\DoxyCodeLine{36 \string~xbSql();}
-\DoxyCodeLine{37 }
-\DoxyCodeLine{38 xbInt16 ExecuteNonQuery( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{39 \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *GetXbasePtr() \textcolor{keyword}{const};}
-\DoxyCodeLine{40 }
-\DoxyCodeLine{41 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{42 }
-\DoxyCodeLine{43 \textcolor{keyword}{private}:}
+\DoxyCodeLine{32 \textcolor{keyword}{struct }XBDLLEXPORT xbSqlFld\{}
+\DoxyCodeLine{33 \textcolor{keywordtype}{char} cType; \textcolor{comment}{// F -\/ Database field}}
+\DoxyCodeLine{34 \textcolor{comment}{// L -\/ Literal}}
+\DoxyCodeLine{35 \textcolor{comment}{// E -\/ Expression}}
+\DoxyCodeLine{36 xbInt16 iFldNo; \textcolor{comment}{// Field number if db field}}
+\DoxyCodeLine{37 xbExp * pExp; \textcolor{comment}{// If cType=E, pointer to parsed expression}}
+\DoxyCodeLine{38 xbString sFldAlias; \textcolor{comment}{// Alias name for query display}}
+\DoxyCodeLine{39 xbSqlFld * Next; \textcolor{comment}{// Next field in list}}
+\DoxyCodeLine{40 \};}
+\DoxyCodeLine{41 }
+\DoxyCodeLine{42 \textcolor{keyword}{class }xbStmt;}
+\DoxyCodeLine{43 }
\DoxyCodeLine{44 }
-\DoxyCodeLine{45 xbInt16 SqlAlterTable( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{45 \textcolor{keyword}{struct }XBDLLEXPORT xbTblJoin \{ \textcolor{comment}{// structure for defining joined tables in the query}}
\DoxyCodeLine{46 }
-\DoxyCodeLine{47 xbInt16 SqlCreateTable( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{48 }
-\DoxyCodeLine{49 xbInt16 SqlDelete( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{50 }
-\DoxyCodeLine{51 xbInt16 SqlDropTable( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{52 }
-\DoxyCodeLine{53 }
-\DoxyCodeLine{54 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
-\DoxyCodeLine{55 xbInt16 SqlCreateIndex( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{56 xbInt16 SqlDropIndex( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{57 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{47 xbString sTableName;}
+\DoxyCodeLine{48 xbString sAlias;}
+\DoxyCodeLine{49 xbString sJoinExp; \textcolor{comment}{// table join expression}}
+\DoxyCodeLine{50 \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *pDbf; \textcolor{comment}{// pointer the the dbf structure for this table}}
+\DoxyCodeLine{51 xbTag *pTag; \textcolor{comment}{// pointer to relevant tag for this table, null for record order}}
+\DoxyCodeLine{52 xbExp *pLinkExp; \textcolor{comment}{// pointer to parsed linkage expression}}
+\DoxyCodeLine{53 \textcolor{keywordtype}{char} cJoinType; \textcolor{comment}{// M -\/ Master}}
+\DoxyCodeLine{54 \textcolor{comment}{// L -\/ Left or Full Left}}
+\DoxyCodeLine{55 \textcolor{comment}{// R -\/ Right or Full Right}}
+\DoxyCodeLine{56 \textcolor{comment}{// I -\/ Inner}}
+\DoxyCodeLine{57 \textcolor{comment}{// O -\/ Outer or Full Outer Outer}}
\DoxyCodeLine{58 }
-\DoxyCodeLine{59 \textcolor{comment}{// xbInt16 SqlCreateView( const xbString \&sCmdLine );}}
-\DoxyCodeLine{60 \textcolor{comment}{// xbInt16 SqlDropView( const xbString \&sCmdLine );}}
-\DoxyCodeLine{61 \textcolor{comment}{// xbInt16 SqlUpdate( const xbString \&sCmdLine );}}
-\DoxyCodeLine{62 \textcolor{comment}{// xbInt16 SqlSelect( const xbString \&sCmdLine );}}
-\DoxyCodeLine{63 }
-\DoxyCodeLine{64 \textcolor{keywordtype}{void} SqlHelp() \textcolor{keyword}{const};}
-\DoxyCodeLine{65 xbInt16 SqlInsert( \textcolor{keyword}{const} xbString \&sCmLine );}
-\DoxyCodeLine{66 xbInt16 SqlSet( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{67 xbInt16 SqlUse( \textcolor{keyword}{const} xbString \&sCmdLine );}
-\DoxyCodeLine{68 }
-\DoxyCodeLine{69 \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *xbase;}
-\DoxyCodeLine{70 xbUda uda;}
+\DoxyCodeLine{59 xbTblJoin *pMaster; \textcolor{comment}{// pointer to master table, null if this is the primary master}}
+\DoxyCodeLine{60 xbLinkList<xbTblJoin *> llSubList; \textcolor{comment}{// linked list of subordinate tables}}
+\DoxyCodeLine{61 \textcolor{comment}{// xbStmt *pSubQuery; // pointer to sub query}}
+\DoxyCodeLine{62 xbTblJoin *next; \textcolor{comment}{// next tbl}}
+\DoxyCodeLine{63 \};}
+\DoxyCodeLine{64 }
+\DoxyCodeLine{65 }
+\DoxyCodeLine{66 \textcolor{keyword}{class }XBDLLEXPORT xbStmt : \textcolor{keyword}{public} xbSsv\{}
+\DoxyCodeLine{67 }
+\DoxyCodeLine{68 \textcolor{keyword}{public}:}
+\DoxyCodeLine{69 xbStmt( \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *x );}
+\DoxyCodeLine{70 \string~xbStmt();}
\DoxyCodeLine{71 }
-\DoxyCodeLine{72 \};}
-\DoxyCodeLine{73 }
-\DoxyCodeLine{74 \} \textcolor{comment}{/* namespace xb */}}
-\DoxyCodeLine{75 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* XB\_SQL\_SUPPORT */}\textcolor{preprocessor}{}}
-\DoxyCodeLine{76 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_XBSQL\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{72 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}}
+\DoxyCodeLine{73 xbInt16 DumpStmtInternals();}
+\DoxyCodeLine{74 xbInt16 Test();}
+\DoxyCodeLine{75 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{76 }
+\DoxyCodeLine{77 xbInt16 ExecuteQuery( \textcolor{keyword}{const} xbString \&sCmdLine ); }
+\DoxyCodeLine{78 }
+\DoxyCodeLine{79 \textcolor{comment}{// xbInt16 FetchFirst();}}
+\DoxyCodeLine{80 \textcolor{comment}{// xbInt16 FetchNext();}}
+\DoxyCodeLine{81 \textcolor{comment}{// xbInt16 FetchPrev();}}
+\DoxyCodeLine{82 \textcolor{comment}{// xbInt16 FetchLast();}}
+\DoxyCodeLine{83 \textcolor{comment}{// xbString \&GetField( const xbString sFldName );}}
+\DoxyCodeLine{84 }
+\DoxyCodeLine{85 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{86 }
+\DoxyCodeLine{87 \textcolor{keyword}{private}:}
+\DoxyCodeLine{88 }
+\DoxyCodeLine{89 xbInt16 AddQryTbl( \textcolor{keyword}{const} xbString \&sTable, \textcolor{keyword}{const} xbString \&sAlias, \textcolor{keyword}{const} xbString \&sExpression, \textcolor{keyword}{const} \textcolor{keywordtype}{char} cJoinType );}
+\DoxyCodeLine{90 xbInt16 CvtSqlExp2DbaseExp( \textcolor{keyword}{const} xbString \&sExpIn, xbString \&sExpOut );}
+\DoxyCodeLine{91 xbInt16 GetNextFromSeg( \textcolor{keyword}{const} xbString \&sLineIn, xbString \&sFromSegOut );}
+\DoxyCodeLine{92 xbUInt32 GetNextToken( \textcolor{keyword}{const} xbString \&sCmdLineIn, xbString \&sTokenOut, xbUInt32 ulStartPos );}
+\DoxyCodeLine{93 xbInt16 GetParenCnt( \textcolor{keyword}{const} xbString \&sToken );}
+\DoxyCodeLine{94 xbInt16 ParseFromStmt( \textcolor{keyword}{const} xbString \&sFromLine );}
+\DoxyCodeLine{95 xbInt16 ParseStmt( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{96 xbInt16 ProcessFromSeg( \textcolor{keyword}{const} xbString \&sFromStmtSeg );}
+\DoxyCodeLine{97 xbInt16 UpdateJoinList( \textcolor{keywordtype}{char} cType, \textcolor{keyword}{const} xbString \&sTableName, \textcolor{keyword}{const} xbString \&sAlias, \textcolor{keyword}{const} xbString \&sExp, \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *d, xbExp *e ); \textcolor{comment}{//, xbTag *t);}}
+\DoxyCodeLine{98 }
+\DoxyCodeLine{99 \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *xbase; \textcolor{comment}{// pointer to xbase structure}}
+\DoxyCodeLine{100 }
+\DoxyCodeLine{101 }
+\DoxyCodeLine{102 xbTblJoin * pTblList;}
+\DoxyCodeLine{103 xbSqlFld *fl; \textcolor{comment}{// field list in sql select statement}}
+\DoxyCodeLine{104 xbString sStmt; \textcolor{comment}{// complete query statment}}
+\DoxyCodeLine{105 xbString sFields; \textcolor{comment}{// list of fields}}
+\DoxyCodeLine{106 xbString sFrom; \textcolor{comment}{// from statment}}
+\DoxyCodeLine{107 xbString sWhere; \textcolor{comment}{// where clause}}
+\DoxyCodeLine{108 xbString sOrderBy; \textcolor{comment}{// sort order}}
+\DoxyCodeLine{109 xbString sGroupBy; \textcolor{comment}{// group by}}
+\DoxyCodeLine{110 xbString sHaving; \textcolor{comment}{// having}}
+\DoxyCodeLine{111 xbUInt32 ulFromPos;}
+\DoxyCodeLine{112 xbUInt32 ulWherePos;}
+\DoxyCodeLine{113 xbUInt32 ulOrderByPos;}
+\DoxyCodeLine{114 xbUInt32 ulGroupByPos;}
+\DoxyCodeLine{115 xbUInt32 ulHavingPos;}
+\DoxyCodeLine{116 }
+\DoxyCodeLine{117 }
+\DoxyCodeLine{118 \};}
+\DoxyCodeLine{119 }
+\DoxyCodeLine{120 }
+\DoxyCodeLine{121 \textcolor{keyword}{class }XBDLLEXPORT xbSql : \textcolor{keyword}{public} xbSsv \{}
+\DoxyCodeLine{122 \textcolor{keyword}{public}:}
+\DoxyCodeLine{123 \textcolor{comment}{// xbSql();}}
+\DoxyCodeLine{124 xbSql( \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *x );}
+\DoxyCodeLine{125 \string~xbSql();}
+\DoxyCodeLine{126 }
+\DoxyCodeLine{127 xbInt16 ExecuteNonQuery( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{128 \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *GetXbasePtr() \textcolor{keyword}{const};}
+\DoxyCodeLine{129 }
+\DoxyCodeLine{130 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{131 }
+\DoxyCodeLine{132 \textcolor{keyword}{private}:}
+\DoxyCodeLine{133 }
+\DoxyCodeLine{134 xbInt16 SqlAlterTable( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{135 xbInt16 SqlCreateTable( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{136 xbInt16 SqlDelete( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{137 xbInt16 SqlDropTable( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{138 }
+\DoxyCodeLine{139 \textcolor{preprocessor}{ \#ifdef XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{140 xbInt16 SqlCreateIndex( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{141 xbInt16 SqlDropIndex( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{142 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_INDEX\_SUPPORT}}
+\DoxyCodeLine{143 }
+\DoxyCodeLine{144 \textcolor{comment}{// xbInt16 SqlCreateView( const xbString \&sCmdLine );}}
+\DoxyCodeLine{145 \textcolor{comment}{// xbInt16 SqlDropView( const xbString \&sCmdLine );}}
+\DoxyCodeLine{146 \textcolor{comment}{// xbInt16 SqlUpdate( const xbString \&sCmdLine );}}
+\DoxyCodeLine{147 \textcolor{comment}{// xbInt16 SqlSelect( const xbString \&sCmdLine );}}
+\DoxyCodeLine{148 }
+\DoxyCodeLine{149 \textcolor{keywordtype}{void} SqlHelp() \textcolor{keyword}{const};}
+\DoxyCodeLine{150 xbInt16 SqlInsert( \textcolor{keyword}{const} xbString \&sCmLine );}
+\DoxyCodeLine{151 xbInt16 SqlSet( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{152 xbInt16 SqlUse( \textcolor{keyword}{const} xbString \&sCmdLine );}
+\DoxyCodeLine{153 }
+\DoxyCodeLine{154 \mbox{\hyperlink{namespacexb_a97858ddeb1c4b0100f3edc1a46d3a8b0}{xbXBase}} *xbase;}
+\DoxyCodeLine{155 xbUda uda;}
+\DoxyCodeLine{156 }
+\DoxyCodeLine{157 \};}
+\DoxyCodeLine{158 }
+\DoxyCodeLine{159 \} \textcolor{comment}{/* namespace xb */}}
+\DoxyCodeLine{160 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* XB\_SQL\_SUPPORT */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{161 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_XBSQL\_H\_\_ */}\textcolor{preprocessor}{}}
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbssv_8cpp.tex b/docs/doxygen/latex/xbssv_8cpp.tex
index f5492e3..01484f2 100644
--- a/docs/doxygen/latex/xbssv_8cpp.tex
+++ b/docs/doxygen/latex/xbssv_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbssv_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbssv.cpp File Reference}
-\label{xbssv_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbssv.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbssv.cpp}}
+\hypertarget{xbssv_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbssv.cpp File Reference}
+\label{xbssv_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbssv.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbssv.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbssv_8h.tex b/docs/doxygen/latex/xbssv_8h.tex
index 673bd81..ebb8ef1 100644
--- a/docs/doxygen/latex/xbssv_8h.tex
+++ b/docs/doxygen/latex/xbssv_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbssv_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbssv.h File Reference}
-\label{xbssv_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbssv.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbssv.h}}
+\hypertarget{xbssv_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbssv.h File Reference}
+\label{xbssv_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbssv.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbssv.h}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbssv_8h_source.tex b/docs/doxygen/latex/xbssv_8h_source.tex
index 5a0f66b..0ffe764 100644
--- a/docs/doxygen/latex/xbssv_8h_source.tex
+++ b/docs/doxygen/latex/xbssv_8h_source.tex
@@ -1,12 +1,12 @@
\hypertarget{xbssv_8h_source}{}\doxysection{xbssv.\+h}
-\label{xbssv_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbssv.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbssv.h}}
+\label{xbssv_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbssv.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbssv.h}}
\mbox{\hyperlink{xbssv_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbssv.h}}
\DoxyCodeLine{2 \textcolor{comment}{}}
\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
\DoxyCodeLine{4 \textcolor{comment}{}}
-\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
+\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel}}
\DoxyCodeLine{6 \textcolor{comment}{}}
\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
\DoxyCodeLine{8 \textcolor{comment}{}}
@@ -68,100 +68,111 @@
\DoxyCodeLine{77 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetDefaultAutoCommit () \textcolor{keyword}{const};}
\DoxyCodeLine{78 \textcolor{keywordtype}{void} SetDefaultAutoCommit ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bDefaultAutoCommit );}
\DoxyCodeLine{79 }
-\DoxyCodeLine{80 \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetDefaultLogDirectory () \textcolor{keyword}{const};}
-\DoxyCodeLine{81 \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetDefaultLogFileName () \textcolor{keyword}{const};}
-\DoxyCodeLine{82 \textcolor{keywordtype}{void} SetDefaultLogDirectory ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDefaultLogDirectory );}
-\DoxyCodeLine{83 }
-\DoxyCodeLine{84 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetMultiUser () \textcolor{keyword}{const};}
-\DoxyCodeLine{85 \textcolor{keywordtype}{void} SetMultiUser ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bMultiUser );}
-\DoxyCodeLine{86 }
-\DoxyCodeLine{87 \textcolor{preprocessor}{ \#if defined (XB\_NDX\_SUPPORT) || defined (XB\_MDX\_SUPPORT)}}
-\DoxyCodeLine{88 xbInt16 GetUniqueKeyOpt () \textcolor{keyword}{const};}
-\DoxyCodeLine{89 xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );}
-\DoxyCodeLine{90 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{91 }
-\DoxyCodeLine{92 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{93 xbInt16 GetDefaultLockRetries () \textcolor{keyword}{const};}
-\DoxyCodeLine{94 \textcolor{keywordtype}{void} SetDefaultLockRetries ( xbInt16 iRetryCount );}
-\DoxyCodeLine{95 xbInt32 GetDefaultLockWait () \textcolor{keyword}{const};}
-\DoxyCodeLine{96 \textcolor{keywordtype}{void} SetDefaultLockWait ( xbInt32 lRetryWait );}
-\DoxyCodeLine{97 xbInt16 GetDefaultLockFlavor () \textcolor{keyword}{const};}
-\DoxyCodeLine{98 \textcolor{keywordtype}{void} SetDefaultLockFlavor ( xbInt16 iLockFlavor );}
-\DoxyCodeLine{99 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetDefaultAutoLock () \textcolor{keyword}{const};}
-\DoxyCodeLine{100 \textcolor{keywordtype}{void} SetDefaultAutoLock ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bAutoLock );}
-\DoxyCodeLine{101 \textcolor{keywordtype}{void} EnableDefaultAutoLock ();}
-\DoxyCodeLine{102 \textcolor{keywordtype}{void} DisableDefaultAutoLock ();}
-\DoxyCodeLine{103 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{104 }
-\DoxyCodeLine{105 \textcolor{preprocessor}{ \#ifdef XB\_MDX\_SUPPORT}}
-\DoxyCodeLine{106 xbInt16 GetCreateMdxBlockSize() \textcolor{keyword}{const};}
-\DoxyCodeLine{107 xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );}
-\DoxyCodeLine{108 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{109 }
-\DoxyCodeLine{110 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{80 \textcolor{keywordtype}{void} GetHomeDir ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sHomeDirOut );}
+\DoxyCodeLine{81 }
+\DoxyCodeLine{82 \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetLogDirectory () \textcolor{keyword}{const};}
+\DoxyCodeLine{83 \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetLogFileName () \textcolor{keyword}{const};}
+\DoxyCodeLine{84 \textcolor{keywordtype}{void} SetLogDirectory ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sLogDirectory );}
+\DoxyCodeLine{85 }
+\DoxyCodeLine{86 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetMultiUser () \textcolor{keyword}{const};}
+\DoxyCodeLine{87 \textcolor{keywordtype}{void} SetMultiUser ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bMultiUser );}
+\DoxyCodeLine{88 }
+\DoxyCodeLine{89 \textcolor{preprocessor}{ \#if defined (XB\_NDX\_SUPPORT) || defined (XB\_MDX\_SUPPORT)}}
+\DoxyCodeLine{90 xbInt16 GetUniqueKeyOpt () \textcolor{keyword}{const};}
+\DoxyCodeLine{91 xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );}
+\DoxyCodeLine{92 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// (XB\_NDX\_SUPPORT) || defined (XB\_MDX\_SUPPORT)}}
+\DoxyCodeLine{93 }
+\DoxyCodeLine{94 \textcolor{preprocessor}{ \#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{95 xbInt16 GetDefaultLockRetries () \textcolor{keyword}{const};}
+\DoxyCodeLine{96 \textcolor{keywordtype}{void} SetDefaultLockRetries ( xbInt16 iRetryCount );}
+\DoxyCodeLine{97 xbInt32 GetDefaultLockWait () \textcolor{keyword}{const};}
+\DoxyCodeLine{98 \textcolor{keywordtype}{void} SetDefaultLockWait ( xbInt32 lRetryWait );}
+\DoxyCodeLine{99 xbInt16 GetDefaultLockFlavor () \textcolor{keyword}{const};}
+\DoxyCodeLine{100 \textcolor{keywordtype}{void} SetDefaultLockFlavor ( xbInt16 iLockFlavor );}
+\DoxyCodeLine{101 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetDefaultAutoLock () \textcolor{keyword}{const};}
+\DoxyCodeLine{102 \textcolor{keywordtype}{void} SetDefaultAutoLock ( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bAutoLock );}
+\DoxyCodeLine{103 \textcolor{keywordtype}{void} EnableDefaultAutoLock ();}
+\DoxyCodeLine{104 \textcolor{keywordtype}{void} DisableDefaultAutoLock ();}
+\DoxyCodeLine{105 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{106 }
+\DoxyCodeLine{107 \textcolor{preprocessor}{ \#ifdef XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{108 xbInt16 GetCreateMdxBlockSize() \textcolor{keyword}{const};}
+\DoxyCodeLine{109 xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );}
+\DoxyCodeLine{110 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_MDX\_SUPPORT}}
\DoxyCodeLine{111 }
-\DoxyCodeLine{112 \textcolor{keywordtype}{void} SetEndianType ();}
-\DoxyCodeLine{113 }
-\DoxyCodeLine{114 \textcolor{keyword}{static} xbInt16 \mbox{\hyperlink{classxb_1_1xbSsv_a5849e813f5e8e1cd180f0366637adbf3}{iEndianType}}; \textcolor{comment}{// B=Big Endian L=Little Endian}}
-\DoxyCodeLine{115 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \mbox{\hyperlink{classxb_1_1xbSsv_a9dec3164c3b264882df634915ecf21da}{sNullString}}; \textcolor{comment}{// Null String}}
+\DoxyCodeLine{112 \textcolor{preprocessor}{ \#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{113 xbUInt32 GetDefaultBlockReadSize() \textcolor{keyword}{const};}
+\DoxyCodeLine{114 \textcolor{keywordtype}{void} SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize );}
+\DoxyCodeLine{115 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_BLOCKREAD\_SUPPORT}}
\DoxyCodeLine{116 }
\DoxyCodeLine{117 }
-\DoxyCodeLine{118 \textcolor{keyword}{private}:}
+\DoxyCodeLine{118 \textcolor{keyword}{protected}:}
\DoxyCodeLine{119 }
-\DoxyCodeLine{120 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDefaultDateFormat;}
-\DoxyCodeLine{121 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDataDirectory; \textcolor{comment}{//Data file directory}}
-\DoxyCodeLine{122 }
-\DoxyCodeLine{123 \textcolor{preprocessor}{ \#ifdef XB\_LOGGING\_SUPPORT}}
-\DoxyCodeLine{124 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDefaultLogDirectory; \textcolor{comment}{//Default location to store log files}}
-\DoxyCodeLine{125 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDefaultLogFileName; \textcolor{comment}{//Default LogFileName}}
-\DoxyCodeLine{126 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{120 \textcolor{keywordtype}{void} SetEndianType ();}
+\DoxyCodeLine{121 }
+\DoxyCodeLine{122 \textcolor{keyword}{static} xbInt16 \mbox{\hyperlink{classxb_1_1xbSsv_a5849e813f5e8e1cd180f0366637adbf3}{iEndianType}}; \textcolor{comment}{// B=Big Endian L=Little Endian}}
+\DoxyCodeLine{123 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \mbox{\hyperlink{classxb_1_1xbSsv_a9dec3164c3b264882df634915ecf21da}{sNullString}}; \textcolor{comment}{// Null String}}
+\DoxyCodeLine{124 }
+\DoxyCodeLine{125 }
+\DoxyCodeLine{126 \textcolor{keyword}{private}:}
\DoxyCodeLine{127 }
-\DoxyCodeLine{128 \textcolor{keyword}{static} xbInt16 iDefaultFileVersion; \textcolor{comment}{// 3 = DBase 3}}
-\DoxyCodeLine{129 \textcolor{comment}{// 4 = DBase 4}}
-\DoxyCodeLine{130 \textcolor{comment}{// default version used in CreateTable command}}
-\DoxyCodeLine{131 \textcolor{comment}{// can be over ridden at the Xbase level, or table level}}
-\DoxyCodeLine{132 \textcolor{comment}{// Different versions can be open simultaneously}}
-\DoxyCodeLine{133 }
-\DoxyCodeLine{134 \textcolor{keyword}{static} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bDefaultAutoCommit; \textcolor{comment}{// Default dbf auto commit switch}}
+\DoxyCodeLine{128 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDefaultDateFormat;}
+\DoxyCodeLine{129 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDataDirectory; \textcolor{comment}{//Data file directory}}
+\DoxyCodeLine{130 }
+\DoxyCodeLine{131 \textcolor{preprocessor}{ \#ifdef XB\_LOGGING\_SUPPORT}}
+\DoxyCodeLine{132 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sLogDirectory; \textcolor{comment}{//Default location to store log files}}
+\DoxyCodeLine{133 \textcolor{keyword}{static} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sLogFileName; \textcolor{comment}{//Default LogFileName}}
+\DoxyCodeLine{134 \textcolor{preprocessor}{ \#endif}}
\DoxyCodeLine{135 }
-\DoxyCodeLine{136 \textcolor{keyword}{static} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bMultiUser; \textcolor{comment}{// True if multi user mode is turned on}}
-\DoxyCodeLine{137 \textcolor{comment}{// Turn this off for better performance in single user mode}}
-\DoxyCodeLine{138 \textcolor{comment}{// This needs to be turned on or off before any data tables are opened}}
-\DoxyCodeLine{139 \textcolor{comment}{// turning this on after tables are opened, can result in out of date}}
-\DoxyCodeLine{140 \textcolor{comment}{// file buffers if multiple users are sharing the files}}
+\DoxyCodeLine{136 \textcolor{keyword}{static} xbInt16 iDefaultFileVersion; \textcolor{comment}{// 3 = DBase 3}}
+\DoxyCodeLine{137 \textcolor{comment}{// 4 = DBase 4}}
+\DoxyCodeLine{138 \textcolor{comment}{// default version used in CreateTable command}}
+\DoxyCodeLine{139 \textcolor{comment}{// can be over ridden at the Xbase level, or table level}}
+\DoxyCodeLine{140 \textcolor{comment}{// Different versions can be open simultaneously}}
\DoxyCodeLine{141 }
-\DoxyCodeLine{142 \textcolor{preprocessor}{\#ifdef XB\_LOCKING\_SUPPORT}}
-\DoxyCodeLine{143 \textcolor{keyword}{static} xbInt32 lDefaultLockWait; \textcolor{comment}{// Number of milliseconds between lock retries}}
-\DoxyCodeLine{144 \textcolor{keyword}{static} xbInt16 iDefaultLockRetries; \textcolor{comment}{// Number of times to retry a lock before conceding}}
-\DoxyCodeLine{145 \textcolor{keyword}{static} xbInt16 bDefaultAutoLock; \textcolor{comment}{// Autolocking enabled?}}
-\DoxyCodeLine{146 \textcolor{keyword}{static} xbInt16 iDefaultLockFlavor; \textcolor{comment}{// 1 = DBase}}
-\DoxyCodeLine{147 \textcolor{comment}{// 2 = Clipper -\/ not developed yet}}
-\DoxyCodeLine{148 \textcolor{comment}{// 3 = FoxPro -\/ not developed yet}}
-\DoxyCodeLine{149 \textcolor{comment}{// 9 = Xbase64 -\/ not developed yet}}
-\DoxyCodeLine{150 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{151 }
-\DoxyCodeLine{152 }
-\DoxyCodeLine{153 }
-\DoxyCodeLine{154 \textcolor{preprocessor}{\#if defined (XB\_NDX\_SUPPORT) || defined (XB\_MDX\_SUPPORT)}}
-\DoxyCodeLine{155 }
-\DoxyCodeLine{156 \textcolor{keyword}{static} xbInt16 iUniqueKeyOpt;}
-\DoxyCodeLine{157 }
-\DoxyCodeLine{158 \textcolor{comment}{// is one of:}}
-\DoxyCodeLine{159 \textcolor{comment}{// XB\_HALT\_ON\_DUPKEY}}
-\DoxyCodeLine{160 \textcolor{comment}{// XB\_EMULATE\_DBASE}}
-\DoxyCodeLine{161 }
-\DoxyCodeLine{162 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{163 }
+\DoxyCodeLine{142 \textcolor{keyword}{static} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bDefaultAutoCommit; \textcolor{comment}{// Default dbf auto commit switch}}
+\DoxyCodeLine{143 }
+\DoxyCodeLine{144 \textcolor{keyword}{static} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bMultiUser; \textcolor{comment}{// True if multi user mode is turned on}}
+\DoxyCodeLine{145 \textcolor{comment}{// Turn this off for better performance in single user mode}}
+\DoxyCodeLine{146 \textcolor{comment}{// This needs to be turned on or off before any data tables are opened}}
+\DoxyCodeLine{147 \textcolor{comment}{// turning this on after tables are opened, can result in out of date}}
+\DoxyCodeLine{148 \textcolor{comment}{// file buffers if multiple users are sharing the files}}
+\DoxyCodeLine{149 }
+\DoxyCodeLine{150 \textcolor{preprocessor}{\#ifdef XB\_LOCKING\_SUPPORT}}
+\DoxyCodeLine{151 \textcolor{keyword}{static} xbInt32 lDefaultLockWait; \textcolor{comment}{// Number of milliseconds between lock retries}}
+\DoxyCodeLine{152 \textcolor{keyword}{static} xbInt16 iDefaultLockRetries; \textcolor{comment}{// Number of times to retry a lock before conceding}}
+\DoxyCodeLine{153 \textcolor{keyword}{static} xbInt16 bDefaultAutoLock; \textcolor{comment}{// Autolocking enabled?}}
+\DoxyCodeLine{154 \textcolor{keyword}{static} xbInt16 iDefaultLockFlavor; \textcolor{comment}{// 1 = DBase}}
+\DoxyCodeLine{155 \textcolor{comment}{// 2 = Clipper -\/ not developed yet}}
+\DoxyCodeLine{156 \textcolor{comment}{// 3 = FoxPro -\/ not developed yet}}
+\DoxyCodeLine{157 \textcolor{comment}{// 9 = Xbase64 -\/ not developed yet}}
+\DoxyCodeLine{158 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{159 }
+\DoxyCodeLine{160 }
+\DoxyCodeLine{161 \textcolor{preprocessor}{\#if defined (XB\_NDX\_SUPPORT) || defined (XB\_MDX\_SUPPORT)}}
+\DoxyCodeLine{162 }
+\DoxyCodeLine{163 \textcolor{keyword}{static} xbInt16 iUniqueKeyOpt;}
\DoxyCodeLine{164 }
-\DoxyCodeLine{165 \textcolor{preprocessor}{\#ifdef XB\_MDX\_SUPPORT}}
-\DoxyCodeLine{166 \textcolor{keyword}{static} xbInt16 iCreateMdxBlockSize; \textcolor{comment}{// System level Mdx Block Size}}
-\DoxyCodeLine{167 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{165 \textcolor{comment}{// is one of:}}
+\DoxyCodeLine{166 \textcolor{comment}{// XB\_HALT\_ON\_DUPKEY}}
+\DoxyCodeLine{167 \textcolor{comment}{// XB\_EMULATE\_DBASE}}
\DoxyCodeLine{168 }
-\DoxyCodeLine{169 }
+\DoxyCodeLine{169 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{170 }
-\DoxyCodeLine{171 \};}
-\DoxyCodeLine{172 }
-\DoxyCodeLine{173 \} \textcolor{comment}{/* namespace xb */}}
-\DoxyCodeLine{174 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_XBSSV\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{171 }
+\DoxyCodeLine{172 \textcolor{preprocessor}{\#ifdef XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{173 \textcolor{keyword}{static} xbInt16 iCreateMdxBlockSize; \textcolor{comment}{// System level Mdx Block Size}}
+\DoxyCodeLine{174 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_MDX\_SUPPORT}}
+\DoxyCodeLine{175 }
+\DoxyCodeLine{176 }
+\DoxyCodeLine{177 \textcolor{preprocessor}{\#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{178 \textcolor{keyword}{static} xbUInt32 ulDefaultBlockReadSize;}
+\DoxyCodeLine{179 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{180 }
+\DoxyCodeLine{181 }
+\DoxyCodeLine{182 \};}
+\DoxyCodeLine{183 }
+\DoxyCodeLine{184 \} \textcolor{comment}{/* namespace xb */}}
+\DoxyCodeLine{185 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_XBSSV\_H\_\_ */}\textcolor{preprocessor}{}}
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbstmt_8cpp.tex b/docs/doxygen/latex/xbstmt_8cpp.tex
new file mode 100644
index 0000000..b0c7d3b
--- /dev/null
+++ b/docs/doxygen/latex/xbstmt_8cpp.tex
@@ -0,0 +1,3 @@
+\hypertarget{xbstmt_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/sql/xbstmt.cpp File Reference}
+\label{xbstmt_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbstmt.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/sql/xbstmt.cpp}}
+{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbstring_8cpp.tex b/docs/doxygen/latex/xbstring_8cpp.tex
index 0405be8..b789259 100644
--- a/docs/doxygen/latex/xbstring_8cpp.tex
+++ b/docs/doxygen/latex/xbstring_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbstring_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbstring.cpp File Reference}
-\label{xbstring_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbstring.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbstring.cpp}}
+\hypertarget{xbstring_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbstring.cpp File Reference}
+\label{xbstring_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbstring.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbstring.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbstring_8h.tex b/docs/doxygen/latex/xbstring_8h.tex
index 5fe0d07..7736618 100644
--- a/docs/doxygen/latex/xbstring_8h.tex
+++ b/docs/doxygen/latex/xbstring_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbstring_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbstring.h File Reference}
-\label{xbstring_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbstring.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbstring.h}}
+\hypertarget{xbstring_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbstring.h File Reference}
+\label{xbstring_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbstring.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbstring.h}}
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$iostream$>$}\newline
\doxysubsection*{Data Structures}
diff --git a/docs/doxygen/latex/xbstring_8h_source.tex b/docs/doxygen/latex/xbstring_8h_source.tex
index 9f6ce21..fb0f08e 100644
--- a/docs/doxygen/latex/xbstring_8h_source.tex
+++ b/docs/doxygen/latex/xbstring_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbstring_8h_source}{}\doxysection{xbstring.\+h}
-\label{xbstring_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbstring.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbstring.h}}
+\label{xbstring_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbstring.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbstring.h}}
\mbox{\hyperlink{xbstring_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbstring.h}}
@@ -115,56 +115,58 @@
\DoxyCodeLine{131 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Mid(xbUInt32 ulPos, xbUInt32 lLen );}
\DoxyCodeLine{132 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&PadLeft( \textcolor{keywordtype}{char} c, xbUInt32 ulLen );}
\DoxyCodeLine{133 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&PadRight( \textcolor{keywordtype}{char} c, xbUInt32 ulLen );}
-\DoxyCodeLine{134 xbUInt32 Pos(\textcolor{keywordtype}{char} c) \textcolor{keyword}{const};}
-\DoxyCodeLine{135 xbUInt32 Pos(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *s) \textcolor{keyword}{const};}
-\DoxyCodeLine{136 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&PutAt(xbUInt32 ulPos, \textcolor{keywordtype}{char} c);}
-\DoxyCodeLine{137 }
-\DoxyCodeLine{138 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Remove( xbUInt32 ulPos, xbUInt32 ulN );}
-\DoxyCodeLine{139 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Replace( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *sReplace, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *sReplaceWith, xbInt16 iOpt = 0 );}
-\DoxyCodeLine{140 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Resize( xbUInt32 lSize );}
-\DoxyCodeLine{141 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Rtrim();}
-\DoxyCodeLine{142 }
-\DoxyCodeLine{143 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Set( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *s );}
-\DoxyCodeLine{144 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Set( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s );}
-\DoxyCodeLine{145 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Set( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *s, xbUInt32 ulSize );}
-\DoxyCodeLine{146 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&SetNum( xbInt32 lNum );}
-\DoxyCodeLine{147 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Sprintf(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *format, ...);}
-\DoxyCodeLine{148 }
-\DoxyCodeLine{149 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *Str() \textcolor{keyword}{const};}
-\DoxyCodeLine{150 \textcolor{keywordtype}{char} *strncpy( \textcolor{keywordtype}{char} * cDest, xbUInt32 n ) \textcolor{keyword}{const};}
-\DoxyCodeLine{151 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&SwapChars( \textcolor{keywordtype}{char} from, \textcolor{keywordtype}{char} to );}
-\DoxyCodeLine{152 }
-\DoxyCodeLine{153 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ToLowerCase();}
-\DoxyCodeLine{154 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ToUpperCase();}
-\DoxyCodeLine{155 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Trim();}
-\DoxyCodeLine{156 }
-\DoxyCodeLine{157 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} ValidLogicalValue() \textcolor{keyword}{const};}
-\DoxyCodeLine{158 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} ValidNumericValue() \textcolor{keyword}{const};}
-\DoxyCodeLine{159 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ZapChar( \textcolor{keywordtype}{char} c );}
-\DoxyCodeLine{160 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ZapLeadingChar( \textcolor{keywordtype}{char} c );}
-\DoxyCodeLine{161 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ZapTrailingChar( \textcolor{keywordtype}{char} c );}
-\DoxyCodeLine{162 }
-\DoxyCodeLine{163 \textcolor{keyword}{friend} std::ostream\& \mbox{\hyperlink{namespacexb_ad27f348219e895c44f74addba8e1889a}{operator<< }}( std::ostream\& os, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& s );}
+\DoxyCodeLine{134 }
+\DoxyCodeLine{135 xbUInt32 Pos(\textcolor{keywordtype}{char} c, xbUInt32 ulStartPos ) \textcolor{keyword}{const};}
+\DoxyCodeLine{136 xbUInt32 Pos(\textcolor{keywordtype}{char} c) \textcolor{keyword}{const};}
+\DoxyCodeLine{137 xbUInt32 Pos(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *s) \textcolor{keyword}{const};}
+\DoxyCodeLine{138 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&PutAt(xbUInt32 ulPos, \textcolor{keywordtype}{char} c);}
+\DoxyCodeLine{139 }
+\DoxyCodeLine{140 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Remove( xbUInt32 ulPos, xbUInt32 ulN );}
+\DoxyCodeLine{141 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Replace( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *sReplace, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *sReplaceWith, xbInt16 iOpt = 0 );}
+\DoxyCodeLine{142 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Resize( xbUInt32 lSize );}
+\DoxyCodeLine{143 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Rtrim();}
+\DoxyCodeLine{144 }
+\DoxyCodeLine{145 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Set( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *s );}
+\DoxyCodeLine{146 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Set( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s );}
+\DoxyCodeLine{147 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Set( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *s, xbUInt32 ulSize );}
+\DoxyCodeLine{148 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&SetNum( xbInt32 lNum );}
+\DoxyCodeLine{149 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Sprintf(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *format, ...);}
+\DoxyCodeLine{150 }
+\DoxyCodeLine{151 \textcolor{keyword}{const} \textcolor{keywordtype}{char} *Str() \textcolor{keyword}{const};}
+\DoxyCodeLine{152 \textcolor{keywordtype}{char} *strncpy( \textcolor{keywordtype}{char} * cDest, xbUInt32 n ) \textcolor{keyword}{const};}
+\DoxyCodeLine{153 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&SwapChars( \textcolor{keywordtype}{char} from, \textcolor{keywordtype}{char} to );}
+\DoxyCodeLine{154 }
+\DoxyCodeLine{155 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ToLowerCase();}
+\DoxyCodeLine{156 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ToUpperCase();}
+\DoxyCodeLine{157 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&Trim();}
+\DoxyCodeLine{158 }
+\DoxyCodeLine{159 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} ValidLogicalValue() \textcolor{keyword}{const};}
+\DoxyCodeLine{160 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} ValidNumericValue() \textcolor{keyword}{const};}
+\DoxyCodeLine{161 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ZapChar( \textcolor{keywordtype}{char} c );}
+\DoxyCodeLine{162 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ZapLeadingChar( \textcolor{keywordtype}{char} c );}
+\DoxyCodeLine{163 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&ZapTrailingChar( \textcolor{keywordtype}{char} c );}
\DoxyCodeLine{164 }
-\DoxyCodeLine{165 \textcolor{keyword}{private}:}
+\DoxyCodeLine{165 \textcolor{keyword}{friend} std::ostream\& \mbox{\hyperlink{namespacexb_ad27f348219e895c44f74addba8e1889a}{operator<< }}( std::ostream\& os, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& s );}
\DoxyCodeLine{166 }
-\DoxyCodeLine{167 \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} * NullString;}
-\DoxyCodeLine{168 \textcolor{keyword}{static} \textcolor{keywordtype}{char} cJunkBuf;}
-\DoxyCodeLine{169 }
-\DoxyCodeLine{170 \textcolor{keywordtype}{char} *data; \textcolor{comment}{// pointer to actual string data}}
-\DoxyCodeLine{171 xbUInt32 size; \textcolor{comment}{// size of string plus null terminating byte}}
-\DoxyCodeLine{172 }
-\DoxyCodeLine{173 \textcolor{keywordtype}{void} ctor(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *s);}
-\DoxyCodeLine{174 \textcolor{comment}{// xbUInt32 CalcSprintfBufSize(const char *format, ...);}}
-\DoxyCodeLine{175 }
-\DoxyCodeLine{176 \textcolor{comment}{// char * xb\_realloc( char *pIn, xbUInt32 iLen );}}
+\DoxyCodeLine{167 \textcolor{keyword}{private}:}
+\DoxyCodeLine{168 }
+\DoxyCodeLine{169 \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keywordtype}{char} * NullString;}
+\DoxyCodeLine{170 \textcolor{keyword}{static} \textcolor{keywordtype}{char} cJunkBuf;}
+\DoxyCodeLine{171 }
+\DoxyCodeLine{172 \textcolor{keywordtype}{char} *data; \textcolor{comment}{// pointer to actual string data}}
+\DoxyCodeLine{173 xbUInt32 size; \textcolor{comment}{// size of string plus null terminating byte}}
+\DoxyCodeLine{174 }
+\DoxyCodeLine{175 \textcolor{keywordtype}{void} ctor(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *s);}
+\DoxyCodeLine{176 \textcolor{comment}{// xbUInt32 CalcSprintfBufSize(const char *format, ...);}}
\DoxyCodeLine{177 }
-\DoxyCodeLine{178 \textcolor{comment}{// next routine could result in buffer over runs if used with improperly sized buffers}}
-\DoxyCodeLine{179 \textcolor{keywordtype}{char} * xb\_strcpy ( \textcolor{keywordtype}{char} *target, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *source);}
-\DoxyCodeLine{180 }
-\DoxyCodeLine{181 \};}
+\DoxyCodeLine{178 \textcolor{comment}{// char * xb\_realloc( char *pIn, xbUInt32 iLen );}}
+\DoxyCodeLine{179 }
+\DoxyCodeLine{180 \textcolor{comment}{// next routine could result in buffer over runs if used with improperly sized buffers}}
+\DoxyCodeLine{181 \textcolor{keywordtype}{char} * xb\_strcpy ( \textcolor{keywordtype}{char} *target, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *source);}
\DoxyCodeLine{182 }
-\DoxyCodeLine{183 \} \textcolor{comment}{/* namespace */}}
-\DoxyCodeLine{184 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XBSTRING\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{183 \};}
+\DoxyCodeLine{184 }
+\DoxyCodeLine{185 \} \textcolor{comment}{/* namespace */}}
+\DoxyCodeLine{186 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XBSTRING\_H\_\_ */}\textcolor{preprocessor}{}}
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbtag_8cpp.tex b/docs/doxygen/latex/xbtag_8cpp.tex
index 2166160..562d678 100644
--- a/docs/doxygen/latex/xbtag_8cpp.tex
+++ b/docs/doxygen/latex/xbtag_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbtag_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbtag.cpp File Reference}
-\label{xbtag_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbtag.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbtag.cpp}}
+\hypertarget{xbtag_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbtag.cpp File Reference}
+\label{xbtag_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbtag.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbtag.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbtag_8h.tex b/docs/doxygen/latex/xbtag_8h.tex
index b82a5ea..be28a4a 100644
--- a/docs/doxygen/latex/xbtag_8h.tex
+++ b/docs/doxygen/latex/xbtag_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbtag_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbtag.h File Reference}
-\label{xbtag_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtag.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtag.h}}
+\hypertarget{xbtag_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbtag.h File Reference}
+\label{xbtag_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtag.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtag.h}}
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbtag_8h_source.tex b/docs/doxygen/latex/xbtag_8h_source.tex
index 4bb9c2c..f15f79d 100644
--- a/docs/doxygen/latex/xbtag_8h_source.tex
+++ b/docs/doxygen/latex/xbtag_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbtag_8h_source}{}\doxysection{xbtag.\+h}
-\label{xbtag_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtag.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtag.h}}
+\label{xbtag_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtag.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtag.h}}
\mbox{\hyperlink{xbtag_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbtag.h}}
diff --git a/docs/doxygen/latex/xbtblmgr_8cpp.tex b/docs/doxygen/latex/xbtblmgr_8cpp.tex
index 0374c27..6c3f849 100644
--- a/docs/doxygen/latex/xbtblmgr_8cpp.tex
+++ b/docs/doxygen/latex/xbtblmgr_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbtblmgr_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbtblmgr.cpp File Reference}
-\label{xbtblmgr_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbtblmgr.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbtblmgr.cpp}}
+\hypertarget{xbtblmgr_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbtblmgr.cpp File Reference}
+\label{xbtblmgr_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbtblmgr.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbtblmgr.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbtblmgr_8h.tex b/docs/doxygen/latex/xbtblmgr_8h.tex
index 23668f6..b53c99a 100644
--- a/docs/doxygen/latex/xbtblmgr_8h.tex
+++ b/docs/doxygen/latex/xbtblmgr_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbtblmgr_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbtblmgr.h File Reference}
-\label{xbtblmgr_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtblmgr.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtblmgr.h}}
+\hypertarget{xbtblmgr_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbtblmgr.h File Reference}
+\label{xbtblmgr_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtblmgr.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtblmgr.h}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbtblmgr_8h_source.tex b/docs/doxygen/latex/xbtblmgr_8h_source.tex
index 83a37a7..e735784 100644
--- a/docs/doxygen/latex/xbtblmgr_8h_source.tex
+++ b/docs/doxygen/latex/xbtblmgr_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbtblmgr_8h_source}{}\doxysection{xbtblmgr.\+h}
-\label{xbtblmgr_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtblmgr.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtblmgr.h}}
+\label{xbtblmgr_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtblmgr.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtblmgr.h}}
\mbox{\hyperlink{xbtblmgr_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbtblmgr.h}}
@@ -34,35 +34,36 @@
\DoxyCodeLine{30 \textcolor{comment}{/* this structure is a linked list of open tables */}}
\DoxyCodeLine{31 \textcolor{keyword}{struct }XBDLLEXPORT \mbox{\hyperlink{structxb_1_1xbTblList}{xbTblList}}\{}
\DoxyCodeLine{32 \mbox{\hyperlink{structxb_1_1xbTblList}{xbTblList}} *\mbox{\hyperlink{structxb_1_1xbTblList_a3fd169fcf0fd4df927544e5342db583c}{pNext}};}
-\DoxyCodeLine{33 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} *\mbox{\hyperlink{structxb_1_1xbTblList_a02c3b0c47fd104ef9758b375ecdcfd0f}{psTblName}}; \textcolor{comment}{/* Name of table -\/ same table can be opened multiple times, but must have unique alias */}}
-\DoxyCodeLine{34 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} *\mbox{\hyperlink{structxb_1_1xbTblList_ac87742c8a6b1cf2e7e35218e96966a05}{psTblAlias}}; \textcolor{comment}{/* TblAliasName must be unique */}}
-\DoxyCodeLine{35 \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *\mbox{\hyperlink{structxb_1_1xbTblList_a387d3f6bbf291a1fb96d276ed9bb96b6}{pDbf}};}
-\DoxyCodeLine{36 \};}
-\DoxyCodeLine{37 }
-\DoxyCodeLine{38 \textcolor{keyword}{class }XBDLLEXPORT \mbox{\hyperlink{classxb_1_1xbTblMgr}{xbTblMgr}} : \textcolor{keyword}{public} \mbox{\hyperlink{classxb_1_1xbSsv}{xbSsv}} \{}
-\DoxyCodeLine{39 \textcolor{keyword}{public}:}
-\DoxyCodeLine{40 \mbox{\hyperlink{classxb_1_1xbTblMgr}{xbTblMgr}}();}
-\DoxyCodeLine{41 \mbox{\hyperlink{classxb_1_1xbTblMgr}{\string~xbTblMgr}}();}
-\DoxyCodeLine{42 xbInt16 AddTblToTblList ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblName );}
-\DoxyCodeLine{43 xbInt16 AddTblToTblList ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblAlias );}
-\DoxyCodeLine{44 xbInt16 DisplayTableList () \textcolor{keyword}{const};}
-\DoxyCodeLine{45 \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * GetDbfPtr ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblAlias ) \textcolor{keyword}{const};}
-\DoxyCodeLine{46 \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * GetDbfPtr ( xbInt16 sItemNo ) \textcolor{keyword}{const};}
-\DoxyCodeLine{47 \mbox{\hyperlink{structxb_1_1xbTblList}{xbTblList}} * GetTblListEntry ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d );}
-\DoxyCodeLine{48 xbInt16 GetOpenTableCount () \textcolor{keyword}{const};}
-\DoxyCodeLine{49 xbInt16 RemoveTblFromTblList ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblAlias );}
-\DoxyCodeLine{50 xbInt16 RemoveTblFromTblList ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d );}
-\DoxyCodeLine{51 }
-\DoxyCodeLine{52 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{53 }
-\DoxyCodeLine{54 \textcolor{keyword}{private}:}
-\DoxyCodeLine{55 \mbox{\hyperlink{structxb_1_1xbTblList}{xbTblList}} * TblList; \textcolor{comment}{// List of open database tables}}
-\DoxyCodeLine{56 xbInt16 iOpenTableCount; \textcolor{comment}{// Number of open tables}}
-\DoxyCodeLine{57 }
-\DoxyCodeLine{58 \};}
-\DoxyCodeLine{59 }
-\DoxyCodeLine{60 \} \textcolor{comment}{/* namespace xb */}}
-\DoxyCodeLine{61 }
-\DoxyCodeLine{62 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_XBMGR\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{33 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} *\mbox{\hyperlink{structxb_1_1xbTblList_aceec65f6f6b585788cf98e8dabd2737d}{psFqTblName}}; \textcolor{comment}{// Fully qualified name of table -\/ same table can be opened multiple times, but must have unique alias}}
+\DoxyCodeLine{34 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} *\mbox{\hyperlink{structxb_1_1xbTblList_a02c3b0c47fd104ef9758b375ecdcfd0f}{psTblName}}; \textcolor{comment}{// Table name without path, without extension}}
+\DoxyCodeLine{35 \mbox{\hyperlink{classxb_1_1xbString}{xbString}} *\mbox{\hyperlink{structxb_1_1xbTblList_ac87742c8a6b1cf2e7e35218e96966a05}{psTblAlias}}; \textcolor{comment}{// TblAliasName must be unique, same as TblNAme if Alias not provided}}
+\DoxyCodeLine{36 \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *\mbox{\hyperlink{structxb_1_1xbTblList_a387d3f6bbf291a1fb96d276ed9bb96b6}{pDbf}};}
+\DoxyCodeLine{37 \};}
+\DoxyCodeLine{38 }
+\DoxyCodeLine{39 \textcolor{keyword}{class }XBDLLEXPORT \mbox{\hyperlink{classxb_1_1xbTblMgr}{xbTblMgr}} : \textcolor{keyword}{public} \mbox{\hyperlink{classxb_1_1xbSsv}{xbSsv}} \{}
+\DoxyCodeLine{40 \textcolor{keyword}{public}:}
+\DoxyCodeLine{41 \mbox{\hyperlink{classxb_1_1xbTblMgr}{xbTblMgr}}();}
+\DoxyCodeLine{42 \mbox{\hyperlink{classxb_1_1xbTblMgr}{\string~xbTblMgr}}();}
+\DoxyCodeLine{43 xbInt16 AddTblToTblList ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqTblName );}
+\DoxyCodeLine{44 xbInt16 AddTblToTblList ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqTblName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblAlias );}
+\DoxyCodeLine{45 xbInt16 DisplayTableList () \textcolor{keyword}{const};}
+\DoxyCodeLine{46 \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * GetDbfPtr ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblAlias ) \textcolor{keyword}{const};}
+\DoxyCodeLine{47 \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * GetDbfPtr ( xbInt16 sItemNo ) \textcolor{keyword}{const};}
+\DoxyCodeLine{48 \mbox{\hyperlink{structxb_1_1xbTblList}{xbTblList}} * GetTblListEntry ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d );}
+\DoxyCodeLine{49 xbInt16 GetOpenTableCount () \textcolor{keyword}{const};}
+\DoxyCodeLine{50 xbInt16 RemoveTblFromTblList ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTblAlias );}
+\DoxyCodeLine{51 xbInt16 RemoveTblFromTblList ( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} *d );}
+\DoxyCodeLine{52 }
+\DoxyCodeLine{53 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{54 }
+\DoxyCodeLine{55 \textcolor{keyword}{private}:}
+\DoxyCodeLine{56 \mbox{\hyperlink{structxb_1_1xbTblList}{xbTblList}} * TblList; \textcolor{comment}{// List of open database tables}}
+\DoxyCodeLine{57 xbInt16 iOpenTableCount; \textcolor{comment}{// Number of open tables}}
+\DoxyCodeLine{58 }
+\DoxyCodeLine{59 \};}
+\DoxyCodeLine{60 }
+\DoxyCodeLine{61 \} \textcolor{comment}{/* namespace xb */}}
+\DoxyCodeLine{62 }
+\DoxyCodeLine{63 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_XBMGR\_H\_\_ */}\textcolor{preprocessor}{}}
\end{DoxyCode}
diff --git a/docs/doxygen/latex/xbtypes_8h.tex b/docs/doxygen/latex/xbtypes_8h.tex
index 48c0ade..a198f39 100644
--- a/docs/doxygen/latex/xbtypes_8h.tex
+++ b/docs/doxygen/latex/xbtypes_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbtypes_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbtypes.h File Reference}
-\label{xbtypes_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtypes.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtypes.h}}
+\hypertarget{xbtypes_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbtypes.h File Reference}
+\label{xbtypes_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtypes.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtypes.h}}
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbtypes_8h_source.tex b/docs/doxygen/latex/xbtypes_8h_source.tex
index 4a76695..c6e7a1d 100644
--- a/docs/doxygen/latex/xbtypes_8h_source.tex
+++ b/docs/doxygen/latex/xbtypes_8h_source.tex
@@ -1,5 +1,5 @@
\hypertarget{xbtypes_8h_source}{}\doxysection{xbtypes.\+h}
-\label{xbtypes_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtypes.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbtypes.h}}
+\label{xbtypes_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtypes.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbtypes.h}}
\mbox{\hyperlink{xbtypes_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbtypes.h}}
diff --git a/docs/doxygen/latex/xbuda_8cpp.tex b/docs/doxygen/latex/xbuda_8cpp.tex
index ff9f678..63b3515 100644
--- a/docs/doxygen/latex/xbuda_8cpp.tex
+++ b/docs/doxygen/latex/xbuda_8cpp.tex
@@ -1,3 +1,3 @@
-\hypertarget{xbuda_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbuda.cpp File Reference}
-\label{xbuda_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbuda.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbuda.cpp}}
+\hypertarget{xbuda_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbuda.cpp File Reference}
+\label{xbuda_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbuda.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbuda.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
diff --git a/docs/doxygen/latex/xbuda_8h.tex b/docs/doxygen/latex/xbuda_8h.tex
index 5162f27..19d5f8e 100644
--- a/docs/doxygen/latex/xbuda_8h.tex
+++ b/docs/doxygen/latex/xbuda_8h.tex
@@ -1,2 +1,2 @@
-\hypertarget{xbuda_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbuda.h File Reference}
-\label{xbuda_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbuda.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbuda.h}}
+\hypertarget{xbuda_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbuda.h File Reference}
+\label{xbuda_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbuda.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbuda.h}}
diff --git a/docs/doxygen/latex/xbuda_8h_source.tex b/docs/doxygen/latex/xbuda_8h_source.tex
index 5f61588..eb5a738 100644
--- a/docs/doxygen/latex/xbuda_8h_source.tex
+++ b/docs/doxygen/latex/xbuda_8h_source.tex
@@ -1,12 +1,12 @@
\hypertarget{xbuda_8h_source}{}\doxysection{xbuda.\+h}
-\label{xbuda_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbuda.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbuda.h}}
+\label{xbuda_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbuda.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbuda.h}}
\mbox{\hyperlink{xbuda_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbuda.h}}
\DoxyCodeLine{2 \textcolor{comment}{}}
\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
\DoxyCodeLine{4 \textcolor{comment}{}}
-\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
+\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel}}
\DoxyCodeLine{6 \textcolor{comment}{}}
\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
\DoxyCodeLine{8 \textcolor{comment}{}}
@@ -38,7 +38,7 @@
\DoxyCodeLine{34 \textcolor{keyword}{public}:}
\DoxyCodeLine{35 xbUda();}
\DoxyCodeLine{36 \string~xbUda();}
-\DoxyCodeLine{37 }
+\DoxyCodeLine{37 }
\DoxyCodeLine{38 xbInt16 AddTokenForKey( \textcolor{keyword}{const} xbString \&sKey, \textcolor{keyword}{const} xbString \&sToken );}
\DoxyCodeLine{39 \textcolor{keywordtype}{void} Clear();}
\DoxyCodeLine{40 xbInt16 DelTokenForKey( \textcolor{keyword}{const} xbString \&sKey );}
@@ -46,7 +46,7 @@
\DoxyCodeLine{42 xbInt16 GetTokenForKey( \textcolor{keyword}{const} xbString \&sKey, xbString \&sData );}
\DoxyCodeLine{43 xbInt16 UpdTokenForKey( \textcolor{keyword}{const} xbString \&sKey, \textcolor{keyword}{const} xbString \&sToken );}
\DoxyCodeLine{44 \textcolor{keywordtype}{void} DumpUda() \textcolor{keyword}{const};}
-\DoxyCodeLine{45 }
+\DoxyCodeLine{45 }
\DoxyCodeLine{46 \textcolor{keyword}{private}:}
\DoxyCodeLine{47 xbLinkListOrd<xbString> llOrd;}
\DoxyCodeLine{48 }
diff --git a/docs/doxygen/latex/xbxbase_8cpp.tex b/docs/doxygen/latex/xbxbase_8cpp.tex
index 21bbba9..97797d5 100644
--- a/docs/doxygen/latex/xbxbase_8cpp.tex
+++ b/docs/doxygen/latex/xbxbase_8cpp.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbxbase_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/core/xbxbase.cpp File Reference}
-\label{xbxbase_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbxbase.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/core/xbxbase.cpp}}
+\hypertarget{xbxbase_8cpp}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/core/xbxbase.cpp File Reference}
+\label{xbxbase_8cpp}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbxbase.cpp@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/core/xbxbase.cpp}}
{\ttfamily \#include \char`\"{}xbase.\+h\char`\"{}}\newline
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
diff --git a/docs/doxygen/latex/xbxbase_8h.tex b/docs/doxygen/latex/xbxbase_8h.tex
index d6e686c..12bb276 100644
--- a/docs/doxygen/latex/xbxbase_8h.tex
+++ b/docs/doxygen/latex/xbxbase_8h.tex
@@ -1,5 +1,5 @@
-\hypertarget{xbxbase_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.0.3/src/include/xbxbase.h File Reference}
-\label{xbxbase_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbxbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbxbase.h}}
+\hypertarget{xbxbase_8h}{}\doxysection{/mnt/1\+Tdata/xbase/xbase64-\/4.1.0/src/include/xbxbase.h File Reference}
+\label{xbxbase_8h}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbxbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbxbase.h}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item
diff --git a/docs/doxygen/latex/xbxbase_8h_source.tex b/docs/doxygen/latex/xbxbase_8h_source.tex
index 5917849..5b803b6 100644
--- a/docs/doxygen/latex/xbxbase_8h_source.tex
+++ b/docs/doxygen/latex/xbxbase_8h_source.tex
@@ -1,12 +1,12 @@
\hypertarget{xbxbase_8h_source}{}\doxysection{xbxbase.\+h}
-\label{xbxbase_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbxbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.3/src/include/xbxbase.h}}
+\label{xbxbase_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbxbase.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.0/src/include/xbxbase.h}}
\mbox{\hyperlink{xbxbase_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbxbase.h}}
\DoxyCodeLine{2 \textcolor{comment}{}}
\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
\DoxyCodeLine{4 \textcolor{comment}{}}
-\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
+\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel}}
\DoxyCodeLine{6 \textcolor{comment}{}}
\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
\DoxyCodeLine{8 \textcolor{comment}{}}
@@ -148,77 +148,85 @@
\DoxyCodeLine{148 }
\DoxyCodeLine{149 \textcolor{keywordtype}{void} xbSleep ( xbInt32 lMillisecs );}
\DoxyCodeLine{150 }
-\DoxyCodeLine{151 }
-\DoxyCodeLine{152 \textcolor{comment}{/* xbase functions */}}
-\DoxyCodeLine{153 \textcolor{preprocessor}{ \#ifdef XB\_FUNCTION\_SUPPORT}}
-\DoxyCodeLine{154 xbInt16 ABS( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{155 xbInt16 ALLTRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{156 xbInt16 ASC( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dAscOut );}
-\DoxyCodeLine{157 xbInt16 AT( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sSrchFor, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sBase, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dPos );}
-\DoxyCodeLine{158 xbInt16 CDOW( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutDow );}
-\DoxyCodeLine{159 xbInt16 CHR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dAsciCd, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{160 xbInt16 CMONTH( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutMonth );}
-\DoxyCodeLine{161 xbInt16 CTOD( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sInDate, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dOutDate );}
-\DoxyCodeLine{162 xbInt16 DATE( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dOutDate );}
-\DoxyCodeLine{163 xbInt16 DAY( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOutDay );}
-\DoxyCodeLine{164 xbInt16 DEL( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut, xbInt16 iRecBufSw = 0 );}
-\DoxyCodeLine{165 xbInt16 DELETED( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bOut, xbInt16 iRecBufSw = 0 );}
-\DoxyCodeLine{166 xbInt16 DESCEND( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{167 xbInt16 DESCEND( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dOutDate );}
-\DoxyCodeLine{168 xbInt16 DESCEND( \textcolor{keyword}{const} \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dsOut );}
-\DoxyCodeLine{169 xbInt16 DOW( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&sInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dDowOut );}
-\DoxyCodeLine{170 xbInt16 DTOC( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutFmtDate );}
-\DoxyCodeLine{171 xbInt16 DTOS( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutFmtDate );}
-\DoxyCodeLine{172 xbInt16 EXP( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{173 xbInt16 IIF( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bResult, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTrueResult, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFalseResult, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sResult );}
-\DoxyCodeLine{174 xbInt16 INT( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{175 xbInt16 ISALPHA( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bResult );}
-\DoxyCodeLine{176 xbInt16 ISLOWER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bResult );}
-\DoxyCodeLine{177 xbInt16 ISUPPER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bResult );}
-\DoxyCodeLine{178 xbInt16 LEFT( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 lCharCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{179 xbInt16 LEN( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dLen );}
-\DoxyCodeLine{180 xbInt16 LOG( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{181 xbInt16 LOWER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{182 xbInt16 LTRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sOut );}
-\DoxyCodeLine{183 xbInt16 MAX( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn1, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn2, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{184 xbInt16 MIN( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn1, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn2, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{185 xbInt16 MONTH( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dMonthOut );}
-\DoxyCodeLine{186 xbInt16 RECCOUNT( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dRecOut );}
-\DoxyCodeLine{187 xbInt16 RECNO( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dRecOut );}
-\DoxyCodeLine{188 xbInt16 REPLICATE( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 ulRepCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{189 xbInt16 RIGHT( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 iCharCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{190 xbInt16 RTRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{191 xbInt16 SPACE( xbInt32 lCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{192 xbInt16 SQRT( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dBase, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dSqrRt );}
-\DoxyCodeLine{193 xbInt16 STOD( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&sDateOut );}
-\DoxyCodeLine{194 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{195 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{196 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, xbUInt32 ulDec, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{197 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, xbUInt32 ulDec, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sPadChar, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{198 xbInt16 STRZERO( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, xbUInt32 ulDec, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{199 xbInt16 SUBSTR( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 ulStartPos, xbUInt32 ulLen, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{200 xbInt16 TRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{201 xbInt16 UPPER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
-\DoxyCodeLine{202 xbInt16 VAL( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
-\DoxyCodeLine{203 xbInt16 YEAR( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOutYear );}
-\DoxyCodeLine{204 \textcolor{preprocessor}{ \#endif}}
-\DoxyCodeLine{205 }
-\DoxyCodeLine{206 \textcolor{keyword}{protected}:}
-\DoxyCodeLine{207 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbBcd;}
-\DoxyCodeLine{208 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbExp;}
-\DoxyCodeLine{209 }
-\DoxyCodeLine{210 xbInt16 \mbox{\hyperlink{classxb_1_1xbXBase_ae52e53340593b4253936c1372ec15ee1}{GetFunctionInfo}}( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sExpLine, \textcolor{keywordtype}{char} \&cReturnType, xbInt16 \&iReturnLenCalc, xbInt32 \&lReturnLenVal ) \textcolor{keyword}{const};}
-\DoxyCodeLine{211 \textcolor{keyword}{static} xbInt16 xbMemcmp( \textcolor{keyword}{const} \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} *s1, \textcolor{keyword}{const} \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} *s2, \textcolor{keywordtype}{size\_t} n );}
+\DoxyCodeLine{151 xbInt16 GetCmdLineOpt ( xbInt32 lArgc, \textcolor{keywordtype}{char} **argv, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *sOptRqst, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sParmOut );}
+\DoxyCodeLine{152 xbInt16 GetCmdLineOpt ( xbInt32 lArgc, \textcolor{keywordtype}{char} **argv, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOptRqst, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sParmOut );}
+\DoxyCodeLine{153 }
+\DoxyCodeLine{154 }
+\DoxyCodeLine{155 \textcolor{comment}{/* xbase functions */}}
+\DoxyCodeLine{156 \textcolor{preprocessor}{ \#ifdef XB\_FUNCTION\_SUPPORT}}
+\DoxyCodeLine{157 xbInt16 ABS( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{158 xbInt16 ALLTRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{159 xbInt16 ASC( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dAscOut );}
+\DoxyCodeLine{160 xbInt16 AT( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sSrchFor, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sBase, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dPos );}
+\DoxyCodeLine{161 xbInt16 CDOW( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutDow );}
+\DoxyCodeLine{162 xbInt16 CHR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dAsciCd, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{163 xbInt16 CMONTH( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutMonth );}
+\DoxyCodeLine{164 xbInt16 CTOD( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sInDate, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dOutDate );}
+\DoxyCodeLine{165 xbInt16 DATE( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dOutDate );}
+\DoxyCodeLine{166 xbInt16 DAY( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOutDay );}
+\DoxyCodeLine{167 xbInt16 DEL( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut, xbInt16 iRecBufSw = 0 );}
+\DoxyCodeLine{168 xbInt16 DELETED( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bOut, xbInt16 iRecBufSw = 0 );}
+\DoxyCodeLine{169 xbInt16 DESCEND( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{170 xbInt16 DESCEND( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dOutDate );}
+\DoxyCodeLine{171 xbInt16 DESCEND( \textcolor{keyword}{const} \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dsOut );}
+\DoxyCodeLine{172 xbInt16 DOW( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&sInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dDowOut );}
+\DoxyCodeLine{173 xbInt16 DTOC( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutFmtDate );}
+\DoxyCodeLine{174 xbInt16 DTOS( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOutFmtDate );}
+\DoxyCodeLine{175 xbInt16 EXP( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{176 xbInt16 IIF( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bResult, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sTrueResult, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFalseResult, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sResult );}
+\DoxyCodeLine{177 xbInt16 INT( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{178 xbInt16 ISALPHA( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bResult );}
+\DoxyCodeLine{179 xbInt16 ISLOWER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bResult );}
+\DoxyCodeLine{180 xbInt16 ISUPPER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&s, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bResult );}
+\DoxyCodeLine{181 xbInt16 LEFT( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 lCharCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{182 xbInt16 LEN( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dLen );}
+\DoxyCodeLine{183 xbInt16 LOG( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{184 xbInt16 LOWER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{185 xbInt16 LTRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \& sOut );}
+\DoxyCodeLine{186 xbInt16 MAX( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn1, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn2, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{187 xbInt16 MIN( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn1, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn2, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{188 xbInt16 MONTH( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dMonthOut );}
+\DoxyCodeLine{189 xbInt16 RECCOUNT( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dRecOut );}
+\DoxyCodeLine{190 xbInt16 RECNO( \mbox{\hyperlink{classxb_1_1xbDbf}{xbDbf}} * d, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dRecOut );}
+\DoxyCodeLine{191 xbInt16 REPLICATE( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 ulRepCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{192 xbInt16 RIGHT( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 iCharCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{193 xbInt16 RTRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{194 xbInt16 SPACE( xbInt32 lCnt, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{195 xbInt16 SQRT( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dBase, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dSqrRt );}
+\DoxyCodeLine{196 xbInt16 STOD( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&sDateOut );}
+\DoxyCodeLine{197 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{198 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{199 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, xbUInt32 ulDec, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{200 xbInt16 STR( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, xbUInt32 ulDec, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sPadChar, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{201 xbInt16 STRZERO( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dIn, xbUInt32 ulLen, xbUInt32 ulDec, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{202 xbInt16 SUBSTR( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, xbUInt32 ulStartPos, xbUInt32 ulLen, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{203 xbInt16 TRIM( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{204 xbInt16 UPPER( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
+\DoxyCodeLine{205 xbInt16 VAL( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sIn, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOut );}
+\DoxyCodeLine{206 xbInt16 YEAR( \mbox{\hyperlink{classxb_1_1xbDate}{xbDate}} \&dInDate, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} \&dOutYear );}
+\DoxyCodeLine{207 \textcolor{preprocessor}{ \#endif}}
+\DoxyCodeLine{208 }
+\DoxyCodeLine{209 \textcolor{keyword}{protected}:}
+\DoxyCodeLine{210 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbBcd;}
+\DoxyCodeLine{211 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbExp;}
\DoxyCodeLine{212 }
-\DoxyCodeLine{213 \textcolor{keyword}{private}:}
-\DoxyCodeLine{214 }
-\DoxyCodeLine{215 \textcolor{preprocessor}{\#ifdef XB\_LOGGING\_SUPPORT}}
-\DoxyCodeLine{216 \mbox{\hyperlink{namespacexb_a4a31fbe9110c9e55495ce71e642d785c}{xbLog}} *xLog;}
-\DoxyCodeLine{217 \textcolor{preprocessor}{\#endif}}
-\DoxyCodeLine{218 }
-\DoxyCodeLine{219 \};}
+\DoxyCodeLine{213 \textcolor{preprocessor}{ \#ifdef XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{214 \textcolor{keyword}{friend} \textcolor{keyword}{class }xbBlockRead;}
+\DoxyCodeLine{215 \textcolor{preprocessor}{ \#endif }\textcolor{comment}{// XB\_BLOCKREAD\_SUPPORT}}
+\DoxyCodeLine{216 }
+\DoxyCodeLine{217 }
+\DoxyCodeLine{218 xbInt16 \mbox{\hyperlink{classxb_1_1xbXBase_ae52e53340593b4253936c1372ec15ee1}{GetFunctionInfo}}( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sExpLine, \textcolor{keywordtype}{char} \&cReturnType, xbInt16 \&iReturnLenCalc, xbInt32 \&lReturnLenVal ) \textcolor{keyword}{const};}
+\DoxyCodeLine{219 \textcolor{keyword}{static} xbInt16 xbMemcmp( \textcolor{keyword}{const} \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} *s1, \textcolor{keyword}{const} \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} *s2, \textcolor{keywordtype}{size\_t} n );}
\DoxyCodeLine{220 }
-\DoxyCodeLine{221 \} \textcolor{comment}{/* namespace xb */}}
-\DoxyCodeLine{222 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_DBLIST\_H\_\_ */}\textcolor{preprocessor}{}}
+\DoxyCodeLine{221 \textcolor{keyword}{private}:}
+\DoxyCodeLine{222 }
+\DoxyCodeLine{223 \textcolor{preprocessor}{\#ifdef XB\_LOGGING\_SUPPORT}}
+\DoxyCodeLine{224 \mbox{\hyperlink{namespacexb_a4a31fbe9110c9e55495ce71e642d785c}{xbLog}} *xLog;}
+\DoxyCodeLine{225 \textcolor{preprocessor}{\#endif}}
+\DoxyCodeLine{226 }
+\DoxyCodeLine{227 \};}
+\DoxyCodeLine{228 }
+\DoxyCodeLine{229 \} \textcolor{comment}{/* namespace xb */}}
+\DoxyCodeLine{230 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_\_XB\_DBLIST\_H\_\_ */}\textcolor{preprocessor}{}}
\end{DoxyCode}
diff --git a/docs/html/index.html b/docs/html/index.html
index 098c7ea..0e8db33 100755
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -2,7 +2,7 @@
<HTML><TITLE>Xbase DBMS Documentation Table of Contents</TITLE>
<BODY BGCOLOR=#FFFFFF>
<H1><p align="center">Xbase DBMS<br>
-Last Updated 12/21/22<br>Version 4.0.3</p></H1>
+Last Updated 2/11/23<br>Version 4.1.0</p></H1>
<h2>Documentation Table Of Contents</h2>
<h3>Section 1 - Xbase Concepts</h3>
<h4>
@@ -20,12 +20,14 @@ Last Updated 12/21/22<br>Version 4.0.3</p></H1>
<A HREF="xbc12.html">Chapter 12 - Record and File Locking</A><br>
<A HREF="xbc13.html">Chapter 13 - Logfile Support</A><br>
<A HREF="xbc14.html">Chapter 14 - SQL Support</A><br>
-
+<A HREF="xbc15.html">Chapter 15 - Sequential Block Read</A><br>
</h4>
<h3>Section 2 - Classes and Objects</h3>
<h4>
-<A HREF="xbc15.html">Chapter 15 - General Class Information</A><br>
+<A HREF="xbc16.html">Chapter 16 - General Class Information</A><br>
+<A HREF="xbc17.html">Chapter 17 - Class xbSsv - Shared System Values</A><br>
+<A HREF="xbc18.html">Chapter 18 - Class xbXBase - The class that links it all together</A><br>
</h4>
<h3>Section 3 - Appendices</h3>
diff --git a/docs/html/xbac.html b/docs/html/xbac.html
index 0b0fb0b..e022890 100755
--- a/docs/html/xbac.html
+++ b/docs/html/xbac.html
@@ -3,7 +3,7 @@
<TITLE>Xbase DBMS Appendix C</TITLE>
<BODY BGCOLOR=#FFFFFF>
<H2><p align="center">Library Build Compile Options</p></H2>
-<p align="center">Chapter Updated 12/09/22</p><hr>
+<p align="center">Chapter Updated 2/1/23</p><hr>
@@ -26,9 +26,10 @@
<TR><TD>XB_EXPRESSION_SUPPORT</TD><TD>Include Expression support?</TD><TD>Prereq: XB_FUNCTION_SUPPORT<br>and XB_LINKLIST_SUPPORT</TD></TR>
<TR><TD>XB_NDX_SUPPORT</TD><TD>Include NDX Index support?</TD><TD>Prereq: XB_EXPRESSION_SUPPORT</TD></TR>
<TR><TD>XB_MDX_SUPPORT</TD><TD>Include MDX Index support?</TD><TD>Prereq: XB_EXPRESSION_SUPPORT</TD></TR>
-<TR><TD>XB_SQL_SUPPORT</TD><TD>Include SQL support?</TD><TD>Prereq: XB_MEMO_SUPPORT<br>and XB_DBF4_SUPPORT</TR>
+<TR><TD>XB_SQL_SUPPORT</TD><TD>Include SQL support?</TD><TD>Prereq: XB_MEMO_SUPPORT<br>and XB_DBF4_SUPPORT<br>and XB_BLOCKREAD_SUPPORT<br>and XB_EXPRESSION_SUPPORT</TR>
<TR><TD>XB_INF_SUPPORT</TD><TD>Include INF support (Provides auto open functions for NDX indices)</TD></TR>
<TR><TD>XB_FILTER_SUPPORT</TD><TD>Include Filter support</TD><TD>Prereq: XB_EXPRESSION_SUPPORT</TD></TR>
+<TR><TD>XB_BLOCKREAD_SUPPORT</TD><TD>Include Block Read support</TD></TR>
</TABLE></center>
@@ -66,8 +67,10 @@ verify there is a <em>CmakeLists.txt</em> file. That file is the main librbary
<br><br><br>
<hr><br><br><br>
<center><h2>Debug Support <em>(Option: XB_DEBUG_SUPPORT)</em></h2></center>
-The following methods are included from the library when the XB_DEBUG_OPTION is turned on. They
-are mainly used for library debugging purposes and can be safely left turned off.<br><br>
+The following methods are included in the build when the XB_DEBUG_OPTION is turned on and are mainly used for library debugging purposes.
+The option can be safely left turned off.<br>
+The <em>dump</em> routines print output to sdtout or an open log file.<br><br><br>
+
<center><table border=1>
<TR><TH>Method/Function</TH><TH>Description</TH></TR>
<tr><td>xbDate::Dump()</td><td>Dump the xbDate object internals to stdout</td></tr>
@@ -77,6 +80,7 @@ are mainly used for library debugging purposes and can be safely left turned off
<tr><td>xbExp::DumpTree()</td><td>Dump expression token tree</td></tr>
<tr><td>xbExpNode::DumpToken()</td><td>Dump expression node values</td></tr>
<tr><td>xbFile::DumpBlockToDisk</td><td>Dump specified block of data to a disk file</td></tr>
+<tr><td>xbFile::DumpMemToDisk</td><td>Dump specified memory to a disk file</td></tr>
<tr><td>xbIx::DumpNode</td><td>Dump index node header</td></tr>
<tr><td>xbIxMdx::DumpBlock</td><td>Dump MDX index block</td></tr>
<tr><td>xbIxMdx::DumpFreeBlocks</td><td>Dump MDX free block chain</td></tr>
@@ -93,6 +97,7 @@ are mainly used for library debugging purposes and can be safely left turned off
<tr><td>xbMemoDbt4::DumpMemoInternals()</td><td>Dump V4 memo file internals</td></tr>
<tr><td>xbString::Dump()</td><td>Dump string internals</td></tr>
<tr><td>xbString::DumpHex()</td><td>Dump string internals in hex</td></tr>
+<tr><td>xbBlockRead::DumpReadBlockInternals</td><td>Dump sequential read block internals</td></tr>
</table></center>
diff --git a/docs/html/xbae.html b/docs/html/xbae.html
index 5f1dce6..e860911 100755
--- a/docs/html/xbae.html
+++ b/docs/html/xbae.html
@@ -3,7 +3,7 @@
<TITLE>Xbase DBMS Appendix E</TITLE>
<BODY BGCOLOR=#FFFFFF>
<H2><p align="center">Eror Codes</p></H2>
-<p align="center">Chapter Updated 12/09/22</p><hr>
+<p align="center">Chapter Updated 1/31/23</p><hr>
<h3>Error Codes and Error Processing</h3>
@@ -55,11 +55,13 @@ Error codes are defined in the xbretcod.h file.<br><br><br>
<TR><TD> XB_BOF </TD><TD> -215 </TD><TD> file </TD></TR>
<TR><TD> XB_INVALID_BLOCK_SIZE </TD><TD> -216 </TD><TD> file </TD></TR>
<TR><TD> XB_INVALID_BLOCK_NO </TD><TD> -217 </TD><TD> file </TD></TR>
-<TR><TD> XB_INVALID_RECORD </TD><TD> -218 </TD><TD> file </TD></TR>
+<TR><TD> XB_INVALID_RECORD </TD><TD> -218 </TD><TD> file </TD></TR>
<TR><TD> XB_DELETE_FAILED </TD><TD> -219 </TD><TD> file </TD></TR>
<TR><TD> XB_INVALID_TABLE_NAME </TD><TD> -220 </TD><TD> file </TD></TR>
<TR><TD> XB_EMPTY </TD><TD> -221 </TD><TD> file </TD></TR>
<TR><TD> XB_LIMIT_REACHED </TD><TD> -222 </TD><TD> file </TD></TR>
+<TR><TD> XB_BLOCKREAD_NOT_ENABLED </TD><TD> -223 </TD><TD> file </TD></TR>
+<TR><TD> XB_DIRECTORY_ERROR </TD><TD> -224 </TD><TD file </TD></TR>
<TR><TD> XB_INVALID_FIELD_TYPE </TD><TD> -300 </TD><TD> field </TD></TR>
<TR><TD> XB_INVALID_FIELD_NO </TD><TD> -301 </TD><TD> field </TD></TR>
<TR><TD> XB_INVALID_DATA </TD><TD> -302 </TD><TD> field </TD></TR>
diff --git a/docs/html/xbc15.html b/docs/html/xbc15.html
index 136724d..fde33b8 100755
--- a/docs/html/xbc15.html
+++ b/docs/html/xbc15.html
@@ -1,51 +1,96 @@
+
<!DOCTYPE HTML PUBLIC>
<HTML>
<TITLE>Xbase DBMS Chapter 15</TITLE>
<BODY BGCOLOR=#FFFFFF>
-<H2><p align="center">Class Inventory</p></H2>
-<p align="center">Chapter Updated 12/24/22</p><hr>
-<br>
-<center><h3>Class Descriptions</h3></center>
-
-<center>
-<table border=1>
-<tr><th>Class</th><th>Description</th></tr>
-<tr><td>xbBcd</td><td>Supports binary coded deciemal data</td></tr>
-<tr><td>xbDate</td><td>Support date operations on a given date formatted as YYYYMMDD</td></tr>
-<tr><td>xbDbf</td><td>Base class for DBF file handling. If you are adding support for a new file type, <br>derive new file type class from this.</td></tr>
-<tr><td>xbDbf3</td><td>Derived from xbDbf, supports DBase V3 files</td></tr>
-<tr><td>xbDbf4</td><td>Derived from xbDbf, supports DBase V4 files</td></tr>
-<tr><td>xbExp</td><td>Class for supporting expression logic</td></tr>
-<tr><td>xbExpNode</td><td>Class definition of a single node, utilized by xbExp</td></tr>
-<tr><td>xbFile</td><td>Main file class. If you are porting this library to another platform, start here</td></tr>
-<tr><td>xbFilter</td><td>Supports filters</td></tr>
-<tr><td>xbIx</td><td>Base class for index file support. If you are adding support for a new index type, <br>derive new index type class from this.</td></tr>
-<tr><td>xbIxNdx</td><td>Derived from xbIx, supports NDX style indices.</td></tr>
-<tr><td>xbIxMdx</td><td>Derived from xbIx, supports MDX style indices</td></tr>
-<tr><td>xbLinkList</td><td>Class supporting linked list functionality</td></tr>
-<tr><td>xbLinkListOrd</td><td>Class supporting ordered linked list functionality</td></tr>
-<tr><td>xbLinkListNode</td><td>Class defining one node, used by xbLinkList and xbLinkListOrd</td></tr>
-<tr><td>xbLog</td><td>Class supporting general log file activity</td></tr>
-<tr><td>xbMemo</td><td>Base class for supporting memo (.DBT) files. If you are adding support for a new memo type, <br>derive new memo type class from this.</td></tr>
-<tr><td>xbMemoDbt3</td><td>Derived from xbMemo, supports V3 Memo files</td></tr>
-<tr><td>xbMemoDbt4</td><td>Derived from xbMemo, supports V3 Memo files</td></tr>
-<tr><td>xbSql</td><td>Supports SQL access</td></tr>
-<tr><td>xbSsv</td><td>Base class, shared system values</td></tr>
-<tr><td>xbString</td><td>String handling class</td></tr>
-<tr><td>xbTag</td><td>Class to support index tags</td></tr>
-<tr><td>xbTblMgr</td><td>Class used internally in the library for managing multiple open files/tables</td></tr>
-<tr><td>xbUda</td><td>Class for supporting fields for the xbSql functions. Stands for User data area</td></tr>
-<tr><td>xbXBase</td><td>Class to tie everything together. Every application program starts with one of these</td></tr>
-</table>
-</center>
+<H2><p align="center">Block Read Functionality</p></H2>
+<p align="center">Chapter Updated 2/1/23</p><hr>
-<hr>
-<br><br>
-Fix me...
-<p><img src="Xbase64ClassDiagram.jpg"><br>
+<h3>Block Reads</h3>
+
+As of release 4.1.1, the Xbase library includes functionality for reading a DBF file in blocks, rather than one record at a time.<br><br>
+
+This functionality can be used to improve application performance in situations where a data file is being read sequentially.
+For situations where records are retrieved randomly from the file, enabling this probably won't help much. In short, this
+can be turned on when accessing a file sequentially and should be left off when not processing sequentially.<br><br>
+
+The logic is all handled internally within the library, all that is needed is to enable it and the library handles the rest.<br><br>
+
+<h3>One Caveat</h3>
+This functionality was originally designed with reporting in mind and doesn't currently have any auto locking associated with it.
<br><br>
+
+
+<h3>Sample Code</h3>
+See example code below for how to enable and disable the feature.
+
+
+<hr>
+
+#include "xbase.h"<br>
+using namespace xb;<br>
+<br>
+int main(int ac,char** av)<br>
+{<br>
+ xbXBase x;<br>
+ xbInt16 iRc;<br>
+ x.EnableMsgLogging();<br>
+ x.SetLogSize( 1000000L );<br>
+<br>
+ if (ac <= 1) {<br>
+ std::cout << "Usage: xb_dumprecs filename..." << std::endl;<br>
+ return 1;<br>
+ }<br>
+<br>
+ xbDbf *MyFile = NULL;<br>
+ if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){<br>
+ std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;<br>
+ x.DisplayError( iRc );<br>
+ return 0;<br>
+ }<br>
+<br>
+// std::cout << "Processing file sequentially from beginning..." << std::endl;<br>
+<br>
+<br>
+<b>
+ // turn on Block Read Processing<br>
+ #ifdef XB_BLOCKREAD_SUPPORT<br>
+ MyFile->EnableBlockReadProcessing();<br>
+ #endif<br>
+</b>
+<br>
+ xbUInt32 j = 0;<br>
+ xbUInt32 ulRecCnt = 0;<br>
+<br>
+ iRc = MyFile->GetRecordCnt( ulRecCnt );<br>
+<br>
+ if( iRc < XB_NO_ERROR )<br>
+ return iRc;<br>
+ while( j < ulRecCnt ){<br>
+ if( j == 0 )<br>
+ iRc = MyFile->DumpRecord(++j, 2, 2 );<br>
+ else<br>
+ iRc = MyFile->DumpRecord(++j, 2, 1 );<br>
+ if( iRc != XB_NO_ERROR ){<br>
+ x.DisplayError( iRc );<br>
+ return 1;<br>
+ }<br>
+ }<br>
+ std::cout << j << " Records processed." << std::endl;<br>
+<br>
+<br><b>
+ // optionally turn off Block Read Processing<br>
+ #ifdef XB_BLOCKREAD_SUPPORT<br>
+ MyFile->DisableBlockReadProcessing();<br>
+ #endif<br></b>
+<br>
+ MyFile->Close();<br>
+ return 0;<br>
+}<br>
+<br>
+
<hr>
-<p><img src="xbase.jpg"><br><hr>
+<p><img src="xbase.jpg"><hr>
</BODY>
</HTML>
diff --git a/docs/html/xbc16.html b/docs/html/xbc16.html
new file mode 100755
index 0000000..873264d
--- /dev/null
+++ b/docs/html/xbc16.html
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML PUBLIC>
+<HTML>
+<TITLE>Xbase DBMS Chapter 16</TITLE>
+<BODY BGCOLOR=#FFFFFF>
+<H2><p align="center">Class Inventory</p></H2>
+<p align="center">Chapter Updated 2/1/23</p><hr>
+<br>
+<center><h3>Class Descriptions</h3></center>
+
+<center>
+<table border=1>
+<tr><th>Class</th><th>Description</th></tr>
+<tr><td>xbBcd</td><td>Supports binary coded decimal data</td></tr>
+<tr><td>xbBlockRead<td>Supports block read functionality for improved sequential file access performance.</td></tr>
+<tr><td>xbDate</td><td>Support date operations on a given date formatted as YYYYMMDD</td></tr>
+<tr><td>xbDbf</td><td>Base class for DBF file handling. If you are adding support for a new file type, <br>derive new file type class from this.</td></tr>
+<tr><td>xbDbf3</td><td>Derived from xbDbf, supports DBase V3 files</td></tr>
+<tr><td>xbDbf4</td><td>Derived from xbDbf, supports DBase V4 files</td></tr>
+<tr><td>xbExp</td><td>Class for supporting expression logic</td></tr>
+<tr><td>xbExpNode</td><td>Class definition of a single node, utilized by xbExp</td></tr>
+<tr><td>xbFile</td><td>Main file class. If you are porting this library to another platform, start here</td></tr>
+<tr><td>xbFilter</td><td>Supports filters</td></tr>
+<tr><td>xbIx</td><td>Base class for index file support. If you are adding support for a new index type, <br>derive new index type class from this.</td></tr>
+<tr><td>xbIxNdx</td><td>Derived from xbIx, supports NDX style indices.</td></tr>
+<tr><td>xbIxMdx</td><td>Derived from xbIx, supports MDX style indices</td></tr>
+<tr><td>xbLinkList</td><td>Class supporting linked list functionality</td></tr>
+<tr><td>xbLinkListOrd</td><td>Class supporting ordered linked list functionality</td></tr>
+<tr><td>xbLinkListNode</td><td>Class defining one node, used by xbLinkList and xbLinkListOrd</td></tr>
+<tr><td>xbLog</td><td>Class supporting general log file activity</td></tr>
+<tr><td>xbMemo</td><td>Base class for supporting memo (.DBT) files. If you are adding support for a new memo type, <br>derive new memo type class from this.</td></tr>
+<tr><td>xbMemoDbt3</td><td>Derived from xbMemo, supports V3 Memo files</td></tr>
+<tr><td>xbMemoDbt4</td><td>Derived from xbMemo, supports V3 Memo files</td></tr>
+<tr><td>xbSql</td><td>Supports SQL access</td></tr>
+<tr><td>xbSsv</td><td>Base class, shared system values</td></tr>
+<tr><td>xbString</td><td>String handling class</td></tr>
+<tr><td>xbTag</td><td>Class to support index tags</td></tr>
+<tr><td>xbTblMgr</td><td>Class used internally in the library for managing multiple open files/tables</td></tr>
+<tr><td>xbUda</td><td>Class for supporting fields for the xbSql functions. Stands for User data area</td></tr>
+<tr><td>xbXBase</td><td>Class to tie everything together. Every application program starts with one of these</td></tr>
+</table>
+</center>
+
+<hr>
+<br><br>
+Fix me...
+<p><img src="Xbase64ClassDiagram.jpg"><br>
+
+<br><br>
+<hr>
+<p><img src="xbase.jpg"><br><hr>
+</BODY>
+</HTML>
diff --git a/docs/html/xbc17.html b/docs/html/xbc17.html
new file mode 100755
index 0000000..c0b2208
--- /dev/null
+++ b/docs/html/xbc17.html
@@ -0,0 +1,219 @@
+<!DOCTYPE HTML PUBLIC>
+<HTML>
+<TITLE>Xbase DBMS Chapter 17</TITLE>
+<BODY BGCOLOR=#FFFFFF>
+<H2><p align="center">Class xbSsv</p></H2>
+<p align="center">Chapter Updated 2/7/23</p><hr>
+
+<h3>Class xbSsv - Shared System Values.</h3>
+
+Base class xbSsv is used for maintaining static variables used system
+wide by the XBase library routines and is a base class that is used by the xbXBase class.
+See the diagram in chapter 15 to gain an understanding of where the xbSsv class sits in relation to the
+other classes. Accessing the methods in this class are done via the xbXBase class instance.<br><br>
+Additionally, there are a few other misc routines contained in this class that are available to all
+subordinate classes/objects.
+<br><br><br><br>
+
+
+<center>
+<table border=1>
+<tr><th width=40%>Method</th><th>Description</th></tr>
+
+<tr><td>void BitDump( unsigned char c ) const<br>void BitDump( char c ) const</td><td>These routines dump the bits for a specified char field to stdout.</td></tr>
+<tr><td>xbBool BitSet( unsigned char c, xbInt16 iBitNo ) const</td><td>This routine will set a specified bit in a char field.</td></tr>
+<tr><td>void DisplayError( xbInt16 ErrorCode ) const</td><td>This routine prints a description for a specifed error to stdout.</td></tr>
+
+<tr><td>xbString& GetDataDirectory() const<br>void SetDataDirectory( const xbString &sDataDirectory )</td>
+ <td>Get and Set the current directory where the library routines expect to find the .DBF, .DBT, .NDX and .MDX files.</td></tr>
+
+<tr><td>xbString& GetDefaultDateFormat() const<br>void SetDefaultDateFormat( const xbString &sDefaultDateFormat )</td>
+ <td>Get and Set the current default date format used by the date formatting routines if no format specifier is provided.</td></tr>
+
+<tr><td>xbInt16 GetEndianType() const</td><td>Returns the current Endian type of the machine the library is operating on.</td></tr>
+<tr><td>const char *GetErrorMessage( xbInt16 ErrorCode ) const</td><td>Returns a pointer to an error message for a given error number.</td></tr>
+
+<tr><td>xbBool GetDefaultAutoCommit() const<br>void SetDefaultAutoCommit( xbBool bDefaultAutoCommit )</td>
+ <td>Get and Set the default auto commit status. If auto commit is on, the library will automatically post any updates to the database when navigating away from an updated record.</td></tr>
+
+<tr><td>xbBool GetHomeDir( xbString &sHomeDirOut )</td><td>Get the home directory for the current user.</td></tr>
+
+<tr><td>xbString& GetLogDirectory() const<br>void SetLogDirectory( const xbString &sLogDirectory )</td>
+ <td>Get and set the directory location for any system generated logfiles.</td></tr>
+<tr><td>xbString& GetLogFileName() const</td><td>Returns the default log file name.</td></tr>
+
+
+<tr><td>xbBool GetMultiUser() const<br>void SetMultiUser( xbBool bMultiUser )</td>
+ <td>Get and set multi user status. This turns the auto locking on and off. For better performance in single user applications, turn multuser off.</td></tr>
+
+<tr><td>xbInt16 GetUniqueKeyOpt() const<br>xbInt16 SetUniqueKeyOpt( xbInt16 iUniqueKeyOpt )</td>
+ <td>Determines library behavior for unique key processing. The original Dbase (tm) product allowed duplicate recrds in the .DBF file when the unique option was specified for a given index tag.
+ The Xbase library supports either the original DBase behavior (XB_EMULATE_DBASE), or the prevention of duplicate records for duplicate keys (XB_HALT_ON_DUPKEY).</td></tr>
+
+
+<tr><td>xbInt16 GetDefaultLockRetries() const<br>void SetDefaultLockRetries( xbInt16 iRetryCount )</td>
+ <td>Get and Set the number of times to attempt a lock</td></tr>
+
+<tr><td>xbInt32 GetDefaultLockWait() const<br>void SetDefaultLockWait( xbInt32 lRetryWait )
+ </td><td>Get and Set the wait time between lock attempts.</td></tr>
+
+<tr><td>xbInt16 GetDefaultLockFlavor() const<br>void SetDefaultLockFlavor( xbInt16 iLockFlavor )
+ </td><td>For future use. With current versions, only DBase (TM) locking offsets are supported.</td></tr>
+
+<tr><td>xbBool GetDefaultAutoLock() const<br>void SetDefaultAutoLock( xbBool bAutoLock )<br>void EnableDefaultAutoLock()<br>void DisableDefaultAutoLock()
+ </td><td>Set, Get or update Auto Lock Status</td></tr>
+
+
+<tr><td>xbInt16 GetCreateMdxBlockSize() const<br>xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize )
+ </td><td>Set or get MDX Index block size. Must be a multiple of 512.</td></tr>
+
+<tr><td>xbUInt32 GetDefaultBlockReadSize() const<br>void SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize )
+ </td><td>Set or Get the default block size for Block Read functionality. Block reading is used to improve sequentential access performance.</td></tr>
+</table>
+
+<br><br>
+
+<h3>Example program using xbSsv methods</h3>
+</center>
+<xmp>
+/* xb_ex_ssv.cpp
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2021,2022,2023 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+This program demonstrates using functionality of the xbSsv class (Shared system values)
+
+*/
+
+#include "xbase.h"
+
+using namespace xb;
+
+int main( int ac, char ** av ){
+
+ xbXBase x; // set up xbase for business
+ xbString sMsg; // a message string
+
+ sMsg.Sprintf( "Program [%s] initializing...", av[0] );
+ std::cout << sMsg.Str() << std::endl;
+
+ // example code to set up log file usage
+ #ifdef XB_LOGGING_SUPPORT
+ char cSeperator; // is this a unix (/) or windows (\) file system
+ xbString sLog; // general string for log file activities
+ sLog = x.GetLogFqFileName().Str(); // get the system default log file name
+ std::cout << "System default logfile is [" << sLog.Str() << "]" << std::endl;
+
+ cSeperator = sLog.GetPathSeparator(); // get the seperator from
+ std::cout << "Path seperator = [" << cSeperator << "]" << std::endl;
+
+ sLog.Sprintf( "..%c", cSeperator );
+ x.SetLogDirectory( sLog );
+ std::cout << "sLog = [" << sLog.Str() << "]\n";
+
+ sLog = x.GetLogFqFileName().Str(); // get the system default log file name
+ std::cout << "New logfile is [" << sLog.Str() << "]" << std::endl;
+
+ // turn on logging after file name set
+ x.EnableMsgLogging();
+ #endif // XB_LOGGING_SUPPORT
+
+ // const char *GetErrorMessage( xbInt16 ErrorCode ) const;
+ // void DisplayError( xbInt16 ErrorCode ) const;
+ std::cout << "DisplayError( -100 ) - ";
+ x.DisplayError( -100 );
+ // << "]" << std::endl;
+
+
+ // void SetDefaultDateFormat( const xbString &sDefaultDateFormat );
+ // xbString& GetDefaultDateFormat() const;
+ std::cout << "GetDefaultDateFormat() - " << x.GetDefaultDateFormat() << std::endl;
+
+ // void SetDataDirectory ( const xbString &sDataDirectory );
+ // xbString& GetDataDirectory() const;
+ std::cout << "GetDataDirectory() - " << x.GetDataDirectory() << std::endl;
+
+ // xbInt16 GetEndianType() const;
+ if( x.GetEndianType() == 'L' )
+ std::cout << "Little Endian Architecture." << std::endl;
+ else
+ std::cout << "Bid Endian Architecture." << std::endl;
+
+ //xbBool GetDefaultAutoCommit() const;
+ //void SetDefaultAutoCommit( xbBool bDefaultAutoCommit );
+ if( x.GetDefaultAutoCommit())
+ std::cout << "AutoCommit is on." << std::endl;
+ else
+ std::cout << "AutoCommit is off." << std::endl;
+
+ //xbBool GetMultiUser () const;
+ //void SetMultiUser ( xbBool bMultiUser );
+ if( x.GetMultiUser())
+ std::cout << "Multi user (locking) is enabled." << std::endl;
+ else
+ std::cout << "Multi user (locking) not enabled." << std::endl;
+
+ #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
+ // xbInt16 GetUniqueKeyOpt () const;
+ // xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );
+ // XB_HALT_ON_DUPKEY
+ // XB_EMULATE_DBASE
+ if( x.GetUniqueKeyOpt() == XB_HALT_ON_DUPKEY )
+ std::cout << "UniqueKey option - XB_HALT_ON_DUPKEY" << std::endl;
+ else if( x.GetUniqueKeyOpt() == XB_EMULATE_DBASE )
+ std::cout << "UniqueKey option - XB_EMULATE_DBASE" << std::endl;
+ #endif // (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
+
+ #ifdef XB_LOCKING_SUPPORT
+ //xbInt16 GetDefaultLockRetries () const;
+ //void SetDefaultLockRetries ( xbInt16 iRetryCount );
+ //xbInt32 GetDefaultLockWait () const;
+ //void SetDefaultLockWait ( xbInt32 lRetryWait );
+ //xbInt16 GetDefaultLockFlavor () const;
+ //void SetDefaultLockFlavor ( xbInt16 iLockFlavor );
+ //xbBool GetDefaultAutoLock () const;
+ //void SetDefaultAutoLock ( xbBool bAutoLock );
+ //void EnableDefaultAutoLock ();
+ //void DisableDefaultAutoLock ();
+
+ std::cout << "GetDefaultLockRetries() - " << x.GetDefaultLockRetries() << std::endl;
+ std::cout << "GetDefaultLockWait() - " << x.GetDefaultLockWait() << std::endl;
+ std::cout << "GetDefaultAutoLock() - " << x.GetDefaultAutoLock() << std::endl;
+ #endif // XB_LOCKING_SUPPORT
+
+ #ifdef XB_MDX_SUPPORT
+ // xbInt16 GetCreateMdxBlockSize() const;
+ // xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );
+ std::cout << "GetCreateMdxBlockSize() - " << x.GetCreateMdxBlockSize() << std::endl;
+ #endif // XB_MDX_SUPPORT
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ // xbUInt32 GetDefaultBlockReadSize() const;
+ // void SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize );
+ std::cout << "GetDefaultBlockReadSize() - " << x.GetDefaultBlockReadSize() << std::endl;
+ #endif // XB_BLOCKREAD_SUPPORT
+
+ //xbBool BitSet ( unsigned char c, xbInt16 iBitNo ) const;
+ //void BitDump ( unsigned char c ) const;
+ //void BitDump ( char c ) const;
+ std::cout << "BitDump( 'A' ) - ";
+ x.BitDump( 'A' );
+
+ return 0;
+}
+
+
+</xmp>
+
+<br><br>
+<hr>
+<p><img src="xbase.jpg"><br><hr>
+</BODY>
+</HTML>
diff --git a/docs/html/xbc18.html b/docs/html/xbc18.html
new file mode 100755
index 0000000..36f3b50
--- /dev/null
+++ b/docs/html/xbc18.html
@@ -0,0 +1,252 @@
+<!DOCTYPE HTML PUBLIC>
+<HTML>
+<TITLE>Xbase DBMS Chapter 18</TITLE>
+<BODY BGCOLOR=#FFFFFF>
+<H2><p align="center">Class xbXBase</p></H2>
+<p align="center">Chapter Updated 2/7/23</p><hr>
+
+<h3>Class xbXBase - Core Level Class</h3>
+
+
+The xbXBase class is the core class that needs to be in every application program.
+Established an instance of class xbXBase before any other Xbase calls are made.
+
+<i>xbXBase x</i>
+
+<br><br>
+xbXBase is derived from base classes xbTblMgr and xbSsv.
+<br><br><br><br>
+
+
+
+
+
+<center>
+<table border=1>
+<tr><th width=40%>Method</th><th>Description</th><th>Category</th></tr>
+
+<tr><td>xbInt16 CloseAllTables()</td><td>Close all open tables.</td><td>Table</tr>
+
+<tr><td>xbInt16 OpenHighestVersion( const xbString &sTableName, const xbString &sAlias, xbDbf &dbf, int dummy )</td><td>Open highest version available for sTableName.</td><td>Table</tr>
+<tr><td>xbInt16 OpenHighestVersion( const xbString &sTableName, const xbString &sAlias, xbDbf **dbf )</td><td>Open highest version available for sTableName.</td><td>Table</tr>
+<tr><td>xbDbf * Open( const xbString &sTableName, xbInt16 &iRc )</td><td>Open the highest available version of the dbf file. Defaults to XB_READ_WRITE and XB_MULTI_USER mode.</td><td>Table</tr>
+<tr><td>xbDbf * Open( const xbString &sTableName, const xbString &sAlias, xbInt16 iOpenMode, xbInt16 iShareMode, xbInt16 iVersion, xbInt16 &iRc )</td><td>Open table.</td><td>Table</tr>
+
+<tr><td colspan=3><hr></td></tr>
+<tr><td>void DisableMsgLogging()</td><td>Disable logging routines.</td><td>Logging</td></tr>
+<tr><td>void EnableMsgLogging ()</td><td>Enable logging routines.</td><td>Logging</td></tr>
+<tr><td>xbInt16 FlushLog()</td><td>Flush any queued logfile updates to disk.</td><td>Logging</td></tr>
+<tr><td>const xbString &GetLogDirectory () const</td><td>Get the current logfile directory.</td><td>Logging</td></tr>
+<tr><td>const xbString &GetLogFileName () const</td><td>Get the current logfile name.</td><td>Logging</td></tr>
+<tr><td>const xbString &GetLogFqFileName() const</td><td>Get fully qualified logfile name.</td><td>Logging</td></tr>
+<tr><td>xbBool GetLogStatus () const</td><td>Get the logging status.</td><td>Logging</td></tr>
+<tr><td>void SetLogDirectory( const xbString &sLogFileDirectory )</td><td>Set the log directory. Must be done while logging is off.</td><td>Logging</td></tr>
+<tr><td>void SetLogFileName( const xbString &sLogFileName )</td><td>Set the log file name. Must be done while logging is off.</td><td>Logging</td></tr>
+<tr><td>void SetLogSize( size_t lSize )</td><td>Set the logfile size. After the size is reached, the log file roll.</td><td>Logging</td></tr>
+<tr><td>xbInt16 WriteLogBytes ( xbUInt32 lCnt, const char *p )</td><td>Write lCnt bytes pointed to by pointer p to the logfile.</td><td>Logging</td></tr>
+<tr><td>xbInt16 WriteLogMessage( const xbString &sLogMessage, xbInt16 iOutputOpt = 0 )</td><td>Write a string to the logfile.</td><td>Logging</td></tr>
+
+<tr><td colspan=3><hr></td></tr>
+<tr><td>xbInt16 xbXBase::GetCmdLineOpt( xbInt32 lArgc, char **sArgv, xbString &sOptRqst, xbString &sParmOut )<br>
+xbXBase::GetCmdLineOpt( xbInt32 lArgc, char **sArgv, const char *sOptRqst, xbString &sParmOut )</td><td>Parse command line values seeking given parameter info.</td><td>Misc</td></tr>
+
+<tr><td>void xbSleep( xbInt32 lMillisecs )</td><td>Sleep command, used mainly in lock commands for waiting between retries.</td><td>Misc</td></td></tr>
+
+<tr><td colspan=3><hr></td></tr>
+<tr><td>xbInt16 ABS( xbDouble dIn, xbDouble &dOut )</td><td>Dbase ABS function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 ALLTRIM( const xbString &sIn, xbString &sOut )</td><td>Dbase ALLTRIM function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 ASC( const xbString &s, xbDouble &dAscOut )</td><td>Dbase ASC function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 AT( const xbString &sSrchFor, const xbString &sBase, xbDouble &dPos )</td><td>Dbase AT function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 CDOW( xbDate &dInDate, xbString &sOutDow )</td><td>Dbase CDOW function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 CHR( xbDouble dAsciCd, xbString &sOut )</td><td>Dbase CHR function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 CMONTH( xbDate &dInDate, xbString &sOutMonth )</td><td>Dbase CMONTH function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 CTOD( const xbString &sInDate, xbDate &dOutDate )</td><td>Dbase CTOD function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DATE( xbDate &dOutDate )</td><td>Dbase DATE function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DAY( const xbDate &dInDate, xbDouble &dOutDay )</td><td>Dbase DAY function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DEL( xbDbf * d, xbString &sOut, xbInt16 iRecBufSw = 0 )</td><td>Dbase DEL function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DELETED( xbDbf * d, xbBool &bOut, xbInt16 iRecBufSw = 0 )</td><td>Dbase DELETED function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DESCEND( const xbString &sIn,xbString &sOut )<br>xbInt16 DESCEND( const xbDate &dInDate, xbDate &dOutDate )<br>xbInt16 DESCEND( const xbDouble dIn, xbDouble &dsOut )</td><td>Dbase DESCEND function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DOW( const xbDate &sInDate, xbDouble &dDowOut )</td><td>Dbase DOW function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DTOC( xbDate &dInDate, xbString &sOutFmtDate )</td><td>Dbase DTOC function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 DTOS( xbDate &dInDate, xbString &sOutFmtDate )</td><td>Dbase DTOS function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 EXP( xbDouble dIn, xbDouble &dOut )</td><td>Dbase EXP function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 IIF( xbBool bResult, const xbString &sTrueResult, const xbString &sFalseResult, xbString &sResult )</td><td>Dbase IIF function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 INT( xbDouble dIn, xbDouble &dOut )</td><td>Dbase INT function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 ISALPHA( const xbString &s, xbBool &bResult )</td><td>Dbase ISALPHA function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 ISLOWER( const xbString &s, xbBool &bResult )</td><td>Dbase ISLOWER function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 ISUPPER( const xbString &s, xbBool &bResult )</td><td>Dbase ISUPPER function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 LEFT( const xbString &sIn, xbUInt32 lCharCnt, xbString &sOut )</td><td>Dbase LEF function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 LEN( const xbString &sIn, xbDouble &dLen )</td><td>Dbase LEN function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 LOG( xbDouble dIn, xbDouble &dOut )</td><td>Dbase LOG function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 LOWER( const xbString &sIn, xbString &sOut )</td><td>Dbase LOWER function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 LTRIM( const xbString &sIn, xbString & sOut )</td><td>Dbase LTRIM function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 MAX( xbDouble dIn1, xbDouble dIn2, xbDouble &dOut )</td><td>Dbase MAX function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 MIN( xbDouble dIn1, xbDouble dIn2, xbDouble &dOut )</td><td>Dbase MIN function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 MONTH( xbDate &dInDate, xbDouble &dMonthOut )</td><td>Dbase MONTH function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 RECCOUNT( xbDbf * d, xbDouble &dRecOut )</td><td>Dbase RECCOUNT function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 RECNO( xbDbf * d, xbDouble &dRecOut )</td><td>Dbase RECNO function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 REPLICATE( const xbString &sIn, xbUInt32 ulRepCnt, xbString &sOut )</td><td>Dbase REPLICATE function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 RIGHT( const xbString &sIn, xbUInt32 iCharCnt, xbString &sOut )</td><td>Dbase RIGHT function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 RTRIM( const xbString &sIn, xbString &sOut )</td><td>Dbase RTRIM function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 SPACE( xbInt32 lCnt, xbString &sOut )</td><td>Dbase SPACE function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 SQRT( xbDouble dBase, xbDouble &dSqrRt )</td><td>Dbase SQRT function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 STOD( const xbString &sIn, xbDate &sDateOut )</td><td>Dbase STOD function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 STR( xbDouble dIn, xbString &sOut )</td><td>Dbase function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 STR( xbDouble dIn, xbUInt32 ulLen, xbString &sOut )<br>
+ xbInt16 STR( xbDouble dIn, xbUInt32 ulLen, xbUInt32 ulDec, xbString &sOut )<br>
+ xbInt16 STR( xbDouble dIn, xbUInt32 ulLen, xbUInt32 ulDec, xbString &sPadChar, xbString &sOut )</td><td>Dbase STR function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 STRZERO( xbDouble dIn, xbUInt32 ulLen, xbUInt32 ulDec, xbString &sOut )</td><td>Dbase STRZERO function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 SUBSTR( const xbString &sIn, xbUInt32 ulStartPos, xbUInt32 ulLen, xbString &sOut )</td><td>Dbase SUBSTR function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 TRIM( const xbString &sIn, xbString &sOut )</td><td>Dbase TRIM function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 UPPER( const xbString &sIn, xbString &sOut )</td><td>Dbase UPPER function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 VAL( const xbString &sIn, xbDouble &dOut )</td><td>Dbase VAL function.</td><td>Expression</td></tr>
+<tr><td>xbInt16 YEAR( xbDate &dInDate, xbDouble &dOutYear )</td><td>Dbase YEAR function.</td><td>Expression</td></tr>
+</table>
+
+<br><br>
+<hr>
+
+<h3>Example program using xbXbase methods</h3>
+</center>
+<xmp>
+/* xb_ex_ssv.cpp
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2021,2022,2023 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+This program demonstrates using functionality of the xbSsv class (Shared system values)
+
+*/
+
+#include "xbase.h"
+
+using namespace xb;
+
+int main( int ac, char ** av ){
+
+ xbXBase x; // set up xbase for business
+ xbString sMsg; // a message string
+
+ sMsg.Sprintf( "Program [%s] initializing...", av[0] );
+ std::cout << sMsg.Str() << std::endl;
+
+ // example code to set up log file usage
+ #ifdef XB_LOGGING_SUPPORT
+ char cSeperator; // is this a unix (/) or windows (\) file system
+ xbString sLog; // general string for log file activities
+ sLog = x.GetLogFqFileName().Str(); // get the system default log file name
+ std::cout << "System default logfile is [" << sLog.Str() << "]" << std::endl;
+
+ cSeperator = sLog.GetPathSeparator(); // get the seperator from
+ std::cout << "Path seperator = [" << cSeperator << "]" << std::endl;
+
+ sLog.Sprintf( "..%c", cSeperator );
+ x.SetLogDirectory( sLog );
+ std::cout << "sLog = [" << sLog.Str() << "]\n";
+
+ sLog = x.GetLogFqFileName().Str(); // get the system default log file name
+ std::cout << "New logfile is [" << sLog.Str() << "]" << std::endl;
+
+ // turn on logging after file name set
+ x.EnableMsgLogging();
+ #endif // XB_LOGGING_SUPPORT
+
+ // const char *GetErrorMessage( xbInt16 ErrorCode ) const;
+ // void DisplayError( xbInt16 ErrorCode ) const;
+ std::cout << "DisplayError( -100 ) - ";
+ x.DisplayError( -100 );
+ // << "]" << std::endl;
+
+
+ // void SetDefaultDateFormat( const xbString &sDefaultDateFormat );
+ // xbString& GetDefaultDateFormat() const;
+ std::cout << "GetDefaultDateFormat() - " << x.GetDefaultDateFormat() << std::endl;
+
+ // void SetDataDirectory ( const xbString &sDataDirectory );
+ // xbString& GetDataDirectory() const;
+ std::cout << "GetDataDirectory() - " << x.GetDataDirectory() << std::endl;
+
+ // xbInt16 GetEndianType() const;
+ if( x.GetEndianType() == 'L' )
+ std::cout << "Little Endian Architecture." << std::endl;
+ else
+ std::cout << "Bid Endian Architecture." << std::endl;
+
+ //xbBool GetDefaultAutoCommit() const;
+ //void SetDefaultAutoCommit( xbBool bDefaultAutoCommit );
+ if( x.GetDefaultAutoCommit())
+ std::cout << "AutoCommit is on." << std::endl;
+ else
+ std::cout << "AutoCommit is off." << std::endl;
+
+ //xbBool GetMultiUser () const;
+ //void SetMultiUser ( xbBool bMultiUser );
+ if( x.GetMultiUser())
+ std::cout << "Multi user (locking) is enabled." << std::endl;
+ else
+ std::cout << "Multi user (locking) not enabled." << std::endl;
+
+ #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
+ // xbInt16 GetUniqueKeyOpt () const;
+ // xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );
+ // XB_HALT_ON_DUPKEY
+ // XB_EMULATE_DBASE
+ if( x.GetUniqueKeyOpt() == XB_HALT_ON_DUPKEY )
+ std::cout << "UniqueKey option - XB_HALT_ON_DUPKEY" << std::endl;
+ else if( x.GetUniqueKeyOpt() == XB_EMULATE_DBASE )
+ std::cout << "UniqueKey option - XB_EMULATE_DBASE" << std::endl;
+ #endif // (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
+
+ #ifdef XB_LOCKING_SUPPORT
+ //xbInt16 GetDefaultLockRetries () const;
+ //void SetDefaultLockRetries ( xbInt16 iRetryCount );
+ //xbInt32 GetDefaultLockWait () const;
+ //void SetDefaultLockWait ( xbInt32 lRetryWait );
+ //xbInt16 GetDefaultLockFlavor () const;
+ //void SetDefaultLockFlavor ( xbInt16 iLockFlavor );
+ //xbBool GetDefaultAutoLock () const;
+ //void SetDefaultAutoLock ( xbBool bAutoLock );
+ //void EnableDefaultAutoLock ();
+ //void DisableDefaultAutoLock ();
+
+ std::cout << "GetDefaultLockRetries() - " << x.GetDefaultLockRetries() << std::endl;
+ std::cout << "GetDefaultLockWait() - " << x.GetDefaultLockWait() << std::endl;
+ std::cout << "GetDefaultAutoLock() - " << x.GetDefaultAutoLock() << std::endl;
+ #endif // XB_LOCKING_SUPPORT
+
+ #ifdef XB_MDX_SUPPORT
+ // xbInt16 GetCreateMdxBlockSize() const;
+ // xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );
+ std::cout << "GetCreateMdxBlockSize() - " << x.GetCreateMdxBlockSize() << std::endl;
+ #endif // XB_MDX_SUPPORT
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ // xbUInt32 GetDefaultBlockReadSize() const;
+ // void SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize );
+ std::cout << "GetDefaultBlockReadSize() - " << x.GetDefaultBlockReadSize() << std::endl;
+ #endif // XB_BLOCKREAD_SUPPORT
+
+ //xbBool BitSet ( unsigned char c, xbInt16 iBitNo ) const;
+ //void BitDump ( unsigned char c ) const;
+ //void BitDump ( char c ) const;
+ std::cout << "BitDump( 'A' ) - ";
+ x.BitDump( 'A' );
+
+ return 0;
+}
+
+
+</xmp>
+
+<br><br>
+<hr>
+<p><img src="xbase.jpg"><br><hr>
+</BODY>
+</HTML>
diff --git a/docs/man/xb_cfg_chk.1.gz b/docs/man/xb_cfg_chk.1.gz
new file mode 100644
index 0000000..9dabd69
--- /dev/null
+++ b/docs/man/xb_cfg_chk.1.gz
Binary files differ
diff --git a/docs/man/xb_copydbf.1.gz b/docs/man/xb_copydbf.1.gz
new file mode 100644
index 0000000..410723d
--- /dev/null
+++ b/docs/man/xb_copydbf.1.gz
Binary files differ
diff --git a/docs/man/xb_dbfutil.1.gz b/docs/man/xb_dbfutil.1.gz
new file mode 100644
index 0000000..555bd83
--- /dev/null
+++ b/docs/man/xb_dbfutil.1.gz
Binary files differ
diff --git a/docs/man/xb_deletall.1.gz b/docs/man/xb_deletall.1.gz
new file mode 100644
index 0000000..8016f10
--- /dev/null
+++ b/docs/man/xb_deletall.1.gz
Binary files differ
diff --git a/docs/man/xb_dumpdbt.1.gz b/docs/man/xb_dumpdbt.1.gz
new file mode 100644
index 0000000..f0585b4
--- /dev/null
+++ b/docs/man/xb_dumpdbt.1.gz
Binary files differ
diff --git a/docs/man/xb_dumprecs.1.gz b/docs/man/xb_dumprecs.1.gz
new file mode 100644
index 0000000..f63c8b7
--- /dev/null
+++ b/docs/man/xb_dumprecs.1.gz
Binary files differ
diff --git a/docs/man/xb_pack.1.gz b/docs/man/xb_pack.1.gz
new file mode 100644
index 0000000..c5ec726
--- /dev/null
+++ b/docs/man/xb_pack.1.gz
Binary files differ
diff --git a/docs/man/xb_tblinfo.1.gz b/docs/man/xb_tblinfo.1.gz
new file mode 100644
index 0000000..ab7b26a
--- /dev/null
+++ b/docs/man/xb_tblinfo.1.gz
Binary files differ
diff --git a/docs/man/xb_undelall.1.gz b/docs/man/xb_undelall.1.gz
new file mode 100644
index 0000000..31cc868
--- /dev/null
+++ b/docs/man/xb_undelall.1.gz
Binary files differ
diff --git a/sql/jointest.sql b/sql/jointest.sql
new file mode 100755
index 0000000..de167b5
--- /dev/null
+++ b/sql/jointest.sql
@@ -0,0 +1,43 @@
+# HELP;
+
+USE /mnt/1Tdata/xbase/xbase64-4.1.1/data;
+
+DROP TABLE IF EXISTS MAIN0.DBF;
+DROP TABLE IF EXISTS LEFT0.DBF;
+DROP TABLE IF EXISTS LEFT1.DBF;
+DROP TABLE IF EXISTS LEFT2.DBF;
+DROP TABLE IF EXISTS LEFT3.DBF;
+DROP TABLE IF EXISTS INNER0.DBF;
+
+
+CREATE TABLE MAIN0 ( ID NUMERIC(6,0), LEFTFK0 CHAR(3), LEFTFK1 CHAR(3), LEFTFK2 CHAR(3), LEFTFK3 CHAR(3), RIGHTFK0 CHAR(3), RIGHTFK1 CHAR(3), RIGHTFK2 CHAR(3), INNERFK0 CHAR(3) );
+
+CREATE TABLE LEFT0.DBF ( ID NUMERIC(6,0), LEFTFK0 CHAR(3), CFLD CHAR(10) );
+CREATE TABLE LEFT1.DBF ( ID NUMERIC(6,0), LEFTFK1 CHAR(3), CFLD CHAR(10) );
+CREATE TABLE LEFT2.DBF ( ID NUMERIC(6,0), LEFTFK2 CHAR(3), CFLD CHAR(10) );
+CREATE TABLE LEFT3.DBF ( ID NUMERIC(6,0), LEFTFK3 CHAR(3), CFLD CHAR(10) );
+CREATE TABLE INNER0.DBF( ID NUMERIC(6,0), INNERFK0 CHAR(3), CFLD CHAR(10) );
+
+
+INSERT INTO MAIN0.DBF ( ID, LEFTFK0, LEFTFK1, LEFTFK2, LEFTFK3, RIGHTFK0, RIGHTFK1, RIGHTFK2, INNERFK0 ) VALUES ( 1, 'L01', 'L11', 'L21', 'L31', 'R01', 'R11', 'R21', 'I01' );
+INSERT INTO MAIN0.DBF ( ID, LEFTFK0, LEFTFK1, LEFTFK2, LEFTFK3, RIGHTFK0, RIGHTFK1, RIGHTFK2, INNERFK0 ) VALUES ( 2, 'L02', 'L12', 'L22', 'L32', 'R02', 'R12', 'R22', 'I02' );
+INSERT INTO MAIN0.DBF ( ID, LEFTFK0, LEFTFK1, LEFTFK2, LEFTFK3, RIGHTFK0, RIGHTFK1, RIGHTFK2, INNERFK0 ) VALUES ( 3, 'L03', 'L13', 'L23', 'L33', 'R03', 'R13', 'R23', 'I03' );
+
+INSERT INTO LEFT0.DBF ( ID, LEFTFK0, CFLD ) VALUES ( 1, 'L01', 'REC 1 data' );
+INSERT INTO LEFT0.DBF ( ID, LEFTFK0, CFLD ) VALUES ( 2, 'L02', 'REC 2 data' );
+
+INSERT INTO INNER0.DBF ( ID, INNERFK0, CFLD ) VALUES ( 1, 'I01', 'REC 1 data' );
+INSERT INTO INNER0.DBF ( ID, INNERFK0, CFLD ) VALUES ( 2, 'I03', 'REC 2 data' );
+
+
+
+#INSERT INTO TestSQL.DBF (CITY, STATE, ZIPCODE, NOTES, LASTUPDATE, ACTIVE ) VALUES ( 'San Diego', 'CA', 92007, 'San Diego is a cool place', '1989-02-09', 'Y');
+#CREATE UNIQUE INDEX TestSql1.NDX ON TestSql.DBF( CHRFLD ) ASSOCIATE;
+#DROP INDEX IF EXISTS TestSql1.NDX ON TestSql.DBF;
+
+
+
+#SELECT M.ID, M.LEFTFK0, L0.CFLD, L1.CFLD AS L1cfld
+#FROM MAIN0 M
+#LEFT JOIN LEFT0 L0 ON M.LEFTFK0 = L0.LEFTFK0
+#LEFT JOIN LEFT1 L1 ON M.LEFTFK1 = L1.LEFTFK1 AND L1.ID = L0.ID \ No newline at end of file
diff --git a/src/core/xbbcd.cpp b/src/core/xbbcd.cpp
index ff64110..f86e74f 100755
--- a/src/core/xbbcd.cpp
+++ b/src/core/xbbcd.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -268,7 +268,6 @@ xbInt16 xbBcd::Compare( const xbBcd &bcdIn ){
return -1;
}
-
/***********************************************************************/
unsigned char xbBcd::GetEncDigitsNoSign() const {
unsigned char c = bcd.cEncDigits << 1;
@@ -277,7 +276,7 @@ unsigned char xbBcd::GetEncDigitsNoSign() const {
/***********************************************************************/
unsigned xbBcd::GetSign() const {
//return bcd.Sign;
- return bcd.cEncDigits >> 7;
+ return (unsigned) bcd.cEncDigits >> 7;
}
/***********************************************************************/
unsigned xbBcd::GetSigDigits() const {
diff --git a/src/core/xbblockread.cpp b/src/core/xbblockread.cpp
new file mode 100755
index 0000000..09076b1
--- /dev/null
+++ b/src/core/xbblockread.cpp
@@ -0,0 +1,271 @@
+/* xbblockread.cpp
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+This module handles block read methods. Block reading is used for performance improvement
+during sequential access processing.
+
+*/
+
+#include "xbase.h"
+
+#ifdef XB_BLOCKREAD_SUPPORT
+
+namespace xb{
+
+/************************************************************************/
+xbBlockRead::xbBlockRead( xbDbf * d ) {
+ pBlock = NULL;
+ ulBlkSize = 0;
+ ulFirstBlkRec = 0;
+ ulRecCnt = 0;
+ ulMaxRecs = 0;
+ bEof = xbFalse;
+ this->dbf = d;
+ tFmTime = 0;
+}
+/************************************************************************/
+xbBlockRead::~xbBlockRead(){
+ if( pBlock ){
+ free( pBlock );
+ pBlock = NULL;
+ }
+}
+
+/************************************************************************/
+//! @brief Dump read block internals to stdout.
+/*!
+ Dump the current read block internals to stdout.
+*/
+
+
+#ifdef XB_DEBUG_SUPPORT
+void xbBlockRead::DumpReadBlockInternals(){
+ std::cout << "------- DumpBlockInternals ---------" << std::endl;
+ std::cout << "Dflt Blk Size = [" << dbf->GetXbasePtr()->GetDefaultBlockReadSize()
+ << "]" << std::endl;
+ std::cout << "Dbf Record Count = [" << dbf->GetRecordCount() << "]" << std::endl;
+ std::cout << "Dbf Record Len = [" << dbf->GetRecordLen() << "]" << std::endl;
+ std::cout << "ulBlkSize = [" << ulBlkSize << "]" << std::endl;
+ std::cout << "ulMaxRecs = [" << ulMaxRecs << "]" << std::endl;
+ std::cout << "ulFirstBlkRec = [" << ulFirstBlkRec << "]" << std::endl;
+ std::cout << "ulRecCnt = [" << ulRecCnt << "]" << std::endl;
+ std::cout << "bEof = [" << bEof << "]" << std::endl;
+}
+#endif // XB_DEBUG_SUPPORT
+/************************************************************************/
+//! @brief Get the first record number in the current block.
+/*!
+ Retrieve the first record numer in the current block.<br>
+
+ \returns First record number in the current block.
+*/
+
+xbUInt32 xbBlockRead::GetBlockFirstRecNo() const{
+ return ulFirstBlkRec;
+}
+/************************************************************************/
+//! @brief Get record for specified record number.
+/*!
+ Retrieve a record from read block buffer and copy it into the record buffer.
+ If the current record is not in the current block, the routine calls
+ GetBlockForRecNo to load the currect block from disk.<br><br>
+ For performance reasons, this method assumes a valid record number has been
+ passed.<br><br>
+
+ \param ulRecNo - Record number to retrieve.
+ \returns <a href="xbretcod_8h.html">Return Codes</a>
+*/
+
+xbInt16 xbBlockRead::GetRecord( xbUInt32 ulRecNo ){
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+
+ // std::cout << "xbBlockRead::GetRecord( " << ulRecNo << ")\n";
+
+ try{
+ if( !( ulRecNo >= ulFirstBlkRec && ulRecNo < (ulFirstBlkRec + ulRecCnt))){
+ if(( iRc = GetBlockForRecNo( ulRecNo )) != XB_NO_ERROR ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+ }
+ char *s = pBlock;
+ s += (ulRecNo - ulFirstBlkRec) * dbf->GetRecordLen();
+ char *t = dbf->RecBuf;
+ xbUInt32 ulRecLen = dbf->GetRecordLen();
+ for( xbUInt32 l = 0; l < ulRecLen; l++ ){
+ *t = *s;
+ t++;
+ s++;
+ }
+ dbf->ulCurRec = ulRecNo;
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbBlockRead::GetBlockForRecNo() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+/************************************************************************/
+//! @brief Get record for specified record number.
+/*!
+ Retrieve a block containing specified record. This routine calculates the
+ correct block in the DBF file, updates the internal block fields and retrieves
+ the block of records from disk and loads into the block buffer.<br><br>
+
+ \param ulRecNo - Record number to retrieve.
+ \returns <a href="xbretcod_8h.html">Return Codes</a>
+*/
+
+xbInt16 xbBlockRead::GetBlockForRecNo( xbUInt32 ulRecNo ){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+
+ try{
+ xbUInt32 ulDbfRecCnt = dbf->GetRecordCount();
+
+ // calc to determine block number for the requested record, 0 based offset
+ xbUInt32 ulBlockNo = (xbUInt32)(ulRecNo / ulMaxRecs);
+ if( ulRecNo % ulMaxRecs == 0 ) ulBlockNo--;
+
+ // calc the first record
+ ulFirstBlkRec = (ulBlockNo * ulMaxRecs);
+
+ // calc the record count
+ if(( ulFirstBlkRec + ulMaxRecs) > ulDbfRecCnt ){
+ ulRecCnt = ulDbfRecCnt - ulFirstBlkRec;
+ bEof = xbTrue;
+ } else {
+ ulRecCnt = ulMaxRecs;
+ bEof = xbFalse;
+ }
+
+ // position accordingly
+ xbInt64 ulStartPos = dbf->GetHeaderLen() + ((xbInt64) ulFirstBlkRec * dbf->GetRecordLen());
+ if(( dbf->xbFseek( ulStartPos, SEEK_SET )) != XB_NO_ERROR ){
+ iErrorStop = 110;
+ iRc = XB_SEEK_ERROR;
+ throw iRc;
+ }
+
+ if(( dbf->GetFileMtime( tFmTime )) != XB_NO_ERROR ){
+ iErrorStop = 120;
+ throw iRc;
+ }
+ // read it
+ if(( dbf->xbFread( (void *) pBlock, ulRecCnt * dbf->GetRecordLen(), 1 )) != XB_NO_ERROR ){
+ iErrorStop = 130;
+ throw iRc;
+ }
+
+ ulFirstBlkRec++; // zero offset in the routine, regular record number from ths point forward
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbBlockRead::GetBlockForRecNo() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+
+/************************************************************************/
+//! @brief Get the current block size.
+/*!
+ Retrieve the current block size.<br><br>
+
+ \returns Current Block Size.
+*/
+
+xbUInt32 xbBlockRead::GetBlockSize() const{
+ return ulBlkSize;
+}
+
+/************************************************************************/
+//! @brief Get the current block record count.
+/*!
+ Retrieve the current number of records loaded in the block.<br><br>
+
+ \returns Current Block Size.
+*/
+
+xbUInt32 xbBlockRead::GetBlockRecCnt() const {
+ return ulRecCnt;
+}
+
+/************************************************************************/
+//! @brief Init the block processing for a iven DBF file.
+/*!
+ Initialize the settings for a given DBF file.<br>
+ This routine may adjust the block size as needed to eliminate unused
+ memory or adjust it bigger if too small.
+
+ \param ulRecNo - ulBlockSize - Block size to allocate. If 0 or missing, it uses default block size of 32K.
+ \returns <a href="xbretcod_8h.html">Return Codes</a>
+*/
+
+xbInt16 xbBlockRead::Init(xbUInt32 ulBlockSize ){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+
+ try{
+
+ // calculate the block size
+ if( ulBlockSize == 0 )
+ ulBlkSize = dbf->GetXbasePtr()->GetDefaultBlockReadSize();
+
+ // if not big enough to handle more than one record, bump it up to something meaningful
+ if( ulBlkSize < (xbUInt32)(dbf->GetRecordLen() * 2 ))
+ ulBlkSize = (xbUInt32) dbf->GetRecordLen() * 10;
+
+ ulMaxRecs = (xbUInt32) ulBlkSize / dbf->GetRecordLen();
+ ulBlkSize = ulMaxRecs * dbf->GetRecordLen();
+
+ // allocate memory for the block
+ if(( pBlock = (char *) calloc( 1, ulBlkSize )) == NULL ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbBlockRead::Init() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+/************************************************************************/
+//! @brief Set the block size.
+/*!
+ St block size for this DBF file.<br>.
+
+ \param ulBlkSize - Block Size.
+ \returns XB_NO_ERROR
+*/
+
+xbInt16 xbBlockRead::SetBlockSize( xbUInt32 ulBlkSize ){
+ this->ulBlkSize = ulBlkSize;
+ return XB_NO_ERROR;
+}
+
+/************************************************************************/
+} /* namespace */
+#endif /* XB_BLOCKREAD_SUPPORT */ \ No newline at end of file
diff --git a/src/core/xbdbf.cpp b/src/core/xbdbf.cpp
index 3d13369..4033ef9 100755
--- a/src/core/xbdbf.cpp
+++ b/src/core/xbdbf.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -24,10 +24,16 @@ namespace xb{
\param x Pointer to xbXbase
*/
xbDbf::xbDbf( xbXBase * x ) : xbFile( x ){
- xbase = x;
- SchemaPtr = NULL;
- RecBuf = NULL;
- RecBuf2 = NULL;
+ xbase = x;
+ SchemaPtr = NULL;
+ RecBuf = NULL;
+ RecBuf2 = NULL;
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ pRb = NULL;
+ bBlockReadEnabled = xbFalse; // batch read switch, if xbTrue, then ON
+ #endif // XB_BLOCKREAD_SUPPORT
+
InitVars();
}
/************************************************************************/
@@ -77,7 +83,7 @@ void xbDbf::InitVars()
#ifdef XB_INF_SUPPORT
llInfData.Clear();
- #endif // XB_INF_SUPPORT
+ #endif // XB_INF_SUPPORT
}
/************************************************************************/
@@ -104,6 +110,16 @@ xbDbf::~xbDbf(){
free( RecBuf2 );
RecBuf2 = NULL;
}
+ if( RecBuf ){
+ free( RecBuf );
+ RecBuf = NULL;
+ }
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ if( bBlockReadEnabled )
+ DisableBlockReadProcessing();
+ #endif // XB_BLOCKREAD_SUPPORT
+
Close();
}
/************************************************************************/
@@ -1952,6 +1968,18 @@ xbInt16 xbDbf::GetFirstKey(){
}
/************************************************************************/
+//! @brief GetHeaderLen for dbf
+/*!
+
+ Returns the length of the header portion of the dbf file
+ \returns Length of header protion of dbf file
+
+*/
+xbUInt16 xbDbf::GetHeaderLen() const {
+ return uiHeaderLen;
+}
+
+/************************************************************************/
//! @brief GetLastKey for tag.
/*!
@@ -2054,6 +2082,32 @@ xbInt16 xbDbf::Find( xbDouble &dKey ){
#endif // XB_INDEX_SUPPORT
/************************************************************************/
+//! @brief Return true if dbf file empty or positioned to the first record
+/*!
+ \returns Returns true if dbf file is empty or positioned on the first record.
+*/
+xbBool xbDbf::GetBof() {
+/*
+ if( GetRecordCount() == 0 || GetCurRecNo() == 1 )
+ return xbTrue;
+ else
+ */
+ return xbFalse;
+}
+/************************************************************************/
+//! @brief Return true if dbf file empty or positioned to the last record
+/*!
+ \returns Returns true if dbf file is empty or positioned on the last record.
+*/
+xbBool xbDbf::GetEof() {
+ xbUInt32 ulRecCnt = GetRecordCount();
+
+ if( ulRecCnt == 0 || GetCurRecNo() == ulRecCnt )
+ return xbTrue;
+ else
+ return xbFalse;
+}
+/************************************************************************/
//! @brief Return the current record number.
/*!
\returns Returns the current record number.
@@ -2428,15 +2482,23 @@ xbInt16 xbDbf::GetRecord( xbUInt32 ulRecNo ){
iErrorStop = 120;
throw iRc;
}
- }
- }
+ }
+ }
+
+ // std::cout << "xbdbf::GetRecord: " << ulRecNo << " " << ulNoOfRecs << "\n";
if( ulRecNo > ulNoOfRecs || ulRecNo == 0L ){
iErrorStop = 130;
iRc = XB_INVALID_RECORD;
throw iRc;
}
+ #ifdef XB_BLOCKREAD_SUPPORT
+ if( bBlockReadEnabled )
+ return pRb->GetRecord( ulRecNo );
+ #endif // XB_BLOCK_READ_SUPPORT
+
+
if(( xbFseek( (uiHeaderLen+(( (xbInt64) ulRecNo-1L ) * uiRecordLen )), SEEK_SET )) != XB_NO_ERROR ){
iErrorStop = 140;
iRc = XB_SEEK_ERROR;
@@ -2475,9 +2537,6 @@ char * xbDbf::GetRecordBuf( xbInt16 iOpt ) const {
return RecBuf;
}
-
-
-
/************************************************************************/
//! @brief Get the current number of records in the dbf data file.
/*!
@@ -3211,12 +3270,12 @@ xbInt16 xbDbf::Open( const xbString & sTableName, const xbString & sAlias ){
xbLinkListNode<xbString> * llN = llInfData.GetHeadNode();
for( xbUInt32 i = 0; i < llNodeCnt; i++ ){
s2 = llN->GetKey();
- #ifdef XB_NDX_SUPPORT
+ #ifdef XB_NDX_SUPPORT
if(( iRc = OpenIndex( "NDX", s2 )) != XB_NO_ERROR ){
iErrorStop = 120;
throw iRc ;
}
- #endif // XB_NDX_SUPPORT
+ #endif // XB_NDX_SUPPORT
llN = llN->GetNextNode();
}
}
@@ -3270,7 +3329,6 @@ xbInt16 xbDbf::OpenIndex( const xbString &sIxType, const xbString &sFileName ){
#ifdef XB_MDX_SUPPORT
} else if( sType == "MDX" ){
-
pIx = new xbIxMdx( this );
if(( iRc = pIx->Open( sFileName )) != XB_NO_ERROR ){
iErrorStop = 120;
@@ -4209,4 +4267,72 @@ xbInt16 xbDbf::Zap(){
return iRc;
}
/************************************************************************/
+#ifdef XB_BLOCKREAD_SUPPORT
+// block read processing is designed to provide a way to rapidly retrieve
+// all the records from a .DBF file in sequential order.
+
+// It is not designed for doing any read/write processing or data retrieval based on a tag sort.
+// It is designed for doing a fast sequentil block read out of a table
+
+
+xbInt16 xbDbf::DisableBlockReadProcessing(){
+
+ if( bBlockReadEnabled ){
+ bBlockReadEnabled = xbFalse;
+ delete pRb;
+ pRb = NULL;
+ }
+ return XB_NO_ERROR;
+}
+
+xbBool xbDbf::GetBlockReadStatus() const {
+ return bBlockReadEnabled;
+}
+
+xbInt16 xbDbf::EnableBlockReadProcessing(){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+
+ try{
+
+ if( !bBlockReadEnabled ){
+ if( iDbfStatus == XB_UPDATED ){
+ if( GetAutoCommit() == 1 ){
+ if(( iRc = Commit()) != XB_NO_ERROR ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+ } else {
+ if(( iRc = Abort()) != XB_NO_ERROR ){
+ iErrorStop = 110;
+ throw iRc;
+ }
+ }
+ }
+ pRb = new xbBlockRead( this );
+ if( !pRb ){
+ iErrorStop = 120;
+ iRc = XB_NO_MEMORY;
+ throw iRc;
+ }
+ if(( iRc = pRb->Init()) != XB_NO_ERROR ){
+ iErrorStop = 130;
+ throw iRc;
+ }
+
+ bBlockReadEnabled = xbTrue;
+ }
+
+ } catch( xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbdbf::EnableBlockReadProcessing() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+#endif // XB_BLOCKREAD_SUPPORT
+/************************************************************************/
} /* namespace */ \ No newline at end of file
diff --git a/src/core/xbdbf3.cpp b/src/core/xbdbf3.cpp
index 504542f..d57be3c 100755
--- a/src/core/xbdbf3.cpp
+++ b/src/core/xbdbf3.cpp
@@ -261,7 +261,7 @@ xbInt16 xbDbf3::CreateTable( const xbString & sTableName, const xbString & sAlia
catch( xbInt16 rc )
{
xbString sMsg;
- sMsg.Sprintf( "xbdbf3::CreateTable() Exception Caught Error Stop = %d rc = %d", iErrorStop, rc );
+ sMsg.Sprintf( "xbdbf3::CreateTable() Exception Caught Error Stop = [%d] rc = [%d]", iErrorStop, rc );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( rc ));
@@ -453,7 +453,7 @@ xbInt16 xbDbf3::Open( const xbString & sTableName, const xbString & sAlias,
catch ( xbInt16 iRc )
{
xbString sMsg;
- sMsg.Sprintf( "xbdbf3::Open() Exception Caught Error Stop = %d iRc = %d ShareMode = %d OpenMode = %d", iErrorStop, iRc, iShareMode, iOpenMode );
+ sMsg.Sprintf( "xbdbf3::Open() Exception Caught Error Stop = [%d] iRc = [%d] ShareMode = [%d] OpenMode = [%d]", iErrorStop, iRc, iShareMode, iOpenMode );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
xbFclose();
@@ -623,14 +623,14 @@ xbInt16 xbDbf3::Rename( const xbString sNewName ){
xbTblList *tle = xbase->GetTblListEntry( this );
if( tle ){
// std::cout << "setting [" << GetFqFileName().Str() << "][" << sNewNameWoExt.Str() << "]\n";
- tle->psTblName->Set( GetFqFileName().Str());
+ tle->psFqTblName->Set( GetFqFileName().Str());
tle->psTblAlias->Set( sNewNameWoExt.Str());
}
}
catch ( xbInt16 iRc )
{
xbString sMsg;
- sMsg.Sprintf( "xbdbf3::Rename() Exception Caught Error Stop = %d iRc = %d", iErrorStop, iRc );
+ sMsg.Sprintf( "xbdbf3::Rename() Exception Caught Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
diff --git a/src/core/xbdbf4.cpp b/src/core/xbdbf4.cpp
index 2b49be9..59ba39a 100755
--- a/src/core/xbdbf4.cpp
+++ b/src/core/xbdbf4.cpp
@@ -180,10 +180,10 @@ xbInt16 xbDbf4::CreateTable( const xbString &sTableName, const xbString &sAlias,
ulCurRec = 0L;
uiHeaderLen = 33 + iNoOfFields * 32;
xbDate d;
- cUpdateYY = (char) (d.YearOf() - 1900);
- cUpdateMM = (char) d.MonthOf();
- cUpdateDD = (char) d.DayOf( XB_FMT_MONTH );
-
+ cUpdateYY = (char) (d.YearOf() - 1900);
+ cUpdateMM = (char) d.MonthOf();
+ cUpdateDD = (char) d.DayOf( XB_FMT_MONTH );
+ cIndexFlag = 0;
// Default language driver to 0x1b
cLangDriver = 0x1b;
@@ -264,7 +264,7 @@ xbInt16 xbDbf4::CreateTable( const xbString &sTableName, const xbString &sAlias,
catch( xbInt16 rc )
{
xbString sMsg;
- sMsg.Sprintf( "xbdbf4::CreateTable() Exception Caught Error Stop = %d rc = %d", iErrorStop, rc );
+ sMsg.Sprintf( "xbdbf4::CreateTable() Exception Caught Error Stop = [%d] rc = [%d]", iErrorStop, rc );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( rc ));
@@ -452,6 +452,9 @@ xbInt16 xbDbf4::Open( const xbString & sTableName, const xbString & sAlias,
#endif
#ifdef XB_MDX_SUPPORT
+
+// printf( "cIndexFlag [%x]\n", cIndexFlag );
+
if( cIndexFlag ){
// create the file name
xbString sIxFileName = GetFqFileName();
@@ -471,7 +474,7 @@ xbInt16 xbDbf4::Open( const xbString & sTableName, const xbString & sAlias,
catch ( xbInt16 iRc )
{
xbString sMsg;
- sMsg.Sprintf( "xbdbf4::Open() Exception Caught Error Stop = %d iRc = %d ShareMode = %d OpenMode = %d", iErrorStop, iRc, iShareMode, iOpenMode );
+ sMsg.Sprintf( "xbdbf4::Open() Exception Caught Error Stop = [%d] iRc = [%d] ShareMode = [%d] OpenMode = [%d]", iErrorStop, iRc, iShareMode, iOpenMode );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
xbFclose();
@@ -726,7 +729,7 @@ xbInt16 xbDbf4::Rename( const xbString sNewName ){
// rename the table in the table list
xbTblList *tle = xbase->GetTblListEntry( this );
if( tle ){
- tle->psTblName->Set( GetFqFileName().Str());
+ tle->psFqTblName->Set( GetFqFileName().Str());
tle->psTblAlias->Set( sNewNameWoExt.Str());
}
@@ -735,7 +738,7 @@ xbInt16 xbDbf4::Rename( const xbString sNewName ){
catch ( xbInt16 iRc )
{
xbString sMsg;
- sMsg.Sprintf( "xbdbf4::Rename() Exception Caught Error Stop = %d iRc = %d", iErrorStop, iRc );
+ sMsg.Sprintf( "xbdbf4::Rename() Exception Caught Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
diff --git a/src/core/xbexp.cpp b/src/core/xbexp.cpp
index 23bc7c6..deea53d 100755
--- a/src/core/xbexp.cpp
+++ b/src/core/xbexp.cpp
@@ -669,10 +669,22 @@ xbInt16 xbExp::GetTokenDatabaseField( xbExpToken &t ){
}
// look for ->
- // remove the field name from before the ->
+ // remove the table name from before the ->
if( strncmp( s, "->", 2 ) == 0 ){
ulTokenLen2+=2;
s+=2;
+
+/*
+ if( strncmp( s, "->", 2 ) == 0 || strncmp( s, ".", 1 ) == 0){
+ if( *s == '.' ){
+ ulTokenLen2+=1;
+ s+=1;
+ } else {
+ ulTokenLen2+=2;
+ s+=2;
+ }
+*/
+
// go past white space
while( *s && !IsTokenSeparator( *s ) && IsWhiteSpace( *s )) {
ulTokenLen2++;
@@ -1489,6 +1501,7 @@ xbInt16 xbExp::ParseExpressionField( xbExpToken &t, xbExpNode *n ){
try{
xbUInt32 lPos;
+
if(( lPos = t.sToken.Pos( "->" )) > 0 ){
// table name is part of the token
xbString sTableName = t.sToken;
@@ -1496,6 +1509,22 @@ xbInt16 xbExp::ParseExpressionField( xbExpToken &t, xbExpNode *n ){
sFieldName = t.sToken;
sFieldName.Mid( lPos + 2, t.sToken.Len() - lPos - 1 );
pDbf = (xbDbf *) xbase->GetDbfPtr( sTableName );
+
+
+/*
+ // updated 1/2/23 to support either table.field or table->field
+ if((( lPos = t.sToken.Pos( "->" )) > 0) || (( lPos = t.sToken.Pos( "." )) > 0) ){
+ // table name is part of the token
+ xbString sTableName = t.sToken;
+ sTableName.Left( lPos-1 );
+ sFieldName = t.sToken;
+ if( t.sToken[lPos] == '.' )
+ sFieldName.Mid( lPos + 1, t.sToken.Len() - lPos );
+ else // ->
+ sFieldName.Mid( lPos + 2, t.sToken.Len() - lPos - 1 );
+ pDbf = (xbDbf *) xbase->GetDbfPtr( sTableName );
+*/
+
} else {
// table name is not part of the token
pDbf = dbf;
diff --git a/src/core/xbfile.cpp b/src/core/xbfile.cpp
index 937c16f..3b798a2 100755
--- a/src/core/xbfile.cpp
+++ b/src/core/xbfile.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -49,6 +49,119 @@ xbFile::~xbFile(){
}
/************************************************************************/
+//! @brief Create Home Folders.
+/*!
+ Create xbase64 log and data folders in the home directory for current usre.
+
+ \returns <a href="xbretcod_8h.html">Return Codes</a>
+*/
+
+xbInt16 xbFile::SetHomeFolders(){
+
+ xbInt16 iErrorStop = 0;
+ xbInt16 iRc = XB_NO_ERROR;
+ xbString sHomeDir;
+ char cPathSeperator;
+ xbString sDflt;
+
+ try{
+
+ GetHomeDir( sHomeDir );
+ //std::cout << "CreateHomeFolders() home dir = [" << sHomeDir.Str() << "]\n";
+
+ if( FileExists( sHomeDir ) == xbFalse ){
+ iErrorStop = 100;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+
+ #ifdef WIN32
+ cPathSeperator = '\\';
+ #else
+ cPathSeperator = '/';
+ #endif
+ sDflt.Sprintf( ".%c", cPathSeperator );
+ // set the default folders just in case later steps fail
+ xbase->SetDataDirectory( sDflt );
+ #ifdef XB_LOGGING_SUPPORT
+ xbase->SetLogDirectory( sDflt );
+ #endif
+
+ if( sHomeDir[sHomeDir.Len()] != cPathSeperator )
+ sHomeDir += cPathSeperator;
+
+ xbString sWork( sHomeDir );
+ sWork += "xbase64";
+
+ if( FileExists( sWork ) == xbFalse ){
+ #ifdef WIN32
+ if( CreateDirectory( sWork.Str(), NULL ) == 0 ){
+ iErrorStop = 130;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+ #else
+ // 0777 mode is correct, the mode will be modified by the user's umask
+ if( mkdir( sWork.Str(), 0777 ) == -1 ){
+ iErrorStop = 140;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+ #endif
+ }
+
+ #ifdef XB_LOGGING_SUPPORT
+ sWork.Sprintf( "%sxbase64%clogs", sHomeDir.Str(), cPathSeperator );
+ // std::cout << "logdir = " << sWork.Str() << "\n";
+
+ if( FileExists( sWork ) == xbFalse ){
+ #ifdef WIN32
+ if( CreateDirectory( sWork.Str(), NULL ) == 0 ){
+ iErrorStop = 110;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+ #else
+ if( mkdir( sWork.Str(), 0777 ) == -1 ){
+ iErrorStop = 120;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+ #endif
+ }
+ xbase->SetLogDirectory( sWork );
+ #endif // XB_LOGGING_SUPPORT
+
+ sWork.Sprintf( "%sxbase64%cdata", sHomeDir.Str(), cPathSeperator );
+ // std::cout << "datadir = " << sWork.Str() << "\n";
+ if( FileExists( sWork ) == xbFalse ){
+ #ifdef WIN32
+ if( CreateDirectory( sWork.Str(), NULL ) == 0 ){
+ iErrorStop = 130;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+ #else
+ if( mkdir( sWork.Str(), 0777 ) == -1 ){
+ iErrorStop = 140;
+ iRc = XB_DIRECTORY_ERROR;
+ throw iRc;
+ }
+ #endif
+ }
+ xbase->SetDataDirectory( sWork );
+
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbFile::CreateHomeFolders() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+/************************************************************************/
//! @brief Create a unique file name.
/*!
Given a directory and file extension as inputs, create a unique file name.
@@ -1445,7 +1558,7 @@ xbInt16 xbFile::xbFputs( const xbString & s ){
/*!
\param p Pointer to data to write
\param size size of write
- \param nmemb Number of times to write it
+ \param nmemb Number of times to read it
\returns <a href="xbretcod_8h.html">Return Codes</a>
*/
@@ -1899,69 +2012,39 @@ void xbFile::SetLockRetryCount( xbInt16 iLockRetries ) {
}
#endif
+
+
/***********************************************************************/
#ifdef XB_DEBUG_SUPPORT
-//! @brief Debugging routine - dump a block to the log file.
+//! @brief Debugging routine - dump mem to the log file.
/*!
- This routine dumps a block to a file in the log file. This is
+ This routine dumps data from meemory to the log file. This is
primarily used for debugging and analysis purposes.
- \param ulBlockNo Block number to write
+ \param p Pointer to data to write
\param lBlxkSize Size of block
\returns <a href="xbretcod_8h.html">Return Codes</a>
*/
-xbInt16 xbFile::DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlkSize ){
+xbInt16 xbFile::DumpMemToDisk( char *p, size_t lSize ){
xbInt16 iRc = 0;
xbInt16 iErrorStop = 0;
-
- xbUInt32 ulStartBlock;
- xbUInt32 ulEndBlock;
-
- char *p = 0x00;
-
xbString sDir;
xbString sFn;
- char *buf = NULL;
- FILE *fpd = NULL;
- try{
- iErrorStop = 100;
- if( ulBlockNo == 0 ){
- ulStartBlock = 0;
- xbUInt64 ullFileSizeulBlockNo;
- if(( iRc = GetFileSize( ullFileSizeulBlockNo )) != XB_NO_ERROR ){
- iErrorStop = 110;
- throw iRc;
- }
- ulEndBlock = (xbUInt32) (ullFileSizeulBlockNo / lBlkSize);
- } else {
- ulStartBlock = ulBlockNo;
- ulEndBlock = ulBlockNo;
- }
-
- if(( buf = (char *) malloc( lBlkSize )) == NULL ){
- iErrorStop = 120;
- iRc = XB_NO_MEMORY;
- throw iRc;
- }
-
- sDir = GetDefaultLogDirectory();
- char cLastChar = sDir[sDir.Len()];
+ FILE *fpd = NULL;
- for( xbUInt32 l = ulStartBlock; l < ulEndBlock; l++ ){
+ try{
- if(( iRc = ReadBlock( l, lBlkSize, buf )) != XB_NO_ERROR ){
- iErrorStop = 130;
- throw iRc;
- }
+ sDir = GetLogDirectory();
+ char cLastChar = sDir[sDir.Len()];
// build logfile name
if( cLastChar != '/' && cLastChar != '\\' )
- sFn.Sprintf( "%s/Blockdump.B%ld", sDir.Str(), l);
+ sFn.Sprintf( "%s/MemDump.txt", sDir.Str());
else
- sFn.Sprintf( "%sBlockDump.%ld", sDir.Str(), l);
+ sFn.Sprintf( "%sMemDump.txt", sDir.Str());
// open the dump file for append
#ifdef HAVE__FSOPEN_F
@@ -1969,17 +2052,17 @@ xbInt16 xbFile::DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlkSize ){
#else
if(( fpd = fopen( sFn.Str(), "w+b")) == NULL ){
#endif
- iErrorStop = 140;
+ iErrorStop = 100;
iRc = XB_OPEN_ERROR;
throw iRc;
}
+ int i;
// dump the block to the file
- p = buf;
- for( size_t l = 0; l < lBlkSize; l++ ){
- //if( fputc( *p, fpd ) != *p ){
- if( fputc( *p, fpd ) == EOF ){
- iErrorStop = 150;
+ for( size_t l = 0; l < lSize; l++ ){
+ i = *p;
+ if( fputc( i, fpd ) == EOF ){
+ iErrorStop = 110;
iRc = XB_WRITE_ERROR;
throw iRc;
}
@@ -1988,6 +2071,103 @@ xbInt16 xbFile::DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlkSize ){
// close the dump file
fclose( fpd );
}
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbFile::DumpBlockToDisk() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ if( fpd )
+ fclose( fpd );
+ }
+ return iRc;
+}
+
+/***********************************************************************/
+//! @brief Debugging routine - dump a block to the log file.
+/*!
+ This routine dumps a block to the log file. This is
+ primarily used for debugging and analysis purposes.
+
+ \param ulBlockNo Block number to write
+ \param lBlxkSize Size of block
+ \returns <a href="xbretcod_8h.html">Return Codes</a>
+*/
+xbInt16 xbFile::DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlkSize ){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+
+ xbUInt32 ulStartBlock;
+ xbUInt32 ulEndBlock;
+
+ char *p = 0x00;
+
+ xbString sDir;
+ xbString sFn;
+ char *buf = NULL;
+ FILE *fpd = NULL;
+ try{
+
+ if( ulBlockNo == 0 ){
+ ulStartBlock = 0;
+ xbUInt64 ullFileSizeulBlockNo;
+ if(( iRc = GetFileSize( ullFileSizeulBlockNo )) != XB_NO_ERROR ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+ ulEndBlock = (xbUInt32) (ullFileSizeulBlockNo / lBlkSize);
+ } else {
+ ulStartBlock = ulBlockNo;
+ ulEndBlock = ulBlockNo;
+ }
+
+ if(( buf = (char *) malloc( lBlkSize )) == NULL ){
+ iErrorStop = 110;
+ iRc = XB_NO_MEMORY;
+ throw iRc;
+ }
+
+ sDir = GetLogDirectory();
+ char cLastChar = sDir[sDir.Len()];
+
+ for( xbUInt32 l = ulStartBlock; l < ulEndBlock; l++ ){
+
+ if(( iRc = ReadBlock( l, lBlkSize, buf )) != XB_NO_ERROR ){
+ iErrorStop = 120;
+ throw iRc;
+ }
+
+ // build logfile name
+ if( cLastChar != '/' && cLastChar != '\\' )
+ sFn.Sprintf( "%s/BlockDump.B%ld", sDir.Str(), l);
+ else
+ sFn.Sprintf( "%sBlockDump.%ld", sDir.Str(), l);
+
+ // open the dump file for append
+ #ifdef HAVE__FSOPEN_F
+ if(( fpd = _fsopen( sFn.Str(), "w+b", 0x40 )) == NULL ){
+ #else
+ if(( fpd = fopen( sFn.Str(), "w+b")) == NULL ){
+ #endif
+ iErrorStop = 130;
+ iRc = XB_OPEN_ERROR;
+ throw iRc;
+ }
+
+ // dump the block to the file
+ p = buf;
+ for( size_t l = 0; l < lBlkSize; l++ ){
+ //if( fputc( *p, fpd ) != *p ){
+ if( fputc( *p, fpd ) == EOF ){
+ iErrorStop = 140;
+ iRc = XB_WRITE_ERROR;
+ throw iRc;
+ }
+ p++;
+ }
+ // close the dump file
+ fclose( fpd );
+ }
// free the buffer
if( buf )
@@ -1995,10 +2175,7 @@ xbInt16 xbFile::DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlkSize ){
}
catch (xbInt16 iRc ){
xbString sMsg;
- if( iErrorStop == 160 )
- sMsg.Sprintf( "xbFile::DumpBlockToDisk() Exception Caught. Error Stop = [%d] iRc = [%d] c=[%c][%x]", iErrorStop, iRc, *p, *p );
- else
- sMsg.Sprintf( "xbFile::DumpBlockToDisk() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ sMsg.Sprintf( "xbFile::DumpBlockToDisk() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
xbase->WriteLogMessage( sMsg.Str() );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
if( buf )
@@ -2007,7 +2184,6 @@ xbInt16 xbFile::DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlkSize ){
fclose( fpd );
}
return iRc;
-
}
#endif
/***********************************************************************/
diff --git a/src/core/xbfilter.cpp b/src/core/xbfilter.cpp
index 507a9e7..0fb643d 100755
--- a/src/core/xbfilter.cpp
+++ b/src/core/xbfilter.cpp
@@ -26,8 +26,7 @@ This module handles uda (user data area) methods
namespace xb{
/************************************************************************/
-xbFilter::xbFilter( xbXBase *xbase, xbDbf *dbf ) {
- this->xbase = xbase;
+xbFilter::xbFilter( xbDbf *dbf ) {
this->dbf = dbf;
this->exp = NULL;
lLimit = 0; // max number of responses
@@ -63,6 +62,12 @@ void xbFilter::ResetQryCnt(){
}
/************************************************************************/
+xbInt16 xbFilter::Set( const char *sFilter ) {
+ xbString sFilt( sFilter );
+ return Set( sFilt );
+}
+
+/************************************************************************/
xbInt16 xbFilter::Set( xbString &sFilter ) {
xbInt16 iRc = XB_NO_ERROR;
@@ -72,7 +77,7 @@ xbInt16 xbFilter::Set( xbString &sFilter ) {
if( exp )
delete exp;
- exp = new xbExp( xbase, dbf );
+ exp = new xbExp( dbf->GetXbasePtr(), dbf );
if(( iRc = exp->ParseExpression( sFilter.Str() )) != XB_NO_ERROR ){
iErrorStop = 100;
throw iRc;
@@ -88,8 +93,8 @@ xbInt16 xbFilter::Set( xbString &sFilter ) {
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::SetExpression() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -141,8 +146,8 @@ xbInt16 xbFilter::GetFirstRecord( xbInt16 iOption ) {
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetFirstRecord() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -196,8 +201,8 @@ xbInt16 xbFilter::GetNextRecord( xbInt16 iOption ){
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetNextRecord() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -251,8 +256,8 @@ xbInt16 xbFilter::GetPrevRecord( xbInt16 iOption ){
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetPrevRecord() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -304,8 +309,8 @@ xbInt16 xbFilter::GetLastRecord( xbInt16 iOption ){
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetLastRecord() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -363,8 +368,8 @@ xbInt16 xbFilter::GetFirstRecordIx( xbInt16 iOption ) {
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetFirstRecordIx() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -419,8 +424,8 @@ xbInt16 xbFilter::GetNextRecordIx( xbInt16 iOption ){
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetNextRecordIx() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -475,8 +480,8 @@ xbInt16 xbFilter::GetPrevRecordIx( xbInt16 iOption ){
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetPrevRecordIx() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
@@ -491,7 +496,6 @@ xbInt16 xbFilter::GetLastRecordIx( xbInt16 iOption ){
iErrorStop = 100;
throw iRc;
}
-
lCurQryCnt = 0;
if(( iRc = dbf->GetCurIx()->GetLastKey( dbf->GetCurTag(), iOption )) != XB_NO_ERROR ){
if( iRc == XB_EOF )
@@ -501,7 +505,6 @@ xbInt16 xbFilter::GetLastRecordIx( xbInt16 iOption ){
throw iRc;
}
}
-
xbBool bFound = xbFalse;
while( !bFound && iRc == XB_NO_ERROR ){
if(( iRc = exp->ProcessExpression()) != XB_NO_ERROR ){
@@ -528,12 +531,11 @@ xbInt16 xbFilter::GetLastRecordIx( xbInt16 iOption ){
catch (xbInt16 iRc ){
xbString sMsg;
sMsg.Sprintf( "xbFilter::GetLastRecordIx() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
- xbase->WriteLogMessage( sMsg.Str() );
- xbase->WriteLogMessage( xbase->GetErrorMessage( iRc ));
+ dbf->GetXbasePtr()->WriteLogMessage( sMsg.Str() );
+ dbf->GetXbasePtr()->WriteLogMessage( dbf->GetXbasePtr()->GetErrorMessage( iRc ));
}
return iRc;
}
-
#endif // XB_INDEX_SUPPORT
diff --git a/src/core/xbixmdx.cpp b/src/core/xbixmdx.cpp
index 95f342c..135cde8 100755
--- a/src/core/xbixmdx.cpp
+++ b/src/core/xbixmdx.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -108,7 +108,7 @@ xbInt16 xbIxMdx::AddKey( void * vpTag, xbUInt32 ulRecNo ){
} else {
// land here with a full leaf node
- //std::cout << "Section B begin split leaf node\n";
+ // std::cout << "Section B begin split leaf node\n";
iHeadNodeUpdateOpt = 1;
npRightNode = AllocateIxNode( npTag, GetBlockSize() + (xbUInt32) npTag->iKeyItemLen, npTag->npCurNode->ulBlockNo * (xbUInt32) iBlockFactor );
@@ -122,7 +122,7 @@ xbInt16 xbIxMdx::AddKey( void * vpTag, xbUInt32 ulRecNo ){
ulNewRightChild = npRightNode->ulBlockNo * (xbUInt32) iBlockFactor;
}
- //std::cout << "ulNewRightChild = " << ulNewRightChild << "\n";
+ // std::cout << "ulNewRightChild = " << ulNewRightChild << "\n";
if(( iRc = xbIxMdx::SplitNodeL( npTag, npTag->npCurNode, npRightNode, npTag->npCurNode->iCurKeyNo, npTag->cpKeyBuf, ulRecNo )) != XB_NO_ERROR ){
iErrorStop = 130;
@@ -169,7 +169,8 @@ xbInt16 xbIxMdx::AddKey( void * vpTag, xbUInt32 ulRecNo ){
// section D - if cur node is split root, create new root
if(( npTag->npCurNode->ulBlockNo * (xbUInt32) iBlockFactor ) == npTag->ulRootPage ){
- // std::cout << "Section D begin\n";
+
+ // std::cout << "Section D begin right node = " << npRightNode << "\n";
if(( iRc = AddKeyNewRoot( npTag, npTag->npCurNode, npRightNode )) != XB_NO_ERROR ){
iErrorStop = 160;
@@ -179,9 +180,10 @@ xbInt16 xbIxMdx::AddKey( void * vpTag, xbUInt32 ulRecNo ){
if( npRightNode )
npRightNode = FreeNodeChain( npRightNode );
- //std::cout << "Section D end\n";
+ // std::cout << "Section D end\n";
} else {
+
// std::cout << "Section E, put key in parent\n";
if(( iRc = InsertNodeI( (void *) vpTag, (xbIxNode *) npParent, (xbInt16) npParent->iCurKeyNo, BlockToPage( npRightNode->ulBlockNo ))) != XB_NO_ERROR ){
iErrorStop = 170;
@@ -284,8 +286,8 @@ xbInt16 xbIxMdx::AddKeyNewRoot( xbMdxTag *npTag, xbIxNode *npLeft, xbIxNode *np
// std::cout << "AddKeyNewRoot - LeftBlock = " << npLeft->ulBlockNo << "\n";
// std::cout << "AddKeyNewRoot - RightBlock = " << npRight->ulBlockNo << "\n";
- pLastKey = (char *) malloc( (size_t) npTag->iKeyLen );
+ pLastKey = (char *) malloc( (size_t) npTag->iKeyLen );
if(( iRc = GetLastKeyForBlockNo( npTag, npLeft->ulBlockNo, pLastKey )) != XB_NO_ERROR ){
iErrorStop = 110;
throw iRc;
@@ -301,10 +303,17 @@ xbInt16 xbIxMdx::AddKeyNewRoot( xbMdxTag *npTag, xbIxNode *npLeft, xbIxNode *np
// set the key
pTrg+= 4;
+ // std::cout << "AddKeyNewRoot - key [" << pLastKey << "] len = [" << strlen( pLastKey) << "]\n";
memcpy( pTrg, pLastKey, (size_t) npTag->iKeyLen );
// set the right node number
- pTrg+= (npTag->iKeyLen);
+ //pTrg+= (npTag->iKeyLen);
+ // pTrg+= (npTag->iKeyItemLen)-4;
+
+ pTrg+= npTag->iKeyItemLen - 4;
+
+ //pTrg-=4;
+
ePutUInt32( pTrg, npRight->ulBlockNo * (xbUInt32) iBlockFactor );
// write out the new block
@@ -598,15 +607,17 @@ xbInt16 xbIxMdx::CheckTagIntegrity( void *vpTag, xbInt16 iOpt ){
iErrorStop = 100;
throw iRc;
}
- bLocked = xbTrue;
+ bLocked = xbTrue;
}
#endif
memset( npTag->cpKeyBuf2, 0x00, (size_t) npTag->iKeyLen );
+ // memset( npTag->cpKeyBuf2, 0x00, (size_t) npTag->iKeyItemLen );
cKeyType = GetKeyType( vpTag );
pPrevKeyBuf = (char *) calloc( 1, (size_t) npTag->iKeyLen );
iRc = GetFirstKey( vpTag, 0 );
+
memcpy( pPrevKeyBuf, GetKeyData( npTag->npCurNode, npTag->npCurNode->iCurKeyNo, npTag->iKeyItemLen ), (size_t) npTag->iKeyLen );
// for each key in the index, make sure it is trending in the right direction
@@ -719,7 +730,7 @@ xbInt16 xbIxMdx::CheckTagIntegrity( void *vpTag, xbInt16 iOpt ){
free( pPrevKeyBuf );
if( iErrorStop == 160 ){
- sMsg.Sprintf( "xbIxNdx::CheckTagIntegrity() Missing index entry for record [%d]", ulThisRecNo );
+ sMsg.Sprintf( "xbIxMdx::CheckTagIntegrity() Missing index entry for record [%d]", ulThisRecNo );
xbase->WriteLogMessage( sMsg, iOpt );
}
}
@@ -1171,8 +1182,13 @@ xbInt16 xbIxMdx::CreateTag( const xbString &sName, const xbString &sKey, const
tte->cKeyType2 = tte->cKeyType;
tte->iKeyItemLen = tte->iKeyLen + 4;
+ while(( tte->iKeyItemLen % 4 ) != 0 ) tte->iKeyItemLen++;
tte->iKeysPerBlock = (xbInt16) (GetBlockSize() - 12) / tte->iKeyItemLen;
+
+ //std::cout << "-------------- create tag info\n";
+ //std::cout << "keylen=" << tte->iKeyLen << " iKeyItemLen = " << tte->iKeyItemLen << " keys per block calc = " << tte->iKeysPerBlock << "\n";
+
tte->cKeyFmt3 = CalcTagKeyFmt( *tte->exp );
// printf( "ulRootPage=[%d] cKeyFmt2=[%d] cKeyType2=[%d] iKeyLen=[%d]iKeysPerBlock=[%d]\n", tte->ulRootPage, tte->cKeyFmt2, tte->cKeyType2, tte->iKeyLen, tte->iKeysPerBlock );
@@ -2657,6 +2673,7 @@ xbInt16 xbIxMdx::GetFirstKey( void *vpTag, xbInt16 iRetrieveSw = 0 ){
// convert the tag pointer to mdx tag pointer
xbMdxTag * mpTag = (xbMdxTag *) vpTag;
+
try{
// clear out any history
if( mpTag->npNodeChain ){
@@ -2668,6 +2685,7 @@ xbInt16 xbIxMdx::GetFirstKey( void *vpTag, xbInt16 iRetrieveSw = 0 ){
iErrorStop = 100;
throw iRc;
}
+
// lRootPage is available
if(( iRc = GetBlock( vpTag, (mpTag->ulRootPage / (xbUInt32) iBlockFactor), 1 )) != XB_NO_ERROR ){
iErrorStop = 110;
@@ -2683,8 +2701,7 @@ xbInt16 xbIxMdx::GetFirstKey( void *vpTag, xbInt16 iRetrieveSw = 0 ){
return iRc;
}
- while( !IsLeaf( vpTag, mpTag->npCurNode )) // go down the chain looking for a leaf node
- {
+ while( !IsLeaf( vpTag, mpTag->npCurNode )){ // go down the chain looking for a leaf node
if(( iRc = GetKeyPtr( vpTag, 0, mpTag->npCurNode, ulKeyPtr )) != XB_NO_ERROR ){
iErrorStop = 120;
throw iRc;
@@ -2878,7 +2895,7 @@ xbInt16 xbIxMdx::GetLastKey( xbUInt32 ulBlockNo, void *vpTag, xbInt16 iRetrieveS
}
mpTag->npCurNode->iCurKeyNo = ulNoOfKeys;
- ulNoOfKeys = eGetUInt32( mpTag->npCurNode->cpBlockData );
+ ulNoOfKeys = eGetUInt32( mpTag->npCurNode->cpBlockData );
xbUInt32 ulKeyPtr = 0;
while( !IsLeaf( vpTag, mpTag->npCurNode )){ // go down the chain looking for a leaf node
@@ -3559,6 +3576,11 @@ xbInt16 xbIxMdx::InsertNodeI( void *vpTag, xbIxNode *npNode, xbInt16 iSlotNo, xb
pSrc = pLastKey;
for( xbInt16 i = 0; i < npTag->iKeyLen; i++ )
*pTrg++ = *pSrc++;
+
+ pTrg = pNewKeyPos;
+ //pTrg+= npTag->iKeyItemLen - 4;
+ pTrg+= npTag->iKeyItemLen;
+
ePutUInt32( pTrg, ulPtr);
ePutInt32( npNode->cpBlockData, ++lKeyCnt );
@@ -4683,7 +4705,7 @@ xbInt16 xbIxMdx::SplitNodeI( void *vpTag, xbIxNode * npLeft, xbIxNode *npRight,
}
catch (xbInt16 iRc ){
xbString sMsg;
- sMsg.Sprintf( "xbIxNdx::SplitNodeI() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
+ sMsg.Sprintf( "xbIxMdx::SplitNodeI() Exception Caught. Error Stop = [%d] iRc = [%d]", iErrorStop, iRc );
xbase->WriteLogMessage( sMsg );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
}
@@ -4712,7 +4734,7 @@ xbInt16 xbIxMdx::SplitNodeI( void *vpTag, xbIxNode * npLeft, xbIxNode *npRight,
\returns <a href="xbretcod_8h.html">Return Codes</a>
*/
-xbInt16 xbIxMdx::SplitNodeL( void *vpTag, xbIxNode * npLeft, xbIxNode *npRight,
+xbInt16 xbIxMdx::SplitNodeL( void *vpTag, xbIxNode * npLeft, xbIxNode *npRight,
xbInt16 iSlotNo, char * cpKeyBuf, xbUInt32 ulPtr ){
xbInt16 iRc = XB_NO_ERROR;
diff --git a/src/core/xbixndx.cpp b/src/core/xbixndx.cpp
index dcec5f9..9d946dd 100755
--- a/src/core/xbixndx.cpp
+++ b/src/core/xbixndx.cpp
@@ -342,7 +342,7 @@ xbInt16 xbIxNdx::CheckTagIntegrity( void *vpTag, xbInt16 iOpt ){
iErrorStop = 100;
throw iRc;
}
- bLocked = xbTrue;
+ bLocked = xbTrue;
}
#endif
@@ -425,7 +425,6 @@ xbInt16 xbIxNdx::CheckTagIntegrity( void *vpTag, xbInt16 iOpt ){
sMsg.Sprintf( "CheckTagIntegrity() Index entry count [%ld] matches dbf record count [%ld]", ulIxCnt, ulDbfCnt );
xbase->WriteLogMessage( sMsg, iOpt );
}
-
if( pPrevKeyBuf )
free( pPrevKeyBuf );
diff --git a/src/core/xblog.cpp b/src/core/xblog.cpp
index ea7c9d6..6031c9e 100755
--- a/src/core/xblog.cpp
+++ b/src/core/xblog.cpp
@@ -25,8 +25,8 @@ namespace xb{
//! @brief Constructor.
xbLog::xbLog() : xbFile( NULL ){
- SetDirectory( GetDefaultLogDirectory());
- SetFileName ( GetDefaultLogFileName());
+ SetDirectory( GetLogDirectory());
+ SetFileName ( GetLogFileName());
bLoggingStatus = xbFalse;
lLogSize = 50000;
diff --git a/src/core/xbssv.cpp b/src/core/xbssv.cpp
index 252daab..d3e1070 100755
--- a/src/core/xbssv.cpp
+++ b/src/core/xbssv.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -15,8 +15,6 @@ Email Contact:
#include "xbase.h"
-
-
namespace xb{
const xbErrorMessage xbErrorMessages[] = {
@@ -26,6 +24,7 @@ const xbErrorMessage xbErrorMessages[] = {
{ XB_DUP_TABLE_OR_ALIAS, "Duplicate Alias/Table Name" },
{ XB_INVALID_NODELINK, "Invalid Node Link" },
{ XB_KEY_NOT_UNIQUE, "Key Not Unique" },
+ { XB_MEMCPY_ERROR, "Memory copy failure" },
{ XB_FILE_EXISTS, "File Already Exists" },
{ XB_ALREADY_OPEN, "Database already open" },
{ XB_DBF_FILE_NOT_OPEN, "DBF File Not Open" },
@@ -49,6 +48,8 @@ const xbErrorMessage xbErrorMessages[] = {
{ XB_INVALID_TABLE_NAME, "Invalid Table Name" },
{ XB_EMPTY, "Empty Table or Index" },
{ XB_LIMIT_REACHED, "Limit Reached" },
+ { XB_BLOCKREAD_NOT_ENABLED, "Block Read Mode is not enabled" },
+ { XB_DIRECTORY_ERROR, "Directory Read/Write error" },
{ XB_INVALID_FIELD_TYPE, "Unknown Field Type" },
{ XB_INVALID_FIELD_NO, "Invalid Field Number" },
{ XB_INVALID_DATA, "Invalid Data" },
@@ -89,12 +90,13 @@ xbBool xbSsv::bDefaultAutoCommit = xbTrue;
xbString xbSsv::sDataDirectory = PROJECT_DATA_DIR;
#else
xbString xbSsv::sDataDirectory = PROJECT_DATA_DIR;
-#endif
+#endif //
#ifdef XB_LOGGING_SUPPORT
-xbString xbSsv::sDefaultLogDirectory = PROJECT_LOG_DIR;
-xbString xbSsv::sDefaultLogFileName = PROJECT_DFLT_LOGFILE;
-#endif
+xbString xbSsv::sLogDirectory = PROJECT_LOG_DIR;
+//xbString xbSsv::sLogDirectory = "";
+xbString xbSsv::sLogFileName = PROJECT_DFLT_LOGFILE;
+#endif // XB_LOGGING_SUPPORT
#ifdef XB_LOCKING_SUPPORT
xbInt32 xbSsv::lDefaultLockWait = 100;
@@ -104,18 +106,21 @@ xbInt16 xbSsv::iDefaultLockFlavor = 1;
xbBool xbSsv::bMultiUser = xbTrue;
#else
xbBool xbSsv::bMultiUser = xbFalse;
-#endif
+#endif // XB_LOCKING_SUPPORT
#if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
xbInt16 xbSsv::iUniqueKeyOpt = XB_HALT_ON_DUPKEY;
// is one of XB_HALT_ON_DUPKEY || XB_EMULATE_DBASE
-#endif
+#endif // defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
#ifdef XB_MDX_SUPPORT
xbInt16 xbSsv::iCreateMdxBlockSize = 1024; // 1024 is DBase 7 default size for MDX index blocks
-#endif
+#endif // XB_MDX_SUPPORT
+#ifdef XB_BLOCKREAD_SUPPORT
+xbUInt32 xbSsv::ulDefaultBlockReadSize = 32768; // 32K buffer for block DBF datafile reads
+#endif // XB_BLOCKREAD_SUPPORT
/*************************************************************************/
//! @brief Class Constructor.
@@ -139,7 +144,6 @@ void xbSsv::BitDump( char c ) const {
xbBool xbSsv::BitSet( unsigned char c, xbInt16 iBitNo ) const {
return c & 1 << iBitNo;
}
-
/*************************************************************************/
//! @brief Display error message on console for a given error number.
/*!
@@ -164,7 +168,6 @@ void xbSsv::DisplayError( xbInt16 iErrorCode ) const {
xbBool xbSsv::GetDefaultAutoCommit() const {
return bDefaultAutoCommit;
}
-
/*************************************************************************/
//! @brief Get the current data directory.
/*!
@@ -184,19 +187,6 @@ xbString &xbSsv::GetDataDirectory() const {
xbString & xbSsv::GetDefaultDateFormat() const {
return sDefaultDateFormat;
}
-
-/*************************************************************************/
-// @brief Get the default file format version.
-/*
- \returns 3 - Dbase III file format<br>
- 4 - Dbase IV file format<br>
-*/
-
-/*
-xbInt16 xbSsv::GetDefaultFileVersion() const {
- return iDefaultFileVersion;
-}
-*/
/*************************************************************************/
//! @brief Get the Endian type.
/*!
@@ -206,7 +196,6 @@ xbInt16 xbSsv::GetDefaultFileVersion() const {
xbInt16 xbSsv::GetEndianType() const {
return iEndianType;
}
-
/*************************************************************************/
//! @brief Get an error message.
/*!
@@ -230,7 +219,25 @@ const char * xbSsv::GetErrorMessage( xbInt16 iErrorCode ) const{
}
return "";
}
+/*************************************************************************/
+//! @brief Get home directory.
+/*!
+ \param sHomeDirOut - Output home directory for current user.
+ \returns void
+*/
+
+void xbSsv::GetHomeDir( xbString &sHomeDirOut ){
+ #ifdef WIN32
+ sHomeDirOut.Sprintf( "%s%s", getenv( "HOMEDRIVE" ), getenv( "HOMEPATH" ));
+ #else
+ sHomeDirOut.Sprintf( "%s", getenv( "HOME" ));
+ sHomeDirOut.Trim();
+ if( sHomeDirOut == "" )
+ sHomeDirOut.Sprintf( "%s", getpwuid( getuid())->pw_dir );
+ #endif
+ sHomeDirOut.Trim();
+}
/*************************************************************************/
//! @brief Set the data directory.
/*!
@@ -240,7 +247,6 @@ const char * xbSsv::GetErrorMessage( xbInt16 iErrorCode ) const{
void xbSsv::SetDataDirectory( const xbString &sDataDirectory ){
this->sDataDirectory = sDataDirectory;
-
#ifdef WIN32
this->sDataDirectory.SwapChars( '/', '\\' );
#else
@@ -302,57 +308,53 @@ void xbSsv::SetEndianType() {
/*!
\returns Returns the log file name.
*/
-xbString & xbSsv::GetDefaultLogFileName() const {
- return sDefaultLogFileName;
+xbString & xbSsv::GetLogFileName() const {
+ return sLogFileName;
}
-
/*************************************************************************/
//! @brief Get the default log directory.
/*!
\returns Returns the log directory.
*/
-xbString & xbSsv::GetDefaultLogDirectory() const {
- return sDefaultLogDirectory;
+xbString & xbSsv::GetLogDirectory() const {
+ return sLogDirectory;
}
/*************************************************************************/
//! @brief Set the default log directory name.
/*!
- \param sDefaultLogDirectory Name of desired log directory.
+ \param sLogDirectory Name of desired log directory.
*/
-void xbSsv::SetDefaultLogDirectory( const xbString &sDefaultLogDirectory ){
-
- this->sDefaultLogDirectory = sDefaultLogDirectory;
+void xbSsv::SetLogDirectory( const xbString &sLogDirectoryIn ){
+ this->sLogDirectory = sLogDirectoryIn;
#ifdef WIN32
- this->sDefaultLogDirectory.SwapChars( '/', '\\' );
+ this->sLogDirectory.SwapChars( '/', '\\' );
#else
- this->sDefaultLogDirectory.SwapChars( '\\', '/' );
+ this->sLogDirectory.SwapChars( '\\', '/' );
#endif
-
}
#else
-xbString & xbSsv::GetDefaultLogFileName() const {
+xbString & xbSsv::GetLogFileName() const {
return sNullString;
}
-xbString & xbSsv::GetDefaultLogDirectory() const {
+xbString & xbSsv::GetLogDirectory() const {
return sNullString;
}
-void xbSsv::SetDefaultLogDirectory( const xbString &sDefaultLogDirectory ){
+void xbSsv::SetLogDirectory( const xbString &sLogDirectory ){
return;
}
#endif
-
/*************************************************************************/
#ifdef XB_LOCKING_SUPPORT
@@ -541,6 +543,29 @@ xbInt16 xbSsv::SetUniqueKeyOpt( xbInt16 iOpt ){
}
#endif
/************************************************************************/
+#ifdef XB_BLOCKREAD_SUPPORT
+
+//! @brief Get Default Read Block Size
+/*!
+ This routine returns the default read block size used when allocating
+ buffer space for block reads of table data. Initial setting is 32768 bytes.
+*/
+xbUInt32 xbSsv::GetDefaultBlockReadSize() const {
+ return ulDefaultBlockReadSize;
+}
+
+
+//! @brief Set Default Read Block Size
+/*!
+ This routine sets the default read block size used when allocating
+ buffer space for block reads of table data. Initial setting is 32768 bytes.
+*/
+void xbSsv::SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize ){
+ ulDefaultBlockReadSize = ulDfltBlockReadSize;
+}
+
+#endif // XB_BLOCKREAD_SUPPORT
+/************************************************************************/
diff --git a/src/core/xbstring.cpp b/src/core/xbstring.cpp
index 81e67b8..701e50e 100755
--- a/src/core/xbstring.cpp
+++ b/src/core/xbstring.cpp
@@ -1267,6 +1267,45 @@ xbString &xbString::PadRight( char c, xbUInt32 ulNewLen ){
//! @brief Determine position of a given character
/*!
\param c Seek character
+ \param ulStartPos starting position for search, first position is 1
+ \returns Position within string. Returns 0 if not found.
+*/
+xbUInt32 xbString::Pos(char c, xbUInt32 ulStartPos ) const {
+
+ if (data == NULL)
+ return 0;
+ char *p = data;
+
+ if( ulStartPos >= size )
+ return 0;
+
+ xbUInt32 iPos = 0;
+ while( (iPos+1) < ulStartPos ){
+ p++;
+ iPos++;
+ }
+ xbBool bFound = 0;
+ while( *p && !bFound && iPos < ( size - 1 )){
+ if( *p == c )
+ bFound = 1;
+ else {
+ iPos++;
+ p++;
+ }
+ }
+
+ if( bFound )
+ return iPos + 1;
+ else
+ return 0;
+}
+
+
+
+/************************************************************************/
+//! @brief Determine position of a given character
+/*!
+ \param c Seek character
\returns Position within string. Returns 0 if not found.
*/
xbUInt32 xbString::Pos(char c) const {
@@ -1375,41 +1414,51 @@ xbString &xbString::Replace( const char *sReplace, const char *sReplaceWith, xbI
xbBool bDone = xbFalse;
xbUInt32 ulPos;
- xbUInt32 ulNewSize;
+ xbUInt32 ulNewLen;
+ xbUInt32 ulReplaceWithLen;
+ xbUInt32 ulRsLen; // size of right side of string after replaced data
xbUInt32 ulSp2;
char *sBuf2;
+ const char *s; // source ptr
+ char *t; // target ptr
+
while( !bDone ){
ulPos = Pos( sReplace );
if( ulPos == 0 ){
bDone = xbTrue;
} else {
- ulNewSize = this->size + sizeof( sReplaceWith ) - sizeof( sReplace );
- sBuf2 = (char *) calloc( 1, ulNewSize );
+ ulReplaceWithLen = (xbUInt32) strlen( sReplaceWith );
+ ulNewLen = this->size + ulReplaceWithLen - (xbUInt32) strlen( sReplace );
+ sBuf2 = (char *) calloc( 1, ulNewLen );
// copy part1
+ t = sBuf2;
+ s = data;
for( xbUInt32 ul = 0; ul < ulPos-1; ul++ )
- sBuf2[ul] = data[ul];
+ *t++ = *s++;
// copy part2
- strcat( sBuf2, sReplaceWith );
+ s = sReplaceWith;
+ for( xbUInt32 ul = 0; ul < ulReplaceWithLen; ul++ )
+ *t++ = *s++;
// copy part3
- ulSp2 = ulPos + strlen( sReplace );
- char *p = data;
- p+= (ulSp2 - 1);
- strcat( sBuf2, p );
+ ulSp2 = ulPos + (xbUInt32) strlen( sReplace );
+ s = data;
+ s+= (ulSp2 - 1);
+ ulRsLen = (xbUInt32) strlen( s );
+ for( xbUInt32 ul = 0; ul < ulRsLen; ul++ )
+ *t++ = *s++;
if( iOption )
bDone = xbTrue;
free(data);
data = sBuf2;
-
}
}
-
return *this;
}
diff --git a/src/core/xbtblmgr.cpp b/src/core/xbtblmgr.cpp
index f154dc6..2fe6a8c 100755
--- a/src/core/xbtblmgr.cpp
+++ b/src/core/xbtblmgr.cpp
@@ -22,20 +22,19 @@ Email Contact:
namespace xb{
/*************************************************************************/
-
xbTblMgr::xbTblMgr(){
TblList = NULL;
iOpenTableCount = 0;
}
/*************************************************************************/
-
xbTblMgr::~xbTblMgr(){
xbTblList *l;
if( TblList ){
while( TblList ){
l = TblList;
TblList = TblList->pNext;
+ delete l->psFqTblName;
delete l->psTblName;
delete l->psTblAlias;
free( l );
@@ -44,47 +43,74 @@ xbTblMgr::~xbTblMgr(){
}
/*************************************************************************/
-
-xbInt16 xbTblMgr::AddTblToTblList( xbDbf *d, const xbString & sTblName ){
- return AddTblToTblList( d, sTblName, "" );
+xbInt16 xbTblMgr::AddTblToTblList( xbDbf *d, const xbString & sFqTblName ){
+ return AddTblToTblList( d, sFqTblName, "" );
}
/*************************************************************************/
+xbInt16 xbTblMgr::AddTblToTblList( xbDbf *d, const xbString & sFqTblName, const xbString & sTblAlias ) {
+
+ // Set the Fq (fully qualified name)
+ // Pull the table name from the FQ name
+ // Set the Alias to the table name if the alias name is not provided
-xbInt16 xbTblMgr::AddTblToTblList( xbDbf *d, const xbString & sTblName, const xbString & sTblAlias ) {
xbTblList *i, *s, *t;
xbInt16 iRc = 0;
xbInt16 iErrorStop = 0;
+ xbString sTblName;
xbString sAlias;
+ xbString sTemp;
+ xbString sFqTemp;
+ xbUInt32 iSlashPos;
+
+ // std::cout << "AddTblToTblList fq in = [" << sFqTblName.Str() << "] alias in =[" << sTblAlias.Str() << "]\n";
try{
- if( sTblName.Len() == 0 ){
+ if( sFqTblName.Len() == 0 ){
iErrorStop = 100;
iRc = XB_INVALID_TABLE_NAME;
throw iRc;
}
- if( sTblAlias.Len() == 0 ){
+ sTblName = sFqTblName;
+ sTblName.SwapChars( '\\', '/' );
+ iSlashPos = sTblName.GetLastPos( '/' );
+
+ // std::cout << "slashpos = " << iSlashPos << "\n";
+
+
+ if( iSlashPos > 0 ){
+ sTblName.Ltrunc( iSlashPos ); // remove the directory part from the table name
+ sFqTemp = sFqTblName;
+ } else{
+ sFqTemp.Sprintf( "%s%s", GetDataDirectory().Str(), sFqTblName.Str()); // add the dir part to the FQ name
+ }
+
+ xbUInt32 iDbfPos = sFqTemp.Pos( ".DBF" );
+ if( iDbfPos == 0 )
+ sFqTemp += ".DBF";
+ else
+ sTblName.Resize( sTblName.Len() - 3 );
+
+ if( sTblAlias.Len() == 0 )
sAlias = sTblName;
- sAlias.SwapChars( '\\', '/' );
- xbUInt32 iPos = sAlias.GetLastPos( '/' );
- if( iPos > 0 ) /* get rid of the directory part of the name */
- sAlias.Ltrunc( iPos );
- } else {
+ else
sAlias = sTblAlias;
- }
+
+ //std::cout << "fq=[" << sFqTemp.Str() << "] tblname = [" << sTblName.Str() << "] alias = [" << sAlias.Str() << "]\n";
if((i = (xbTblList *) calloc(1, sizeof(xbTblList))) == NULL){
iErrorStop = 110;
iRc = XB_NO_MEMORY;
throw iRc;
}
- i->psTblName = new xbString( sTblName );
- i->psTblAlias = new xbString( sAlias );
- i->pDbf = d;
- i->pNext = NULL;
+ i->psFqTblName = new xbString( sFqTemp );
+ i->psTblName = new xbString( sTblName );
+ i->psTblAlias = new xbString( sAlias );
+ i->pDbf = d;
+ i->pNext = NULL;
// insert new table into the list of open tables, sorted by table name
s = NULL;
@@ -97,7 +123,7 @@ xbInt16 xbTblMgr::AddTblToTblList( xbDbf *d, const xbString & sTblName, const xb
if( t && (strcmp( t->psTblAlias->Str(), sAlias.Str()) == 0 )){
iErrorStop = 120;
- delete i->psTblName;
+ delete i->psFqTblName;
delete i->psTblAlias;
free( i );
iRc = XB_DUP_TABLE_OR_ALIAS;
@@ -131,7 +157,7 @@ xbInt16 xbTblMgr::DisplayTableList() const {
else{
while( l ){
iTblCnt++;
- std::cout << iTblCnt << " Table=[" << l->psTblName->Str() << "] Alias=[" << l->psTblAlias->Str() << "]" << std::endl;
+ std::cout << iTblCnt << " FqFileName=[" << l->psFqTblName->Str() << "] TableName=[" << l->psTblName->Str() << "] Alias=[" << l->psTblAlias->Str() << "]" << std::endl;
l = l->pNext;
}
}
@@ -149,6 +175,7 @@ xbInt16 xbTblMgr::DisplayTableList() const {
xbDbf *xbTblMgr::GetDbfPtr(const xbString& sTblAlias) const {
+
xbTblList *t;
t = TblList;
xbString s;
@@ -159,14 +186,26 @@ xbDbf *xbTblMgr::GetDbfPtr(const xbString& sTblAlias) const {
s.Set( sTblAlias );
while( t ){
- if( s == t->psTblAlias->Str())
+ if( s == t->psTblAlias->Str()){
+ return t->pDbf;
+ }
+ t = t->pNext;
+ }
+
+ t = TblList;
+ while( t ){
+ std::cout << "s = [" << s.Str() << "] tbl name = [" << t->psTblName->Str() << "]\n";
+ if( s == t->psTblName->Str()){
+ std::cout << "found\n";
return t->pDbf;
+ }
t = t->pNext;
}
+
t = TblList;
while( t ){
- if( sTblAlias == t->psTblName->Str())
+ if( sTblAlias == t->psFqTblName->Str())
return t->pDbf;
t = t->pNext;
}
@@ -227,6 +266,7 @@ xbInt16 xbTblMgr::RemoveTblFromTblList( const xbString & sTblAlias ) {
else
TblList = i->pNext;
+ delete i->psFqTblName;
delete i->psTblName;
delete i->psTblAlias;
free( i );
@@ -254,6 +294,7 @@ xbInt16 xbTblMgr::RemoveTblFromTblList( xbDbf *pTbl ) {
else
TblList = i->pNext;
+ delete i->psFqTblName;
delete i->psTblName;
delete i->psTblAlias;
free( i );
diff --git a/src/core/xbxbase.cpp b/src/core/xbxbase.cpp
index 7443b26..20b7fcc 100755
--- a/src/core/xbxbase.cpp
+++ b/src/core/xbxbase.cpp
@@ -24,6 +24,10 @@ xbXBase::xbXBase() {
#ifdef XB_LOGGING_SUPPORT
xLog = new xbLog();
#endif
+
+ xbFile f( this );
+ f.SetHomeFolders();
+
}
/*************************************************************************/
//! @brief Class Deconstructor.
@@ -69,6 +73,53 @@ xbInt16 xbXBase::CloseAllTables(){
}
return iRc;
}
+
+
+
+/*************************************************************************/
+//! @brief Parse commmand line options for a given parm request
+/*!
+ \param lArgc Value passed from main( argc, argv[] )
+ \param sArgv Valued passed from main
+ \param sOptRqst Option to search for in the arguments list
+ \param sParmOut String token immediately to the right of the the option request, if found
+ \returns 0 - paramater request not found<br> 1 - Parameter found
+*/
+
+xbInt16 xbXBase::GetCmdLineOpt( xbInt32 lArgc, char **sArgv, const char *sOptRqst, xbString &sParmOut ){
+ xbString sOpt( sOptRqst );
+ return GetCmdLineOpt( lArgc, sArgv, sOpt, sParmOut );
+}
+
+/*************************************************************************/
+//! @brief Parse commmand line options for a given parm request
+/*!
+ \param lArgc Value passed from main( argc, argv[] )
+ \param sArgv Valued passed from main
+ \param sOptRqst Option to search for in the arguments list
+ \param sParmOut String token immediately to the right of the the option request, if found
+ \returns 0 - paramater request not found<br> 1 - Parameter found
+*/
+
+xbInt16 xbXBase::GetCmdLineOpt( xbInt32 lArgc, char **sArgv, xbString &sOptRqst, xbString &sParmOut ){
+
+ xbInt16 iFound = 0;
+ sParmOut = "";
+ if( lArgc < 2 ) // first string is the program name
+ return iFound;
+
+ xbInt32 i = 1;
+ while( iFound == 0 && i < lArgc ){
+ if( sOptRqst == sArgv[i] ){
+ iFound = 1;
+ if( i < (lArgc-1))
+ sParmOut = sArgv[i+1];
+ }
+ i++;
+ }
+ return iFound;
+}
+
/*************************************************************************/
#ifdef XB_LOGGING_SUPPORT
//! @brief Get fully qualified log file name.
@@ -109,6 +160,7 @@ xbBool xbXBase::GetLogStatus() const {
\return void
*/
void xbXBase::SetLogFileName( const xbString & sLogFileName ){
+
xLog->SetFileName( sLogFileName );
}
@@ -550,7 +602,7 @@ xbDbf* xbXBase::Open( const xbString &sTableName, xbInt16 &iRc ){
\param iOpenMode - XB_READ_WRITE or XB_READ
\param iShareMode - XB_SINGLE_USER or XB_MULTI_USER
\param iRequestVersion 0 - Highest available
- 4 - Version four dbf
+ 4 - Version four dbf
3 - Version three dbf
\param iRc - Return code from open request
\returns param dbf - Output pointer to dbf file opened or null if error
diff --git a/src/examples/xb_ex_expression.cpp b/src/examples/xb_ex_expression.cpp
index dc6d7e6..840e9c6 100755
--- a/src/examples/xb_ex_expression.cpp
+++ b/src/examples/xb_ex_expression.cpp
@@ -65,7 +65,9 @@ void PrintResult( xbString *sExpression, xbExp *exp ){
}
//*********************************************************************************************************************************
-int main( int ac, char ** av ){
+//int main( int ac, char ** av ){
+
+int main(){
xbInt16 iRc = 0;
xbInt16 iErrorStop = 0;
diff --git a/src/examples/xb_ex_ssv.cpp b/src/examples/xb_ex_ssv.cpp
new file mode 100755
index 0000000..a78345f
--- /dev/null
+++ b/src/examples/xb_ex_ssv.cpp
@@ -0,0 +1,134 @@
+/* xb_ex_ssv.cpp
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2021,2022,2023 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+This program demonstrates using functionality of the xbSsv class (Shared system values)
+
+*/
+
+#include "xbase.h"
+
+using namespace xb;
+
+int main( int ac, char ** av ){
+
+ xbXBase x; // set up xbase for business
+ xbString sMsg; // a message string
+
+ sMsg.Sprintf( "Program [%s] initializing...", av[0] );
+ std::cout << sMsg.Str() << std::endl;
+
+
+ // example code to set up log file usage
+ #ifdef XB_LOGGING_SUPPORT
+ char cSeperator; // is this a unix (/) or windows (\) file system
+ xbString sLog; // general string for log file activities
+ sLog = x.GetLogFqFileName().Str(); // get the system default log file name
+ std::cout << "System default logfile is [" << sLog.Str() << "]" << std::endl;
+
+ cSeperator = sLog.GetPathSeparator(); // get the seperator from
+ std::cout << "Path seperator = [" << cSeperator << "]" << std::endl;
+
+ sLog.Sprintf( "..%c", cSeperator );
+ x.SetLogDirectory( sLog );
+ std::cout << "sLog = [" << sLog.Str() << "]\n";
+
+ sLog = x.GetLogFqFileName().Str(); // get the system default log file name
+ std::cout << "New logfile is [" << sLog.Str() << "]" << std::endl;
+
+ // turn on logging after file name set
+ x.EnableMsgLogging();
+ #endif // XB_LOGGING_SUPPORT
+
+ // const char *GetErrorMessage( xbInt16 ErrorCode ) const;
+ // void DisplayError( xbInt16 ErrorCode ) const;
+ std::cout << "DisplayError( -100 ) - ";
+ x.DisplayError( -100 );
+ // << "]" << std::endl;
+
+ // void SetDefaultDateFormat( const xbString &sDefaultDateFormat );
+ // xbString& GetDefaultDateFormat() const;
+ std::cout << "GetDefaultDateFormat() - " << x.GetDefaultDateFormat().Str() << std::endl;
+
+
+ // void SetDataDirectory ( const xbString &sDataDirectory );
+ // xbString& GetDataDirectory() const;
+ std::cout << "GetDataDirectory() - " << x.GetDataDirectory().Str() << std::endl;
+
+ // xbInt16 GetEndianType() const;
+ if( x.GetEndianType() == 'L' )
+ std::cout << "Little Endian Architecture." << std::endl;
+ else
+ std::cout << "Bid Endian Architecture." << std::endl;
+
+ //xbBool GetDefaultAutoCommit() const;
+ //void SetDefaultAutoCommit( xbBool bDefaultAutoCommit );
+ if( x.GetDefaultAutoCommit())
+ std::cout << "AutoCommit is on." << std::endl;
+ else
+ std::cout << "AutoCommit is off." << std::endl;
+
+ //xbBool GetMultiUser () const;
+ //void SetMultiUser ( xbBool bMultiUser );
+ if( x.GetMultiUser())
+ std::cout << "Multi user (locking) is enabled." << std::endl;
+ else
+ std::cout << "Multi user (locking) not enabled." << std::endl;
+
+ #if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
+ // xbInt16 GetUniqueKeyOpt () const;
+ // xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );
+ // XB_HALT_ON_DUPKEY
+ // XB_EMULATE_DBASE
+ if( x.GetUniqueKeyOpt() == XB_HALT_ON_DUPKEY )
+ std::cout << "UniqueKey option - XB_HALT_ON_DUPKEY" << std::endl;
+ else if( x.GetUniqueKeyOpt() == XB_EMULATE_DBASE )
+ std::cout << "UniqueKey option - XB_EMULATE_DBASE" << std::endl;
+ #endif // (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
+
+ #ifdef XB_LOCKING_SUPPORT
+ //xbInt16 GetDefaultLockRetries () const;
+ //void SetDefaultLockRetries ( xbInt16 iRetryCount );
+ //xbInt32 GetDefaultLockWait () const;
+ //void SetDefaultLockWait ( xbInt32 lRetryWait );
+ //xbInt16 GetDefaultLockFlavor () const;
+ //void SetDefaultLockFlavor ( xbInt16 iLockFlavor );
+ //xbBool GetDefaultAutoLock () const;
+ //void SetDefaultAutoLock ( xbBool bAutoLock );
+ //void EnableDefaultAutoLock ();
+ //void DisableDefaultAutoLock ();
+
+ std::cout << "GetDefaultLockRetries() - " << x.GetDefaultLockRetries() << std::endl;
+ std::cout << "GetDefaultLockWait() - " << x.GetDefaultLockWait() << std::endl;
+ std::cout << "GetDefaultAutoLock() - " << x.GetDefaultAutoLock() << std::endl;
+ #endif // XB_LOCKING_SUPPORT
+
+ #ifdef XB_MDX_SUPPORT
+ // xbInt16 GetCreateMdxBlockSize() const;
+ // xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );
+ std::cout << "GetCreateMdxBlockSize() - " << x.GetCreateMdxBlockSize() << std::endl;
+ #endif // XB_MDX_SUPPORT
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ // xbUInt32 GetDefaultBlockReadSize() const;
+ // void SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize );
+ std::cout << "GetDefaultBlockReadSize() - " << x.GetDefaultBlockReadSize() << std::endl;
+ #endif // XB_BLOCKREAD_SUPPORT
+
+ //xbBool BitSet ( unsigned char c, xbInt16 iBitNo ) const;
+ //void BitDump ( unsigned char c ) const;
+ //void BitDump ( char c ) const;
+ std::cout << "BitDump( 'A' ) - ";
+ x.BitDump( 'A' );
+
+ return 0;
+}
diff --git a/src/examples/xb_ex_v4_upd_dbf.cpp b/src/examples/xb_ex_v4_upd_dbf.cpp
index 96b6bdf..75d0641 100755
--- a/src/examples/xb_ex_v4_upd_dbf.cpp
+++ b/src/examples/xb_ex_v4_upd_dbf.cpp
@@ -258,15 +258,15 @@ int main()
throw iRc;
}
-
// example code to loop through the table
- for( xbUInt32 ulTuple = 1; ulTuple <= MyTable->GetRecordCount(); ulTuple++ ){
- if(( iRc = MyTable->GetRecord( ulTuple ) != XB_NO_ERROR )){
+ for( xbUInt32 ul = 1; ul <= MyTable->GetRecordCount(); ul++ ){
+ if(( iRc = MyTable->GetRecord( ul )) != XB_NO_ERROR ){
iErrorStop = 430;
throw iRc;
}
// do something with the record here
std::cout << "Tuple = " << MyTable->GetCurRecNo() << std::endl;
+
}
/* Close database and associated indexes */
diff --git a/src/include/xbase.h b/src/include/xbase.h
index 480d716..4ab8892 100755
--- a/src/include/xbase.h
+++ b/src/include/xbase.h
@@ -3,7 +3,7 @@
Xbase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license
@@ -41,6 +41,10 @@ Email Contact:
#include <ctype.h>
#endif
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+
#ifdef HAVE_STDARG_H
#include <stdarg.h>
#endif
@@ -89,6 +93,7 @@ Email Contact:
#include <xbexp.h>
#include <xbtag.h>
+#include <xbblkread.h>
#include <xbdbf.h> /* dbf base class */
#include <xbindex.h> /* index base class */
#include <xbfilter.h>
diff --git a/src/include/xbblkread.h b/src/include/xbblkread.h
new file mode 100755
index 0000000..353c618
--- /dev/null
+++ b/src/include/xbblkread.h
@@ -0,0 +1,70 @@
+/* xbblkread.h
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+*/
+
+#ifndef __XB_BLKREAD_H__
+#define __XB_BLKREAD_H__
+
+namespace xb{
+#ifdef XB_BLOCKREAD_SUPPORT
+
+
+
+//! @brief xbBlockRead class.
+/*!
+The xbBlockRead class can be used to read blocks of records at one time
+rather than one record at a time for perfomance improvements when reading a DBF file sequentially.<br>
+
+*/
+
+
+class XBDLLEXPORT xbBlockRead {
+
+ public:
+ xbBlockRead( xbDbf * d );
+ ~xbBlockRead();
+
+ #ifdef XB_DEBUG_SUPPORT
+ void DumpReadBlockInternals();
+ #endif
+
+ xbInt16 Init( xbUInt32 ulBlkSize = 0 );
+
+ xbUInt32 GetBlockFirstRecNo() const;
+ xbUInt32 GetBlockRecCnt() const;
+ xbUInt32 GetBlockSize() const;
+
+ xbInt16 GetRecord( xbUInt32 ulRecNo ); // retrieve a data record from a block to RecBuf
+ xbInt16 SetBlockSize( xbUInt32 ulBlkSize );
+
+
+ private:
+
+ xbInt16 GetBlockForRecNo( xbUInt32 ulRecNo ); // retrieve block from disk for a given record number
+
+ char *pBlock; // block pointer
+ xbUInt32 ulBlkSize; // block size in bytes
+ xbUInt32 ulFirstBlkRec; // first recod number in the block
+ xbUInt32 ulRecCnt; // number of records in block
+ xbUInt32 ulMaxRecs; // max number of records block can handle
+ xbBool bEof; // EOF flag
+ xbDbf *dbf; // reference to associated dbf file
+// xbXBase *xbase; // reference to main xbXBase structure
+ time_t tFmTime; // file modify time at time of block read
+
+};
+
+#endif // XB_BLOCKREAD
+} /* namespace */
+#endif /* __XB_BLOCKREAD_H__ */
diff --git a/src/include/xbconfig.h.in b/src/include/xbconfig.h.in
index 969b761..f0d475a 100755
--- a/src/include/xbconfig.h.in
+++ b/src/include/xbconfig.h.in
@@ -51,6 +51,7 @@
#cmakedefine HAVE_DOS_H
#cmakedefine HAVE_FCNTL_H
#cmakedefine HAVE_INTTYPES_H
+#cmakedefine HAVE_PWD_H
#cmakedefine HAVE_STDARG_H
#cmakedefine HAVE_STDARGS_H
#cmakedefine HAVE_STRING_H
@@ -100,6 +101,7 @@
#cmakedefine XB_SQL_SUPPORT
#cmakedefine XB_INF_SUPPORT
#cmakedefine XB_FILTER_SUPPORT
+#cmakedefine XB_BLOCKREAD_SUPPORT
#cmakedefine XB_UTILS_SUPPORT
#cmakedefine XB_EXAMPLES_SUPPORT
diff --git a/src/include/xbdate.h b/src/include/xbdate.h
index 5406cbb..8dff463 100755
--- a/src/include/xbdate.h
+++ b/src/include/xbdate.h
@@ -92,7 +92,6 @@ class XBDLLEXPORT xbDate : public xbSsv {
xbBool DateIsValid ( const xbString &sDate8 ) const;
xbInt16 DayOf( xbInt16 iFormat ) const;
xbInt16 CTOD( const xbString &sCtodInDate );
-// xbInt16 FormatDate( const char *sFmtIn, xbString &sFmtOut );
xbInt16 FormatDate( const xbString &sFmtIn, xbString &sFmtOut );
const char *Str() const;
xbBool IsLeapYear( xbInt16 iYear ) const;
diff --git a/src/include/xbdbf.h b/src/include/xbdbf.h
index c0842cb..16799f2 100755
--- a/src/include/xbdbf.h
+++ b/src/include/xbdbf.h
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -168,11 +168,14 @@ class XBDLLEXPORT xbDbf : public xbFile {
virtual xbInt16 DumpRecord ( xbUInt32 ulRecNo, xbInt16 iOutputDest = 0, xbInt16 iOutputFmt = 0 );
virtual xbInt16 GetAutoCommit () const;
virtual xbInt16 GetAutoCommit ( xbInt16 iOption ) const;
+ virtual xbBool GetBof ();
virtual xbUInt32 GetCurRecNo () const;
virtual xbInt16 GetDbfStatus () const;
+ virtual xbBool GetEof ();
virtual xbInt32 GetFieldCnt () const;
virtual xbInt16 GetFirstRecord ();
virtual xbInt16 GetFirstRecord ( xbInt16 iOption );
+ virtual xbUInt16 GetHeaderLen () const;
virtual xbInt16 GetLastRecord ();
virtual xbInt16 GetLastRecord ( xbInt16 iOption );
@@ -360,7 +363,11 @@ class XBDLLEXPORT xbDbf : public xbFile {
//virtual xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );
//#endif
-
+ #ifdef XB_BLOCKREAD_SUPPORT
+ xbInt16 DisableBlockReadProcessing();
+ xbInt16 EnableBlockReadProcessing();
+ xbBool GetBlockReadStatus() const;
+ #endif // XB_BLOCKREAD_SUPPORT
protected:
#ifdef XB_INDEX_SUPPORT
@@ -378,6 +385,10 @@ class XBDLLEXPORT xbDbf : public xbFile {
virtual xbInt16 GetInfFileName( xbString &sNdxIdxFileName );
#endif // XB_INF_SUPPORT
+ #ifdef XB_BLOCKREAD_SUPPORT
+ friend class xbBlockRead;
+ #endif // XB_BLOCKREAD_SUPPORT
+
#ifdef XB_LOCKING_SUPPORT
void SetHeaderLocked ( xbBool bTableLocked );
@@ -426,7 +437,7 @@ class XBDLLEXPORT xbDbf : public xbFile {
xbSchemaRec *SchemaPtr; // Pointer to field data
char *RecBuf; // Pointer to record buffer
- char *RecBuf2; // Pointer to original rec buf
+ char *RecBuf2; // Pointer to original rec buf allocation
/* Next several variables are database header fields, up through dbase V */
@@ -448,28 +459,32 @@ class XBDLLEXPORT xbDbf : public xbFile {
void ResetNoOfRecords();
-#ifdef XB_LOCKING_SUPPORT
+ #ifdef XB_LOCKING_SUPPORT
xbInt16 iAutoLock; // 0 - autolock off, 1 - autolock on
xbInt16 iLockFlavor;
xbBool bTableLocked; // is the table locked
xbBool bHeaderLocked; // is the header locked
xbUInt32 ulAppendLocked; // record number of the new record for the append lock operation
xbLinkListOrd<xbUInt32> lloRecLocks; // ordered link list of locked records
-#endif
-
+ #endif
-#ifdef XB_INDEX_SUPPORT
+ #ifdef XB_INDEX_SUPPORT
xbIxList *ixList; // pointer to a list of indices associated with the table
xbIx *pCurIx; // Pointer to current index class
void *vpCurIxTag; // Pointer to current tag
xbString sCurIxType; // Current index type
xbLinkList<xbTag *> llTags; // linked list of open tags
+ #endif // XB_INDEX_SUPPORT
-#endif // XB_INDEX_SUPPORT
+ #ifdef XB_INF_SUPPORT
+ xbLinkList<xbString> llInfData; // linked list of strings containing ndx file entries
+ #endif // XB_INF_SUPPORT
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ xbBlockRead *pRb;
+ xbBool bBlockReadEnabled; // if true, then block read mode is on
+ #endif
-#ifdef XB_INF_SUPPORT
- xbLinkList<xbString> llInfData; // linked list of strings containing ndx file entries
-#endif // XB_INF_SUPPORT
};
diff --git a/src/include/xbfile.h b/src/include/xbfile.h
index ffbda06..af04e98 100755
--- a/src/include/xbfile.h
+++ b/src/include/xbfile.h
@@ -60,6 +60,9 @@ class XBDLLEXPORT xbFile : public xbSsv {
xbFile( xbXBase * x );
~xbFile();
+
+ xbInt16 SetHomeFolders();
+
xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut );
xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut, xbInt16 iOption );
@@ -158,6 +161,7 @@ class XBDLLEXPORT xbFile : public xbSsv {
#ifdef XB_DEBUG_SUPPORT
xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlockSize );
+ xbInt16 DumpMemToDisk ( char *p, size_t lBlockSize );
#endif
diff --git a/src/include/xbfilter.h b/src/include/xbfilter.h
index 8722256..635d117 100755
--- a/src/include/xbfilter.h
+++ b/src/include/xbfilter.h
@@ -37,9 +37,10 @@ namespace xb{
class XBDLLEXPORT xbFilter {
public:
- xbFilter( xbXBase *xbase, xbDbf *dbf );
+ xbFilter( xbDbf *dbf );
~xbFilter();
xbInt16 Set( xbString &sFilterExpression );
+ xbInt16 Set( const char *sFilterExpression );
xbInt16 GetFirstRecord( xbInt16 iOpt = 1 );
xbInt16 GetNextRecord ( xbInt16 iOpt = 1 );
xbInt16 GetPrevRecord ( xbInt16 iOpt = 1 );
@@ -50,7 +51,6 @@ class XBDLLEXPORT xbFilter {
xbInt32 GetQryCnt() const;
#ifdef XB_INDEX_SUPPORT
-// void Set( xbIx *pIx, void *vpTag );
xbInt16 GetFirstRecordIx( xbInt16 iOpt = 1 );
xbInt16 GetNextRecordIx ( xbInt16 iOpt = 1 );
xbInt16 GetPrevRecordIx ( xbInt16 iOpt = 1 );
@@ -59,7 +59,7 @@ class XBDLLEXPORT xbFilter {
private:
- xbXBase *xbase;
+// xbXBase *xbase;
xbDbf *dbf;
xbExp *exp;
diff --git a/src/include/xbretcod.h b/src/include/xbretcod.h
index 6b73527..ec1f91b 100755
--- a/src/include/xbretcod.h
+++ b/src/include/xbretcod.h
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -27,6 +27,7 @@ namespace xb{
#define XB_DUP_TABLE_OR_ALIAS -110 // table manager
#define XB_INVALID_NODELINK -120 // linklist
#define XB_KEY_NOT_UNIQUE -121 // linklist
+ #define XB_MEMCPY_ERROR -122 // memcpy failure
#define XB_FILE_EXISTS -200 // file
#define XB_ALREADY_OPEN -201 // file
@@ -51,6 +52,8 @@ namespace xb{
#define XB_INVALID_TABLE_NAME -220 // file
#define XB_EMPTY -221 // file
#define XB_LIMIT_REACHED -222 // file
+ #define XB_BLOCKREAD_NOT_ENABLED -223 // file
+ #define XB_DIRECTORY_ERROR -224 // file
#define XB_INVALID_FIELD_TYPE -300 // field
#define XB_INVALID_FIELD_NO -301 // field
diff --git a/src/include/xbsql.h b/src/include/xbsql.h
index 653096c..07ffb70 100755
--- a/src/include/xbsql.h
+++ b/src/include/xbsql.h
@@ -39,7 +39,83 @@ struct XBDLLEXPORT xbSqlFld{
xbSqlFld * Next; // Next field in list
};
+class xbStmt;
+
+
+struct XBDLLEXPORT xbTblJoin { // structure for defining joined tables in the query
+
+ xbString sTableName;
+ xbString sAlias;
+ xbString sJoinExp; // table join expression
+ xbDbf *pDbf; // pointer the the dbf structure for this table
+ xbTag *pTag; // pointer to relevant tag for this table, null for record order
+ xbExp *pLinkExp; // pointer to parsed linkage expression
+ char cJoinType; // M - Master
+ // L - Left or Full Left
+ // R - Right or Full Right
+ // I - Inner
+ // O - Outer or Full Outer Outer
+
+ xbTblJoin *pMaster; // pointer to master table, null if this is the primary master
+ xbLinkList<xbTblJoin *> llSubList; // linked list of subordinate tables
+// xbStmt *pSubQuery; // pointer to sub query
+ xbTblJoin *next; // next tbl
+};
+
+
+class XBDLLEXPORT xbStmt : public xbSsv{
+
+ public:
+ xbStmt( xbXBase *x );
+ ~xbStmt();
+
+ #ifdef XB_DEBUG_SUPPORT
+ xbInt16 DumpStmtInternals();
+ xbInt16 Test();
+ #endif
+
+ xbInt16 ExecuteQuery( const xbString &sCmdLine );
+
+// xbInt16 FetchFirst();
+// xbInt16 FetchNext();
+// xbInt16 FetchPrev();
+// xbInt16 FetchLast();
+// xbString &GetField( const xbString sFldName );
+ protected:
+
+ private:
+
+ xbInt16 AddQryTbl( const xbString &sTable, const xbString &sAlias, const xbString &sExpression, const char cJoinType );
+ xbInt16 CvtSqlExp2DbaseExp( const xbString &sExpIn, xbString &sExpOut );
+ xbInt16 GetNextFromSeg( const xbString &sLineIn, xbString &sFromSegOut );
+ xbUInt32 GetNextToken( const xbString &sCmdLineIn, xbString &sTokenOut, xbUInt32 ulStartPos );
+ xbInt16 GetParenCnt( const xbString &sToken );
+ xbInt16 ParseFromStmt( const xbString &sFromLine );
+ xbInt16 ParseStmt( const xbString &sCmdLine );
+ xbInt16 ProcessFromSeg( const xbString &sFromStmtSeg );
+ xbInt16 UpdateJoinList( char cType, const xbString &sTableName, const xbString &sAlias, const xbString &sExp, xbDbf *d, xbExp *e ); //, xbTag *t);
+
+ xbXBase *xbase; // pointer to xbase structure
+
+
+ xbTblJoin * pTblList;
+ xbSqlFld *fl; // field list in sql select statement
+ xbString sStmt; // complete query statment
+ xbString sFields; // list of fields
+ xbString sFrom; // from statment
+ xbString sWhere; // where clause
+ xbString sOrderBy; // sort order
+ xbString sGroupBy; // group by
+ xbString sHaving; // having
+ xbUInt32 ulFromPos;
+ xbUInt32 ulWherePos;
+ xbUInt32 ulOrderByPos;
+ xbUInt32 ulGroupByPos;
+ xbUInt32 ulHavingPos;
+
+
+};
class XBDLLEXPORT xbSql : public xbSsv {
@@ -68,7 +144,7 @@ class XBDLLEXPORT xbSql : public xbSsv {
// xbInt16 SqlCreateView( const xbString &sCmdLine );
// xbInt16 SqlDropView( const xbString &sCmdLine );
// xbInt16 SqlUpdate( const xbString &sCmdLine );
- xbInt16 SqlSelect( const xbString &sCmdLine );
+// xbInt16 SqlSelect( const xbString &sCmdLine );
void SqlHelp() const;
xbInt16 SqlInsert( const xbString &sCmLine );
diff --git a/src/include/xbssv.h b/src/include/xbssv.h
index b9345fd..d050bcb 100755
--- a/src/include/xbssv.h
+++ b/src/include/xbssv.h
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -77,9 +77,11 @@ class XBDLLEXPORT xbSsv{
xbBool GetDefaultAutoCommit () const;
void SetDefaultAutoCommit ( xbBool bDefaultAutoCommit );
- xbString& GetDefaultLogDirectory () const;
- xbString& GetDefaultLogFileName () const;
- void SetDefaultLogDirectory ( const xbString &sDefaultLogDirectory );
+ void GetHomeDir ( xbString &sHomeDirOut );
+
+ xbString& GetLogDirectory () const;
+ xbString& GetLogFileName () const;
+ void SetLogDirectory ( const xbString &sLogDirectory );
xbBool GetMultiUser () const;
void SetMultiUser ( xbBool bMultiUser );
@@ -87,7 +89,7 @@ class XBDLLEXPORT xbSsv{
#if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
xbInt16 GetUniqueKeyOpt () const;
xbInt16 SetUniqueKeyOpt ( xbInt16 iUniqueKeyOpt );
- #endif
+ #endif // (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
#ifdef XB_LOCKING_SUPPORT
xbInt16 GetDefaultLockRetries () const;
@@ -100,12 +102,18 @@ class XBDLLEXPORT xbSsv{
void SetDefaultAutoLock ( xbBool bAutoLock );
void EnableDefaultAutoLock ();
void DisableDefaultAutoLock ();
- #endif
+ #endif // XB_LOCKING_SUPPORT
#ifdef XB_MDX_SUPPORT
xbInt16 GetCreateMdxBlockSize() const;
xbInt16 SetCreateMdxBlockSize( xbInt16 ulBlockSize );
- #endif
+ #endif // XB_MDX_SUPPORT
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ xbUInt32 GetDefaultBlockReadSize() const;
+ void SetDefaultBlockReadSize( xbUInt32 ulDfltBlockReadSize );
+ #endif // XB_BLOCKREAD_SUPPORT
+
protected:
@@ -121,8 +129,8 @@ class XBDLLEXPORT xbSsv{
static xbString sDataDirectory; //Data file directory
#ifdef XB_LOGGING_SUPPORT
- static xbString sDefaultLogDirectory; //Default location to store log files
- static xbString sDefaultLogFileName; //Default LogFileName
+ static xbString sLogDirectory; //Default location to store log files
+ static xbString sLogFileName; //Default LogFileName
#endif
static xbInt16 iDefaultFileVersion; // 3 = DBase 3
@@ -150,7 +158,6 @@ class XBDLLEXPORT xbSsv{
#endif
-
#if defined (XB_NDX_SUPPORT) || defined (XB_MDX_SUPPORT)
static xbInt16 iUniqueKeyOpt;
@@ -167,6 +174,10 @@ class XBDLLEXPORT xbSsv{
#endif // XB_MDX_SUPPORT
+#ifdef XB_BLOCKREAD_SUPPORT
+ static xbUInt32 ulDefaultBlockReadSize;
+#endif // XB_BLOCKREAD_SUPPORT
+
};
diff --git a/src/include/xbstring.h b/src/include/xbstring.h
index f5a22da..3e70acc 100755
--- a/src/include/xbstring.h
+++ b/src/include/xbstring.h
@@ -131,6 +131,8 @@ class XBDLLEXPORT xbString {
xbString &Mid(xbUInt32 ulPos, xbUInt32 lLen );
xbString &PadLeft( char c, xbUInt32 ulLen );
xbString &PadRight( char c, xbUInt32 ulLen );
+
+ xbUInt32 Pos(char c, xbUInt32 ulStartPos ) const;
xbUInt32 Pos(char c) const;
xbUInt32 Pos(const char *s) const;
xbString &PutAt(xbUInt32 ulPos, char c);
diff --git a/src/include/xbtblmgr.h b/src/include/xbtblmgr.h
index 150026b..2c31e45 100755
--- a/src/include/xbtblmgr.h
+++ b/src/include/xbtblmgr.h
@@ -30,8 +30,9 @@ class XBDLLEXPORT xbDbf;
/* this structure is a linked list of open tables */
struct XBDLLEXPORT xbTblList{
xbTblList *pNext;
- xbString *psTblName; /* Name of table - same table can be opened multiple times, but must have unique alias */
- xbString *psTblAlias; /* TblAliasName must be unique */
+ xbString *psFqTblName; // Fully qualified name of table - same table can be opened multiple times, but must have unique alias
+ xbString *psTblName; // Table name without path, without extension
+ xbString *psTblAlias; // TblAliasName must be unique, same as TblNAme if Alias not provided
xbDbf *pDbf;
};
@@ -39,8 +40,8 @@ class XBDLLEXPORT xbTblMgr : public xbSsv {
public:
xbTblMgr();
~xbTblMgr();
- xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sTblName );
- xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sTblName, const xbString &sTblAlias );
+ xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sFqTblName );
+ xbInt16 AddTblToTblList ( xbDbf *d, const xbString &sFqTblName, const xbString &sTblAlias );
xbInt16 DisplayTableList () const;
xbDbf * GetDbfPtr ( const xbString &sTblAlias ) const;
xbDbf * GetDbfPtr ( xbInt16 sItemNo ) const;
diff --git a/src/include/xbuda.h b/src/include/xbuda.h
index 84eccee..e5c0e91 100755
--- a/src/include/xbuda.h
+++ b/src/include/xbuda.h
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -34,7 +34,7 @@ class XBDLLEXPORT xbUda {
public:
xbUda();
~xbUda();
-
+
xbInt16 AddTokenForKey( const xbString &sKey, const xbString &sToken );
void Clear();
xbInt16 DelTokenForKey( const xbString &sKey );
@@ -42,7 +42,7 @@ class XBDLLEXPORT xbUda {
xbInt16 GetTokenForKey( const xbString &sKey, xbString &sData );
xbInt16 UpdTokenForKey( const xbString &sKey, const xbString &sToken );
void DumpUda() const;
-
+
private:
xbLinkListOrd<xbString> llOrd;
diff --git a/src/include/xbxbase.h b/src/include/xbxbase.h
index 204e744..fe1f323 100755
--- a/src/include/xbxbase.h
+++ b/src/include/xbxbase.h
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -148,6 +148,9 @@ class XBDLLEXPORT xbXBase : public xbTblMgr{
void xbSleep ( xbInt32 lMillisecs );
+ xbInt16 GetCmdLineOpt ( xbInt32 lArgc, char **argv, const char *sOptRqst, xbString &sParmOut );
+ xbInt16 GetCmdLineOpt ( xbInt32 lArgc, char **argv, xbString &sOptRqst, xbString &sParmOut );
+
/* xbase functions */
#ifdef XB_FUNCTION_SUPPORT
@@ -207,6 +210,11 @@ class XBDLLEXPORT xbXBase : public xbTblMgr{
friend class xbBcd;
friend class xbExp;
+ #ifdef XB_BLOCKREAD_SUPPORT
+ friend class xbBlockRead;
+ #endif // XB_BLOCKREAD_SUPPORT
+
+
xbInt16 GetFunctionInfo( const xbString &sExpLine, char &cReturnType, xbInt16 &iReturnLenCalc, xbInt32 &lReturnLenVal ) const;
static xbInt16 xbMemcmp( const unsigned char *s1, const unsigned char *s2, size_t n );
diff --git a/src/sql/xbalttbl.cpp b/src/sql/xbalttbl.cpp
index 576eab7..8a36b46 100755
--- a/src/sql/xbalttbl.cpp
+++ b/src/sql/xbalttbl.cpp
@@ -79,17 +79,12 @@ xbInt16 xbSql::SqlAlterTable( const xbString &sCmdLine ){
sTrgTbl.ExtractElement( sCmd, ' ', 4, 0 );
sTrgTbl.Trim();
- std::cout << "source table name = " << sSrcTbl.Str() << "\n";
+// std::cout << "source table name = " << sSrcTbl.Str() << "\n";
// std::cout << "target table name = " << sTrgTbl.Str() << "\n";
// if not open, attempt to open it
dbf = xbase->GetDbfPtr( sSrcTbl );
- if( dbf )
- std::cout << "dbf valued\n";
- else
- std::cout << "dbf not valued\n";
-
if( !dbf ){
if(( iRc = xbase->OpenHighestVersion( sSrcTbl, "", &dbf )) != XB_NO_ERROR ){
iErrorStop = 120;
diff --git a/src/sql/xbcrix.cpp b/src/sql/xbcrix.cpp
index 8dc6f62..6a391f7 100755
--- a/src/sql/xbcrix.cpp
+++ b/src/sql/xbcrix.cpp
@@ -147,13 +147,13 @@ xbInt16 xbSql::SqlCreateIndex( const xbString &sCmdLine ){
}
}
if( dbf == NULL ){
- iErrorStop = 50;
+ iErrorStop = 130;
iRc = XB_FILE_NOT_FOUND;
throw iRc;
}
sCmd.Ltrunc( ulPos );
- std::cout << "cp1 ulPos = " << ulPos << " sCmd = [" << sCmd << "]\n";
+ // std::cout << "cp1 ulPos = " << ulPos << " sCmd = [" << sCmd << "]\n";
//ulPos = sCmd.GetLastPos( ')' );
xbString sKeyExpression;
@@ -180,7 +180,7 @@ xbInt16 xbSql::SqlCreateIndex( const xbString &sCmdLine ){
lPos++;
}
- std::cout << "Key Expression =[" << sKeyExpression << "]\n";
+ // std::cout << "Key Expression =[" << sKeyExpression << "]\n";
sCmd.Ltrunc( lPos );
sCmd.Trim();
@@ -216,7 +216,7 @@ xbInt16 xbSql::SqlCreateIndex( const xbString &sCmdLine ){
#ifdef XB_LOCKING_SUPPORT
if(( iRc = dbf->LockTable( XB_LOCK )) != XB_NO_ERROR ){
- iErrorStop = 130;
+ iErrorStop = 140;
throw iRc;
}
#endif // XB_LOCKING_SUPPORT
@@ -227,7 +227,7 @@ xbInt16 xbSql::SqlCreateIndex( const xbString &sCmdLine ){
void *vpTag;
if(( iRc = dbf->CreateTag( sIxType, sIxName, sKeyExpression, sFilter, bDesc, bUnique, xbFalse, &pIx, &vpTag )) != XB_NO_ERROR ){
- iErrorStop = 140;
+ iErrorStop = 150;
throw iRc;
}
// std::cout << "SqlCreateIndex() - back from tag create\n";
@@ -239,7 +239,7 @@ xbInt16 xbSql::SqlCreateIndex( const xbString &sCmdLine ){
sCmd.ToUpperCase();
if( sCmd.Pos( "ASSOCIATE" )){
if(( iRc = dbf->AssociateIndex( "NDX", sIxName, 0 )) != XB_NO_ERROR ){
- iErrorStop = 150;
+ iErrorStop = 160;
throw iRc;
}
}
@@ -255,14 +255,14 @@ xbInt16 xbSql::SqlCreateIndex( const xbString &sCmdLine ){
if(( iRc = pIx->Reindex( &vpTag )) != XB_NO_ERROR ){
- iErrorStop = 160;
+ iErrorStop = 170;
throw iRc;
}
#ifdef XB_LOCKING_SUPPORT
if(( iRc = dbf->LockTable( XB_UNLOCK )) != XB_NO_ERROR ){
- iErrorStop = 140;
+ iErrorStop = 180;
throw iRc;
}
#endif // XB_LOCKING_SUPPORT
diff --git a/src/sql/xbcrtbl.cpp b/src/sql/xbcrtbl.cpp
index 7f6b8fa..dfb3403 100755
--- a/src/sql/xbcrtbl.cpp
+++ b/src/sql/xbcrtbl.cpp
@@ -29,7 +29,7 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
// expected format:
// CREATE TABLE tablename.dbf (Field1 CHAR(10), INTFLD1 INTEGER, ... )
- // supported fields types
+ // supported field types
//
// SQL TYPE XBASE Field Type
// -------- ----------------
@@ -61,6 +61,7 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
xbLinkList<xbString> ll;
xbSchema *schema = NULL;
xbString sMsg;
+ xbString sWork;
try{
// retrieve table name
@@ -75,7 +76,7 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
xbFile f( xbase );
f.SetFileName( sTableName );
if( f.FileExists() ){
- iErrorStop = 10;
+ iErrorStop = 100;
iRc = XB_FILE_EXISTS;
throw iRc;
}
@@ -90,8 +91,6 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
s.Remove( s.Len(), 1 );
s.Trim();
- //std::cout << "s = [" << s << "]\n";
-
xbBool bDone = xbFalse;
xbInt16 iLoop = 0;
@@ -129,7 +128,7 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
else if( sDataType == "SMALLINT" || sDataType == "INTEGER" || sDataType == "DATE" || sDataType == "VARCHAR" || sDataType == "LOGICAL" )
iAttribCnt = 0;
else{
- iErrorStop = 20;
+ iErrorStop = 110;
iRc = XB_INVALID_FIELD_TYPE;
throw iRc;
}
@@ -143,25 +142,37 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
} else if( iAttribCnt > 0 ){
lPos = s.Pos( '(' );
if( lPos <= 0 ){
- iErrorStop = 30;
+ iErrorStop = 120;
iRc = XB_INVALID_FIELD_LEN;
throw iRc;
}
s.Ltrunc( lPos );
- if( iAttribCnt == 1 )
- lPos = s.Pos( ')' );
- else
- lPos = s.Pos( ',' );
-
- sAttrib1.Assign( s, 1, lPos-1 );
- sAttrib1.Trim();
- s.Ltrunc( lPos );
- if( iAttribCnt > 1 ){
- lPos = s.Pos( ')' );
- sAttrib2.Assign( s, 1, lPos-1 );
- s.Ltrunc( lPos );
+ lPos = s.Pos( ')' );
+ if( lPos <= 0 ){
+ iErrorStop = 130;
+ iRc = XB_INVALID_FIELD_LEN;
+ throw iRc;
}
+ sWork.Assign( s, 1, lPos - 1);
+ sWork.Trim();
+
+ if( iAttribCnt == 1 ){
+ sAttrib1 = sWork;
+ } else {
+ lCmPos = sWork.Pos( ',' );
+ if( lCmPos <= 0 ){
+ iErrorStop = 140;
+ iRc = XB_INVALID_FIELD_LEN;
+ throw iRc;
+ }
+ sAttrib1.Assign( sWork, 1, lCmPos - 1);
+ sAttrib1.Trim();
+ sWork.Ltrunc( lCmPos );
+ sAttrib2 = sWork;
+ sAttrib2.Trim();
+ }
+ s.Ltrunc( lPos );
}
s.Ltrim();
@@ -229,7 +240,7 @@ xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
dbf = new xbDbf3( xbase );
#endif
if(( iRc = dbf->CreateTable( sTableName, "", schema, 0, XB_MULTI_USER )) != XB_NO_ERROR ){
- iErrorStop = 50;
+ iErrorStop = 150;
throw iRc;
}
diff --git a/src/sql/xbcrtbl.save.cpp b/src/sql/xbcrtbl.save.cpp
new file mode 100755
index 0000000..445ad56
--- /dev/null
+++ b/src/sql/xbcrtbl.save.cpp
@@ -0,0 +1,256 @@
+/* xbcrtbl.cpp
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2019,2022 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+*/
+
+#include "xbase.h"
+
+#ifdef XB_SQL_SUPPORT
+
+namespace xb{
+
+
+/***********************************************************************/
+xbInt16 xbSql::SqlCreateTable( const xbString &sCmdLine ){
+
+
+ // std::cout << "CREATE TABLE " << sCmdLine << std::endl;
+
+ // expected format:
+ // CREATE TABLE tablename.dbf (Field1 CHAR(10), INTFLD1 INTEGER, ... )
+
+ // supported field types
+ //
+ // SQL TYPE XBASE Field Type
+ // -------- ----------------
+ // SMALLINT NUMERIC(6,0)
+ // INTEGER NUMERIC(11,0)
+ // DECIMAL(x,y) NUMERIC(x+1,y)
+ // NUMERIC(x,y) NUMERIC(x,y)
+ // FLOAT(x,y) FLOAT(x,y)
+ // CHAR(n) CHARACTER(n)
+ // DATE DATE
+ // VARCHAR MEMO
+ // LOGICAL LOGICAL
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+ xbString sTableName;
+ xbString sFieldName;
+ xbString sDataType;
+ xbString sAttrib1;
+ xbString sAttrib2;
+ xbString sLlEntry;
+ xbInt16 iType = 0;
+ xbInt16 iAttribCnt; // number of attributes for a given data type
+ xbString s;
+ xbUInt32 lPos = 0;
+ xbUInt32 lSpPos = 0; // space position
+ xbUInt32 lCmPos = 0; // comma position
+ xbUInt32 lLpPos = 0; // left paren position
+ xbLinkList<xbString> ll;
+ xbSchema *schema = NULL;
+ xbString sMsg;
+
+ try{
+ // retrieve table name
+ s.ExtractElement( sCmdLine, '(', 1, 0 );
+ sTableName.ExtractElement( s, ' ', 3, 0 );
+ sTableName.Trim();
+
+ // std::cout << "Tablename = [" << sTableName << "]\n";
+
+
+ // determine if it already exists
+ xbFile f( xbase );
+ f.SetFileName( sTableName );
+ if( f.FileExists() ){
+ iErrorStop = 100;
+ iRc = XB_FILE_EXISTS;
+ throw iRc;
+ }
+
+ // build out table structure with parms from the sql string
+ lPos = sCmdLine.Pos( '(' );
+ s = sCmdLine;
+ s.Ltrunc( lPos );
+ s.Trim();
+
+ // remove the last byte, should be a )
+ s.Remove( s.Len(), 1 );
+
+ s.Trim();
+ //std::cout << "s = [" << s << "]\n";
+
+
+ xbBool bDone = xbFalse;
+ xbInt16 iLoop = 0;
+ while( !bDone && iLoop++ < 255 ){
+ sFieldName.ExtractElement( s, ' ', 1 , 0 );
+ lPos = sFieldName.Len();
+ sFieldName.Trim();
+ if( sFieldName.Len() > 10 )
+ sFieldName.Mid( 1, 10 ); // shrink to 10 buytes if too big
+
+ //std::cout << "field name=[" << sFieldName << "]\n";
+ s.Ltrunc( lPos + 1 );
+ s.Ltrim();
+ //std::cout << "remainder after field name removed = [" << s << "]\n";
+
+ // Data type is delimited with either a space, comma or left paren
+ lPos = 9999999;
+ lSpPos = s.Pos( ' ' );
+ lCmPos = s.Pos( ',' );
+ lLpPos = s.Pos( '(' );
+ if( lSpPos != 0 ) lPos = lSpPos;
+ if( lCmPos != 0 && lCmPos < lPos ) lPos = lCmPos;
+ if( lLpPos != 0 && lLpPos < lPos ) lPos = lLpPos;
+
+ //sMsg.Sprintf( "SpPos=[%d] CmPos=[%d] LpPos=[%d] lPos=[%d]", lSpPos, lCmPos, lLpPos, lPos );
+ //std::cout << sMsg << "\n";
+
+ sDataType.Assign( s, 1, lPos-1 );
+
+ //std::cout << "DataType=[" << sDataType << "]\n";
+ if( sDataType == "CHAR" )
+ iAttribCnt = 1;
+ else if( sDataType == "DECIMAL" || sDataType == "NUMERIC" || sDataType == "FLOAT" )
+ iAttribCnt = 2;
+ else if( sDataType == "SMALLINT" || sDataType == "INTEGER" || sDataType == "DATE" || sDataType == "VARCHAR" || sDataType == "LOGICAL" )
+ iAttribCnt = 0;
+ else{
+ iErrorStop = 110;
+ iRc = XB_INVALID_FIELD_TYPE;
+ throw iRc;
+ }
+
+ sAttrib1 = "";
+ sAttrib2 = "0";
+
+ if( iAttribCnt == 0 ){
+ s.Ltrunc( sDataType.Len());
+
+ } else if( iAttribCnt > 0 ){
+ lPos = s.Pos( '(' );
+ if( lPos <= 0 ){
+ iErrorStop = 110;
+ iRc = XB_INVALID_FIELD_LEN;
+ throw iRc;
+ }
+ s.Ltrunc( lPos );
+ if( iAttribCnt == 1 )
+ lPos = s.Pos( ')' );
+ else
+ lPos = s.Pos( ',' );
+
+ sAttrib1.Assign( s, 1, lPos-1 );
+ sAttrib1.Trim();
+ s.Ltrunc( lPos );
+
+ if( iAttribCnt > 1 ){
+ lPos = s.Pos( ')' );
+ sAttrib2.Assign( s, 1, lPos-1 );
+ s.Ltrunc( lPos );
+ }
+ }
+
+ s.Ltrim();
+ s.ZapLeadingChar( ',' );
+ s.Ltrim();
+
+ if( sDataType == "CHAR" ){
+ iType = XB_CHAR_FLD;
+ } else if( sDataType == "DECIMAL" ){
+ xbInt32 lVal = atol( sAttrib1.Str()) + 1;
+ sAttrib1.Sprintf( "%d", lVal );
+ iType = XB_NUMERIC_FLD;
+ } else if( sDataType == "SMALLINT" ){
+ sAttrib1 = "6";
+ iType = XB_NUMERIC_FLD;
+ } else if( sDataType == "INTEGER" ){
+ sAttrib1 = "11";
+ iType = XB_NUMERIC_FLD;
+ } else if( sDataType == "NUMERIC" ){
+ iType = XB_NUMERIC_FLD;
+ } else if( sDataType == "FLOAT" ) {
+ iType = XB_FLOAT_FLD;
+ } else if( sDataType == "DATE" ){
+ iType = XB_DATE_FLD;
+ sAttrib1 = "8";
+ } else if( sDataType == "VARCHAR" ){
+ iType = XB_MEMO_FLD;
+ sAttrib1 = "10";
+ } else if( sDataType == "LOGICAL" ){
+ iType = XB_LOGICAL_FLD;
+ sAttrib1 = "1";
+ }
+ sLlEntry.Sprintf( "%s,%s,%c,%s,%s", sFieldName.Str(), sDataType.Str(), iType, sAttrib1.Str(), sAttrib2.Str());
+ ll.InsertAtEnd( sLlEntry );
+
+ if( s.Len() == 0 )
+ bDone = xbTrue;
+ }
+
+ schema = (xbSchema *) calloc( ll.GetNodeCnt()+1, sizeof( xbSchema ));
+ xbLinkListNode<xbString> * llN = ll.GetHeadNode();
+ xbUInt32 ulCnt = ll.GetNodeCnt();
+
+ char *pTrg;
+ for( xbUInt32 i = 0; i < ulCnt; i++ ){
+ s = llN->GetKey();
+ sFieldName.ExtractElement( s, ',', 1 , 0 );
+ pTrg = schema[i].cFieldName;
+ for( xbUInt32 j = 0; j < sFieldName.Len(); j++ )
+ *pTrg++ = sFieldName[j+1];
+ sDataType.ExtractElement( s, ',', 3, 0 );
+ schema[i].cType = sDataType[1];
+ sAttrib1.ExtractElement( s, ',', 4, 0 );
+ schema[i].iFieldLen = atoi( sAttrib1.Str());
+ sAttrib2.ExtractElement( s, ',', 5, 0 );
+ schema[i].iNoOfDecs = atoi( sAttrib2.Str());
+ llN = llN->GetNextNode();
+ }
+
+ // create the table
+ xbDbf * dbf = NULL;
+ #ifdef XB_DBF4_SUPPORT
+ dbf = new xbDbf4( xbase );
+ #elif defined (XB_DBF3_SUPPORT)
+ dbf = new xbDbf3( xbase );
+ #endif
+ if(( iRc = dbf->CreateTable( sTableName, "", schema, 0, XB_MULTI_USER )) != XB_NO_ERROR ){
+ iErrorStop = 120;
+ throw iRc;
+ }
+
+ free( schema );
+ ll.Clear();
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ if( sFieldName.Len() > 0 )
+ sMsg.Sprintf( "xbSql::SqlCreateTbl() Exception Caught. Error Stop = [%d] rc = [%d] table = [%s] field = [%s]", iErrorStop, iRc, sTableName.Str(), sFieldName.Str() );
+ else
+ sMsg.Sprintf( "xbSql::SqlCreateTbl() Exception Caught. Error Stop = [%d] rc = [%d] table = [%s]", iErrorStop, iRc, sTableName.Str() );
+
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ if( schema ) free( schema );
+ }
+ return iRc;
+}
+
+/***********************************************************************/
+} /* namespace */
+#endif /* XB_SQL_SUPPORT */
+
diff --git a/src/sql/xbdelete.cpp b/src/sql/xbdelete.cpp
index 157b281..82b4937 100755
--- a/src/sql/xbdelete.cpp
+++ b/src/sql/xbdelete.cpp
@@ -95,7 +95,7 @@ xbInt16 xbSql::SqlDelete( const xbString &sCmdLine ){
}
} else {
- xbFilter f( dbf->GetXbasePtr(), dbf );
+ xbFilter f( dbf );
if(( iRc = f.Set( sFilter )) != XB_NO_ERROR ){
iErrorStop = 150;
throw iRc;
diff --git a/src/sql/xbdrptbl.cpp b/src/sql/xbdrptbl.cpp
index e2cfa9d..b03ee8f 100755
--- a/src/sql/xbdrptbl.cpp
+++ b/src/sql/xbdrptbl.cpp
@@ -61,7 +61,7 @@ xbInt16 xbSql::SqlDropTable( const xbString &sCmdLine ){
sNode.Trim();
sNode.ToUpperCase();
if( sNode != "EXISTS" ){
- iErrorStop = 10;
+ iErrorStop = 100;
iRc = XB_SYNTAX_ERROR;
throw iRc;
} else {
@@ -91,22 +91,21 @@ xbInt16 xbSql::SqlDropTable( const xbString &sCmdLine ){
if( iRc == XB_FILE_NOT_FOUND && bIfExists ){
return XB_NO_ERROR;
} else {
- iErrorStop = 20;
+ iErrorStop = 110;
throw iRc;
}
}
}
if( dbf == NULL ){
- iErrorStop = 40;
+ iErrorStop = 120;
iRc = XB_OPEN_ERROR;
throw iRc;
}
if(( dbf->DeleteTable()) != XB_NO_ERROR ){
- iErrorStop = 50;
+ iErrorStop = 130;
throw iRc;
}
-
}
catch (xbInt16 iRc ){
diff --git a/src/sql/xbselect.cpp b/src/sql/xbselect.cpp
index 91c0485..7f12e99 100755
--- a/src/sql/xbselect.cpp
+++ b/src/sql/xbselect.cpp
@@ -21,18 +21,23 @@ namespace xb{
/***********************************************************************/
-xbInt16 xbSql::SqlSelect( const xbString &sCmdLine ){
+xbInt16 xbStmt::ExecuteQuery( const xbString &sCmdLine ){
- std::cout << "SELECT [" << sCmdLine << "]\n";
+ std::cout << "xbStmt::ExecuteQuery() - SELECT [" << sCmdLine << "]\n";
// expected format:
// SELECT
xbInt16 iRc = 0;
xbInt16 iErrorStop = 0;
- xbUInt32 ulPos;
+ // xbUInt32 ulPos;
try{
+ if(( iRc = ParseStmt( sCmdLine )) != XB_NO_ERROR ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+
/*
xbString sCmd = sCmdLine;
sCmd.Trim();
@@ -63,12 +68,12 @@ xbInt16 xbSql::SqlSelect( const xbString &sCmdLine ){
if( sToken == '^' ){
if(( iRc = uda.DelTokenForKey( sKey )) != XB_NO_ERROR ){
- iErrorStop = 10;
+ iErrorStop = 100;
throw iRc;
}
} else {
if(( iRc = uda.UpdTokenForKey( sKey, sToken )) != XB_NO_ERROR ){
- iErrorStop = 10;
+ iErrorStop = 110;
throw iRc;
}
}
@@ -78,7 +83,7 @@ xbInt16 xbSql::SqlSelect( const xbString &sCmdLine ){
}
catch (xbInt16 iRc ){
xbString sMsg;
- sMsg.Sprintf( "xbSql::SqlSelect() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
+ sMsg.Sprintf( "xbStmt::ExecuteQuery() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
xbase->WriteLogMessage( sMsg.Str() );
xbase->WriteLogMessage( GetErrorMessage( iRc ));
}
diff --git a/src/sql/xbset.cpp b/src/sql/xbset.cpp
index 98de309..d0e8821 100755
--- a/src/sql/xbset.cpp
+++ b/src/sql/xbset.cpp
@@ -63,17 +63,16 @@ xbInt16 xbSql::SqlSet( const xbString &sCmdLine ){
if( sToken == '^' ){
if(( iRc = uda.DelTokenForKey( sKey )) != XB_NO_ERROR ){
- iErrorStop = 10;
+ iErrorStop = 100;
throw iRc;
}
} else {
if(( iRc = uda.UpdTokenForKey( sKey, sToken )) != XB_NO_ERROR ){
- iErrorStop = 10;
+ iErrorStop = 110;
throw iRc;
}
}
}
-
}
catch (xbInt16 iRc ){
xbString sMsg;
diff --git a/src/sql/xbsql.cpp b/src/sql/xbsql.cpp
index 5261b1a..12d3379 100755
--- a/src/sql/xbsql.cpp
+++ b/src/sql/xbsql.cpp
@@ -123,9 +123,6 @@ xbInt16 xbSql::ExecuteNonQuery( const xbString &sCmdLine ) {
else if( sNode1 == "USE" )
iRc = SqlUse( sCmd );
- else if( sNode1 == "SELECT" )
- iRc = SqlSelect( sCmd );
-
else if( sNode1 == "SET" )
iRc = SqlSet( sCmd );
diff --git a/src/sql/xbstmt.cpp b/src/sql/xbstmt.cpp
new file mode 100755
index 0000000..61c84fd
--- /dev/null
+++ b/src/sql/xbstmt.cpp
@@ -0,0 +1,679 @@
+/* xbsql.cpp
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+*/
+
+#include "xbase.h"
+
+#ifdef XB_SQL_SUPPORT
+
+namespace xb{
+
+/***********************************************************************/
+xbStmt::xbStmt( xbXBase *x ){
+ xbase = x;
+ pTblList = NULL;
+ fl = NULL;
+ ulFromPos = 0;
+ ulWherePos = 0;
+ ulOrderByPos = 0;
+ ulGroupByPos = 0;
+ ulHavingPos = 0;
+}
+
+/***********************************************************************/
+xbStmt::~xbStmt(){
+
+ std::cout << "xbStmt::~xbStmt() - need to release all allocated structures and memory here\n";
+
+}
+
+/***********************************************************************/
+xbInt16 xbStmt::CvtSqlExp2DbaseExp( const xbString &sExpIn, xbString &sExpOut ){
+
+ // convert Ansi SQL expression to a DBase compatible expression
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+
+ try{
+
+ // convert tablename.fieldname to tablename->fieldname
+ sExpOut = sExpIn[1];
+ xbUInt32 ulPos = 2;
+ while( ulPos < sExpIn.Len() ){
+ if( sExpIn[ulPos] == '.' && sExpIn[ulPos-1] != ' ' && sExpIn[ulPos+1] != ' ' )
+ sExpOut += "->";
+ else
+ sExpOut += sExpIn[ulPos];
+ ulPos++;
+ }
+ sExpOut += sExpIn[ulPos];
+
+ sExpOut.Replace( " AND ", " .AND. ", 0 );
+ sExpOut.Replace( " and ", " .AND. ", 0 );
+ sExpOut.Replace( " OR ", " .OR. ", 0 );
+ sExpOut.Replace( " or ", " .OR. ", 0 );
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbStmt::CvtSqlExp2DbaseExp() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+
+/***********************************************************************/
+#ifdef XB_DEBUG_SUPPORT
+xbInt16 xbStmt::DumpStmtInternals(){
+
+ std::cout << "************** Dump Statment Internals ***************" << std::endl;
+ std::cout << "Statement [" << sStmt << "]\n";
+ std::cout << "Fields [" << sFields << "]\n";
+ std::cout << "From [" << sFrom << "]\n";
+ std::cout << "Where [" << sWhere << "]\n";
+ std::cout << "Order By [" << sOrderBy << "]\n";
+ std::cout << "Group By [" << sGroupBy << "]\n";
+ std::cout << "Having [" << sHaving << "]\n";
+
+ xbTblJoin *p = pTblList;
+ if( p ){
+ std::cout << "Tbl List\n";
+ std::cout << "Type,Name,Alias,Exp\n";
+ while( p ){
+ std::cout << p->cJoinType << "," << p->sTableName.Str() << "," << p->sAlias.Str() << "," << p->sJoinExp.Str() << "\n";
+ p = p->next;
+ }
+ }
+ std::cout << "*************** End of Internals ************" << std::endl;
+ return 0;
+}
+
+xbInt16 xbStmt::Test(){
+ xbString s;
+
+ s = "(ABC)";
+ std::cout << "[" << s.Str() << "][" << GetParenCnt( s ) << "]\n";
+ s = "(ABC) )";
+ std::cout << "[" << s.Str() << "][" << GetParenCnt( s ) << "]\n";
+ s = "(";
+ std::cout << "[" << s.Str() << "][" << GetParenCnt( s ) << "]\n";
+ s = "( (";
+ std::cout << "[" << s.Str() << "][" << GetParenCnt( s ) << "]\n";
+ s = "aaa)";
+ std::cout << "[" << s.Str() << "][" << GetParenCnt( s ) << "]\n";
+ s = "aaa";
+ std::cout << "[" << s.Str() << "][" << GetParenCnt( s ) << "]\n";
+
+ return 0;
+
+}
+#endif // XB_DEBUG_SUPPORT
+
+
+/***********************************************************************/
+xbInt16 xbStmt::GetNextFromSeg( const xbString &sLineIn, xbString &sFromSegOut ){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+ xbInt16 iParenCtr = 0;
+ xbUInt32 ulPos = 1;
+ xbUInt32 ulTsp = 0; // token start position
+ xbBool bDone = xbFalse;
+ xbString sToken;
+
+ try{
+ sFromSegOut = "";
+ while( !bDone ){
+ ulTsp = GetNextToken( sLineIn, sToken, ulPos );
+ if( sToken == "" ){
+ bDone = xbTrue;
+
+ } else {
+ iParenCtr += GetParenCnt( sToken );
+ if( iParenCtr == 0 && ulPos > 1 ){
+ sToken.ToUpperCase();
+ if( sToken == "LEFT" || sToken == "RIGHT" || sToken == "FULL" ||
+ sToken == "INNER" || sToken == "OUTER" || sToken[1] == '(' ){
+ bDone = xbTrue;
+ }
+ }
+ }
+ ulPos += (sToken.Len() + 1);
+ }
+ if( ulTsp > 1 )
+ sFromSegOut.Assign( sLineIn, 1, ulTsp - 2 );
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbStmt::GetNextFromSeg() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+/***********************************************************************/
+
+xbUInt32 xbStmt::GetNextToken( const xbString &sCmdLineIn, xbString &sTokenOut, xbUInt32 ulStartPos ){
+
+ // input
+ // sCmdLine - Entire Command line
+ // ulStartPos - Where to start searching for the next token
+ // returns the position of the beginning of the token in the main command line
+
+ xbUInt32 ul = ulStartPos;
+ xbUInt32 ulTokenStartPos = 0;
+ sTokenOut = "";
+
+ while( ul <= sCmdLineIn.Len() && sCmdLineIn[ul] == ' ' )
+ ul++;
+ ulTokenStartPos = ul;
+
+ while( ul <= sCmdLineIn.Len() && sCmdLineIn[ul] != ' ' ){
+ sTokenOut += sCmdLineIn[ul];
+ ul++;
+ }
+
+ return ulTokenStartPos;
+}
+/***********************************************************************/
+xbInt16 xbStmt::GetParenCnt( const xbString &sToken ){
+
+ xbInt16 iParenCnt = 0;
+
+ for( xbUInt32 i = 1; i <= sToken.Len(); i++ ){
+ if( sToken[i] == '(' )
+ iParenCnt++;
+ else if( sToken[i] == ')' )
+ iParenCnt--;
+ }
+ return iParenCnt;
+}
+
+
+/***********************************************************************/
+xbInt16 xbStmt::ParseFromStmt( const xbString &sFromLine ){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+ xbBool bDone = xbFalse;
+ xbString sFromSeg;
+ xbString sLine = sFromLine;
+
+ try{
+ std::cout << "ParseFromSeg [" << sFromLine.Str() << "]\n";
+
+ while( !bDone ){
+ if(( iRc = GetNextFromSeg( sLine, sFromSeg)) != XB_NO_ERROR ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+ if( sFromSeg.Len() == 0 ){
+ bDone = xbTrue;
+ } else {
+ if(( iRc = ProcessFromSeg( sFromSeg )) != XB_NO_ERROR ){
+ iErrorStop = 110;
+ throw iRc;
+ }
+ sLine.Ltrunc( sFromSeg.Len() );
+ sLine.Ltrim();
+ }
+ }
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbStmt::ParseFromSeg() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+
+ return iRc;
+}
+/***********************************************************************/
+xbInt16 xbStmt::ParseStmt( const xbString &sCmdLine ){
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+ xbInt16 iParenCnt = 0;
+ xbUInt32 ulStartPos = 7;
+ xbUInt32 ulLen = 0;
+
+
+ xbBool bFromFound = xbFalse;
+ xbBool bWhereFound = xbFalse;
+ xbBool bOrderByFound = xbFalse;
+ xbBool bGroupByFound = xbFalse;
+ xbBool bHavingFound = xbFalse;
+ xbBool bDone = xbFalse;
+
+ xbString sToken;
+
+ sStmt.Set( sCmdLine );
+ sStmt.Trim();
+
+ try{
+
+ std::cout << "ParseStmt - [" << sStmt << "]\n";
+
+ xbUInt32 ulPos = ulStartPos;
+
+ while( !bFromFound && !bDone ){
+ ulPos = GetNextToken( sStmt, sToken, ulPos );
+ if( sToken == "" ){
+ bDone = xbTrue;
+ } else {
+ iParenCnt += GetParenCnt( sToken );
+ if( iParenCnt == 0 ){
+ sToken.ToUpperCase();
+ if( sToken == "FROM" ){
+ bFromFound = xbTrue;
+ ulFromPos = ulPos;
+ sFrom.Assign( sStmt, ulFromPos );
+ }
+ }
+ ulPos += sToken.Len() + 1;
+ }
+ }
+
+ // look for the where clause
+ if( bFromFound )
+ ulPos = ulFromPos + 5;
+ else
+ ulPos = ulStartPos;
+
+ bDone = xbFalse;
+ while( !bWhereFound && !bDone ){
+ ulPos = GetNextToken( sStmt, sToken, ulPos );
+ if( sToken == "" ){
+ bDone = xbTrue;
+ } else {
+ iParenCnt += GetParenCnt( sToken );
+ if( iParenCnt == 0 ){
+ sToken.ToUpperCase();
+ if( sToken == "WHERE" ){
+ bWhereFound = xbTrue;
+ ulWherePos = ulPos;
+ sWhere.Assign( sStmt, ulWherePos+6 );
+ }
+ }
+ ulPos += sToken.Len() + 1;
+ }
+ }
+
+
+ // look for the order clause
+ if( bWhereFound )
+ ulPos = ulWherePos + 6;
+ else if( bFromFound )
+ ulPos = ulFromPos + 5;
+ else
+ ulPos = ulStartPos;
+
+ bDone = xbFalse;
+ while( !bOrderByFound && !bDone ){
+ ulPos = GetNextToken( sStmt, sToken, ulPos );
+ if( sToken == "" ){
+ bDone = xbTrue;
+ } else {
+ iParenCnt += GetParenCnt( sToken );
+ if( iParenCnt == 0 ){
+ sToken.ToUpperCase();
+ if( sToken == "ORDER" ){
+ xbString sToken2;
+ xbUInt32 ulPos2 = GetNextToken( sStmt, sToken2, ulPos + 6 );
+ if( sToken2 != "" ){
+ sToken2.ToUpperCase();
+ if( sToken2 == "BY" ){
+ bOrderByFound = xbTrue;
+ ulOrderByPos = ulPos;
+ sOrderBy.Assign( sStmt, ulPos2 + 3 );
+ }
+ }
+ }
+ }
+ ulPos += sToken.Len() + 1;
+ }
+ }
+
+
+ bDone = xbFalse;
+ while( !bGroupByFound && !bDone ){
+ ulPos = GetNextToken( sStmt, sToken, ulPos );
+ if( sToken == "" ){
+ bDone = xbTrue;
+ } else {
+ iParenCnt += GetParenCnt( sToken );
+ if( iParenCnt == 0 ){
+ sToken.ToUpperCase();
+ if( sToken == "GROUP" ){
+ xbString sToken2;
+ xbUInt32 ulPos2 = GetNextToken( sStmt, sToken2, ulPos + 6 );
+ if( sToken2 != "" ){
+ sToken2.ToUpperCase();
+ if( sToken2 == "BY" ){
+ bGroupByFound = xbTrue;
+ ulGroupByPos = ulPos;
+ sGroupBy.Assign( sStmt, ulPos2 + 3 );
+ }
+ }
+ }
+ }
+ ulPos += sToken.Len() + 1;
+ }
+ }
+
+ bDone = xbFalse;
+ while( !bHavingFound && !bDone ){
+ ulPos = GetNextToken( sStmt, sToken, ulPos );
+ if( sToken == "" ){
+ bDone = xbTrue;
+ } else {
+ iParenCnt += GetParenCnt( sToken );
+ if( iParenCnt == 0 ){
+ sToken.ToUpperCase();
+ if( sToken == "HAVING" ){
+ bHavingFound = xbTrue;
+ ulHavingPos = ulPos;
+ sHaving.Assign( sStmt, ulHavingPos + 7 );
+ }
+ }
+ ulPos += sToken.Len() + 1;
+ }
+ }
+
+
+ // do the fields part
+ if( bFromFound )
+ ulLen = ulFromPos - 7;
+ else if( bWhereFound )
+ ulLen = ulWherePos - 7;
+ else if( bOrderByFound )
+ ulLen = ulOrderByPos - 7;
+ else if( bGroupByFound )
+ ulLen = ulGroupByPos - 7;
+ else if( bHavingFound )
+ ulLen = ulHavingPos - 7;
+ else
+ ulLen = sStmt.Len() - 7;
+ sFields.Assign( sStmt, 7, ulLen );
+ sFields.Trim();
+
+ // do the FROM part
+ if( bFromFound ){
+ if( bWhereFound )
+ ulLen = ulWherePos - ulFromPos;
+ else if( bOrderByFound )
+ ulLen = ulOrderByPos - ulFromPos;
+ else if( bGroupByFound )
+ ulLen = ulGroupByPos - ulFromPos;
+ else if( bHavingFound )
+ ulLen = ulHavingPos - ulFromPos;
+ else
+ ulLen = sStmt.Len() - ulFromPos;
+ sFrom.Resize( ulLen );
+ sFrom.Trim();
+
+ }
+
+
+ // do the WHERE part
+ if( bWhereFound ){
+ ulLen = 0;
+ if( bOrderByFound )
+ ulLen = ulOrderByPos - ulWherePos - 6;
+ else if( bGroupByFound )
+ ulLen = ulGroupByPos - ulWherePos - 6;
+ else if( bHavingFound )
+ ulLen = ulHavingPos - ulWherePos - 6;
+
+ if( ulLen > 0 )
+ sWhere.Resize( ulLen );
+ sWhere.Trim();
+ }
+
+ // FIXME if there is more than one space between ORDER and BY then this doesn't work quite right
+ // do the ORDER BY part
+ if( bOrderByFound ){
+ if( bGroupByFound )
+ ulLen = ulGroupByPos - ulOrderByPos - 9;
+ else if( bHavingFound )
+ ulLen = ulHavingPos - ulOrderByPos - 9;
+ else
+ ulLen = sStmt.Len() - ulOrderByPos - 9;
+ sOrderBy.Resize( ulLen );
+ sOrderBy.Trim();
+ }
+
+ // FIXME if there is more than one space between ORDER and BY then this doesn't work quite right
+ // do the GROUP BY part
+ if( bGroupByFound ){
+ if( bHavingFound )
+ ulLen = ulHavingPos - ulGroupByPos - 9;
+ else
+ ulLen = sStmt.Len() - ulGroupByPos - 9;
+ sGroupBy.Resize( ulLen );
+ sGroupBy.Trim();
+ }
+
+ if( bFromFound ){
+ if(( iRc = ParseFromStmt( sFrom )) != XB_NO_ERROR ){
+ iErrorStop = 100;
+ throw iRc;
+ }
+ }
+
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbStmt::ParseStmt() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+
+ return iRc;
+}
+
+/***********************************************************************/
+xbInt16 xbStmt::ProcessFromSeg( const xbString &sFromSeg ){
+
+
+ xbInt16 iRc = 0;
+ xbInt16 iErrorStop = 0;
+ char cType = ' ';
+ xbString sToken;
+ xbString sTable;
+ xbString sAlias;
+ xbString sWork;
+ xbString sExp;
+ xbUInt32 iPos;
+ xbBool bDone;
+ xbExp * pJoinExp = NULL;
+
+ try{
+
+ std::cout << "ProcessFromSeg for segment [" << sFromSeg.Str() << "]\n";
+
+ GetNextToken( sFromSeg, sToken, 1 );
+ sToken.ToUpperCase();
+
+ std::cout << "sToken1 = [" << sToken.Str() << "]\n";
+
+ if( sToken == "FROM" ){
+ // FROM has to be the first statement, and exist only once
+ if( pTblList ){
+ iErrorStop = 100;
+ iRc = XB_PARSE_ERROR;
+ throw iRc;
+ }
+ cType = 'M';
+ } else if( sToken == "LEFT" )
+ cType = 'L';
+ else if( sToken == "RIGHT" )
+ cType = 'R';
+ else if( sToken == "RIGHT" )
+ cType = 'R';
+ else if( sToken == "INNER" )
+ cType = 'I';
+ else if( sToken == "OUTER" || sToken == "FULL" )
+ cType = 'O';
+ else if( sToken[1] == '(' )
+ cType = 'Q';
+ else{
+ iErrorStop = 100;
+ iRc = XB_PARSE_ERROR;
+ throw iRc;
+ }
+
+
+ if( cType == 'M' ){
+ // expecting "FROM table" or "FROM table alias"
+ iPos = GetNextToken( sFromSeg, sToken, 5 );
+ sTable = sToken;
+
+ iPos = GetNextToken( sFromSeg, sToken, iPos + sToken.Len() + 1 );
+ if( sToken.Len() > 0 )
+ sAlias = sToken;
+ else
+ sAlias = "";
+
+ sWork = sToken;
+ sWork.ToUpperCase();
+ iPos = sWork.Pos( ".DBF" );
+ if( iPos == 0 )
+ sTable += ".DBF";
+
+ // std::cout << "table = [" << sTable.Str() << "] alias = [" << sAlias.Str() << "]\n";
+
+ } else if( cType != 'Q' ){
+ sWork = sFromSeg;
+ sWork.ToUpperCase();
+ iPos = sWork.Pos( " ON " );
+ if( iPos == 0 ){
+ iErrorStop = 110;
+ iRc = XB_PARSE_ERROR;
+ throw iRc;
+ }
+ bDone = xbFalse;
+
+ sWork.Assign( sFromSeg, iPos + 4 );
+ CvtSqlExp2DbaseExp( sWork, sExp );
+ sExp.Trim();
+ std::cout << "ON = [" << sExp.Str() << "]\n";
+
+
+ // need to get past the keywords LEFT, FULL, OUTER, RIGHT, INNER and get the table name here
+ iPos = sToken.Len() + 1;
+ while( !bDone ){
+ iPos = GetNextToken( sFromSeg, sToken, iPos );
+ sWork = sToken;
+ sWork.ToUpperCase();
+ if( sWork != "LEFT" && sWork != "RIGHT" && sWork != "INNER" && sWork != "OUTER" && sWork != "FULL" && sWork != "JOIN" )
+ bDone = xbTrue;
+ else
+ iPos += (sWork.Len() + 1);
+ }
+
+ sTable = sToken;
+ GetNextToken( sFromSeg, sAlias, iPos + sTable.Len() + 1 );
+ sWork.ToUpperCase();
+ iPos = sWork.Pos( ".DBF" );
+ if( iPos == 0 )
+ sTable += ".DBF";
+ sWork = sAlias;
+ sWork.ToUpperCase();
+ if( sWork == "ON" )
+ sAlias = "";
+ }
+
+
+ // open table
+ //std::cout << "attempting to open table " << sTable.Str() << "\n";
+ xbDbf *d = NULL;
+ if(( iRc = xbase->OpenHighestVersion( sTable, sAlias, &d )) != XB_NO_ERROR ){
+ iErrorStop = 120;
+ throw iRc;
+ }
+
+
+
+ // build out table linkage expression
+ if( cType == 'M' )
+ sExp = "MASTER";
+ else if( cType == 'L' ){
+ pJoinExp = new xbExp( xbase );
+
+ // std::cout << "Parsing expression [" << sExp.Str() << "]\n";
+ if(( iRc = pJoinExp->ParseExpression( d, sExp )) != XB_NO_ERROR ){
+ iErrorStop = 130;
+ throw iRc;
+ }
+ }
+
+
+ // attach to correct location in list
+
+
+ // update the UpdateJoinList routine as appropriate
+// if(( iRc = UpdateJoinList( cType, sTable, sAlias, NULL, NULL, NULL, NULL )) != XB_NO_ERROR ){
+
+ if(( iRc = UpdateJoinList( cType, sTable, sAlias, sExp, d, pJoinExp )) != XB_NO_ERROR ){
+ iErrorStop = 110;
+ throw iRc;
+ }
+
+
+ }
+ catch (xbInt16 iRc ){
+ xbString sMsg;
+ sMsg.Sprintf( "xbStmt::ProcessFromSeg() Exception Caught. Error Stop = [%d] rc = [%d]", iErrorStop, iRc );
+ xbase->WriteLogMessage( sMsg.Str() );
+ xbase->WriteLogMessage( GetErrorMessage( iRc ));
+ }
+ return iRc;
+}
+
+/***********************************************************************/
+xbInt16 xbStmt::UpdateJoinList( char cType, const xbString &sTableName, const xbString &sAlias, const xbString &sExp, xbDbf *d, xbExp *e ){
+// xbTag *t ){
+
+
+ std::cout << "Update join list for table " << sTableName.Str() << "\n";
+
+ xbTblJoin *pTj;
+ if(( pTj = (xbTblJoin *) calloc( 1, sizeof( xbTblJoin ))) == NULL )
+ return XB_NO_MEMORY;
+
+ pTj->cJoinType = cType;
+ pTj->sTableName.Set( sTableName );
+ pTj->sAlias.Set( sAlias );
+ pTj->sJoinExp.Set( sExp );
+ pTj->pDbf = d;
+ pTj->pLinkExp = e;
+
+/*
+
+ pTj->pTag = t;
+*/
+
+ if( cType == 'M' )
+ pTblList = pTj;
+
+ return 0;
+}
+/***********************************************************************/
+} /* namespace */
+#endif /* XB_SQL_SUPPORT */
+
diff --git a/src/tests/xb_test_bcd.cpp b/src/tests/xb_test_bcd.cpp
index 1eab20f..f735935 100755
--- a/src/tests/xb_test_bcd.cpp
+++ b/src/tests/xb_test_bcd.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2017,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2017,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -45,6 +45,7 @@ int main( int argCnt, char **av )
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( iPo ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -55,8 +56,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
-
if( iPo > 0 ){
std::cout << "XBase bcd testing program.." << std::endl;
diff --git a/src/tests/xb_test_blockread.cpp b/src/tests/xb_test_blockread.cpp
new file mode 100755
index 0000000..ff55d23
--- /dev/null
+++ b/src/tests/xb_test_blockread.cpp
@@ -0,0 +1,168 @@
+/* xb_test_blockread.cpp
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
+
+The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ XDB-devel@lists.sourceforge.net
+ XDB-users@lists.sourceforge.net
+
+*/
+
+// This program tests the class xbBlockRead
+// usage: xb_test_blockread QUITE|NORMAL|VERBOSE
+
+
+#include "xbase.h"
+
+using namespace xb;
+
+#include "tstfuncs.cpp"
+
+ xbSchema MyDbfRec[] =
+ {
+ { "NFLD", XB_NUMERIC_FLD, 10, 0 },
+ { "CFLD", XB_CHAR_FLD, 89, 0 },
+ { "",0,0,0 }
+ };
+
+
+int main( int argCnt, char **av )
+{
+ xbInt16 iRc = 0;
+ xbInt16 iRc2 = 0;
+ int iPo = 1; /* print option */
+ /* 0 - QUIET */
+ /* 1 - NORMAL */
+ /* 2 - VERBOSE */
+
+ if( argCnt > 1 ) {
+ if( av[1][0] == 'Q' )
+ iPo = 0;
+ else if( av[1][0] == 'V' )
+ iPo = 2;
+ }
+
+ xbXBase x;
+ x.SetDataDirectory( PROJECT_DATA_DIR );
+
+ xbDbf4 dbf( &x );
+
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
+ x.EnableMsgLogging();
+ if( iPo ){
+ std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
+ }
+ xbString sMsg;
+ sMsg.Sprintf( "Program [%s] initializing...", av[0] );
+ x.WriteLogMessage( sMsg );
+ #endif
+
+
+ InitTime();
+
+
+ iRc2 = dbf.CreateTable( "BLOCKRD.DBF", "BlockRead", MyDbfRec, XB_OVERLAY, XB_MULTI_USER );
+ iRc += TestMethod( iPo, "CreateTable()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+
+ // fill the file with several blocks of data
+ for( xbInt32 i = 0; i < 50; i++ ){
+ iRc2 = dbf.BlankRecord();
+ if( iRc2 != XB_NO_ERROR )
+ iRc += TestMethod( iPo, "BlankRecord()", (xbInt32) iRc2, XB_NO_ERROR );
+
+ iRc2 = dbf.PutLongField( 0, i+1 );
+ if( iRc2 != XB_NO_ERROR )
+ iRc += TestMethod( iPo, "PutLongField()", (xbInt32) iRc2, XB_NO_ERROR );
+
+ iRc2 = dbf.AppendRecord();
+ if( iRc2 != XB_NO_ERROR )
+ iRc += TestMethod( iPo, "AppendRecord()", (xbInt32) iRc2, XB_NO_ERROR );
+
+ iRc2 = dbf.Commit();
+ if( iRc2 != XB_NO_ERROR )
+ iRc += TestMethod( iPo, "Commit()", (xbInt32) iRc2, XB_NO_ERROR );
+ }
+
+
+ dbf.SetDefaultBlockReadSize( 2000 );
+
+ // enable block read for this table
+ iRc += TestMethod( iPo, "EnableBlockReadProcessing()", dbf.EnableBlockReadProcessing(), XB_NO_ERROR );
+
+ xbUInt32 ulFld = 0;
+ xbUInt32 ulCtr = 1;
+
+ iRc2 = XB_NO_ERROR;
+ while( iRc2 == XB_NO_ERROR ){
+ // std::cout << ulCtr << "\n";
+ iRc2 += dbf.GetRecord( ulCtr );
+ if( iRc2 != XB_NO_ERROR && iRc != XB_INVALID_RECORD )
+ TestMethod( iPo, "GetRecord()", iRc, XB_NO_ERROR );
+
+ if( iRc2 == XB_NO_ERROR ){
+ dbf.GetULongField( "NFLD", ulFld );
+ if( ulFld != ulCtr ){
+ std::cout << "ulFld = " << ulFld << " ulCtr = " << ulCtr << "\n";
+ iRc += TestMethod( iPo, "Field Compare", (xbDouble) ulFld, (xbDouble) ulCtr );
+ }
+ }
+ ulCtr++;
+ }
+
+ // std::cout << "**********Delete every other record\n";
+ iRc2 = dbf.GetFirstRecord();
+ while( iRc2 == XB_NO_ERROR ){
+ if( (dbf.GetCurRecNo() % 2) != 0 ){
+ dbf.DeleteRecord();
+ dbf.Commit();
+ }
+ iRc2 = dbf.GetNextRecord();
+ }
+
+
+ // test filter for deleted records
+ #ifdef XB_FILTER_SUPPORT
+ xbFilter f( &dbf );
+ xbString sFilt = ".NOT. DELETED()";
+ f.Set( sFilt );
+ iRc2 = f.GetFirstRecord();
+ while( iRc2 == XB_NO_ERROR ){
+ dbf.GetULongField( "NFLD", ulFld );
+ if( (ulFld % 2) != 0 ){
+ iRc += TestMethod( iPo, "Filter GetNextRecord()", ulFld % 2, 0 );
+ }
+ iRc2 = f.GetNextRecord();
+ }
+ #endif // XB_FILTER_SUPPORT
+
+
+ iRc += TestMethod( iPo, "DisableBlockReadProcessing()", dbf.DisableBlockReadProcessing(), XB_NO_ERROR );
+ //iRc2 = dbf.DeleteTable();
+
+ iRc2 = dbf.Close();
+ iRc += TestMethod( iPo, "Close()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+
+ #ifdef XB_LOGGING_SUPPORT
+ sMsg.Sprintf( "Program [%s] terminating with [%d] errors...", av[0], iRc * -1 );
+ x.WriteLogMessage( sMsg );
+ #endif
+
+
+ if( iPo > 0 || iRc < 0 )
+ fprintf( stdout, "Total Errors = %d\n", iRc * -1 );
+
+ return iRc;
+}
+
diff --git a/src/tests/xb_test_date.cpp b/src/tests/xb_test_date.cpp
index 1d9b523..7aee584 100755
--- a/src/tests/xb_test_date.cpp
+++ b/src/tests/xb_test_date.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -40,8 +40,9 @@ int main( int argCnt, char **av )
po = 2;
}
-#ifdef XB_LOGGING_SUPPORT
xbXBase x;
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -49,7 +50,7 @@ int main( int argCnt, char **av )
xbString sMsg;
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-#endif
+ #endif
InitTime();
xbDate d1;
diff --git a/src/tests/xb_test_dbf_v3_memos.cpp b/src/tests/xb_test_dbf_v3_memos.cpp
index ad3e8e0..e42edb1 100755
--- a/src/tests/xb_test_dbf_v3_memos.cpp
+++ b/src/tests/xb_test_dbf_v3_memos.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -55,6 +55,7 @@ int main( int argCnt, char **av )
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -65,7 +66,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
#ifdef XB_LOCKING_SUPPORT
x.DisableDefaultAutoLock();
diff --git a/src/tests/xb_test_dbf_v3_nomemos.cpp b/src/tests/xb_test_dbf_v3_nomemos.cpp
index e5adc48..2dfeb7e 100755
--- a/src/tests/xb_test_dbf_v3_nomemos.cpp
+++ b/src/tests/xb_test_dbf_v3_nomemos.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -59,7 +59,8 @@ int main( int argCnt, char **av )
xbXBase x;
-#ifdef XB_LOGGING_SUPPORT
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -67,10 +68,9 @@ int main( int argCnt, char **av )
xbString sMsg;
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-#endif
+ #endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
#ifdef XB_LOCKING_SUPPORT
x.DisableDefaultAutoLock();
@@ -97,7 +97,7 @@ int main( int argCnt, char **av )
xbDbf3 V3Dbf2( &x );
// next occurrence should error as a dup
- x.WriteLogMessage( "Second create attempt" );
+ x.WriteLogMessage( "Second create attempt, should generate an error." );
iRc2 = V3Dbf2.CreateTable( "TestV3.DBF", "TestV3", MyV3Record, XB_DONTOVERLAY, XB_MULTI_USER );
iRc += TestMethod( po, "CreateTable()", iRc2, XB_FILE_EXISTS );
if( iRc2 != XB_FILE_EXISTS ){
diff --git a/src/tests/xb_test_dbf_v4_memos.cpp b/src/tests/xb_test_dbf_v4_memos.cpp
index 2b0e09c..47a9053 100755
--- a/src/tests/xb_test_dbf_v4_memos.cpp
+++ b/src/tests/xb_test_dbf_v4_memos.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -47,8 +47,8 @@ int main( int argCnt, char **av )
xbXBase x;
-#ifdef XB_LOGGING_SUPPORT
-
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -56,11 +56,9 @@ int main( int argCnt, char **av )
xbString sMsg;
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-
-#endif
+ #endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
#ifdef XB_LOCKING_SUPPORT
x.DisableDefaultAutoLock();
diff --git a/src/tests/xb_test_dbf_v4_nomemos.cpp b/src/tests/xb_test_dbf_v4_nomemos.cpp
index 4036588..984eb63 100755
--- a/src/tests/xb_test_dbf_v4_nomemos.cpp
+++ b/src/tests/xb_test_dbf_v4_nomemos.cpp
@@ -2,7 +2,7 @@
XBase Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -56,9 +56,19 @@ int main( int argCnt, char **av )
{ "",0,0,0 }
};
+ xbSchema MyV4ZipRecord[] =
+ {
+ { "ZIPCODE", XB_NUMERIC_FLD, 5, 0 },
+ { "CITY", XB_CHAR_FLD, 30, 0 },
+ { "STATE", XB_CHAR_FLD, 2, 0 },
+ { "",0,0,0 }
+ };
+
+
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -69,7 +79,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
#ifdef XB_LOCKING_SUPPORT
x.DisableDefaultAutoLock();
@@ -318,10 +327,26 @@ int main( int argCnt, char **av )
rc += TestMethod( po, "GetField()", V4Dbf.GetField( fldAMT, sf ), XB_NO_ERROR );
rc += TestMethod( po, "GetField()", sf, " 432.55", 9 );
+
+ xbDbf4 V4DbfZ( &x ); // version 4 dbf file
+ rc2 = V4DbfZ.CreateTable( "TestV4Zip.DBF", "TestV4Zip", MyV4ZipRecord, XB_OVERLAY, XB_MULTI_USER );
+ rc += TestMethod( po, "CreateTable()", (xbInt32) rc2, XB_NO_ERROR );
+ if( rc2 )
+ x.DisplayError( rc2 );
+
+
+
rc += TestMethod( po, "Close()", V4Dbf.Close(), XB_NO_ERROR );
if( po == 2 )
x.DisplayTableList();
+
+ rc += TestMethod( po, "Close()", V4DbfZ.Close(), XB_NO_ERROR );
+ if( po == 2 )
+ x.DisplayTableList();
+
+
+
if( po > 0 || rc < 0 )
fprintf( stdout, "Total Errors = %d\n", rc * -1 );
diff --git a/src/tests/xb_test_expnode.cpp b/src/tests/xb_test_expnode.cpp
index 3fb716d..cbd79c9 100755
--- a/src/tests/xb_test_expnode.cpp
+++ b/src/tests/xb_test_expnode.cpp
@@ -2,7 +2,7 @@
XBase Software Library
-Copyright (c) 1997,2003,2014,2017,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2017,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -42,6 +42,7 @@ int main( int argCnt, char **av )
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -52,7 +53,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
InitTime();
if( po > 0 ){
diff --git a/src/tests/xb_test_expression.cpp b/src/tests/xb_test_expression.cpp
index 75ed3e5..ac1cde7 100755
--- a/src/tests/xb_test_expression.cpp
+++ b/src/tests/xb_test_expression.cpp
@@ -2,7 +2,7 @@
XBase Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -67,7 +67,7 @@ xbInt16 DevTester( xbXBase * xb, xbDbf * dbf, const char * sExpIn ){
if( iRc == XB_NO_ERROR ){
#ifdef XB_DEBUG_SUPPORT
exp.DumpTree( xbTrue );
- #endif // XB_DEBUG_SUPPORT
+ #endif // XB_DEBUG_SUPPORT
std::cout << "dump nodes\n";
n = exp.GetNextNodeTest( NULL );
if( !n ){
@@ -86,7 +86,6 @@ xbInt16 DevTester( xbXBase * xb, xbDbf * dbf, const char * sExpIn ){
std::cout << "Parse Error [" << iRc << "]\n";
return -1;
}
- return 0;
}
/**************************************************************************/
@@ -394,6 +393,7 @@ int main( int argCnt, char **av )
xbDate d;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -404,7 +404,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
InitTime();
if( po > 0 ){
diff --git a/src/tests/xb_test_file.cpp b/src/tests/xb_test_file.cpp
index 4614805..cf835c2 100755
--- a/src/tests/xb_test_file.cpp
+++ b/src/tests/xb_test_file.cpp
@@ -1,6 +1,6 @@
/* xb_test_file.cpp
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -42,6 +42,7 @@ int main( int argCnt, char **av )
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
diff --git a/src/tests/xb_test_filter.cpp b/src/tests/xb_test_filter.cpp
index ac4b896..000e196 100755
--- a/src/tests/xb_test_filter.cpp
+++ b/src/tests/xb_test_filter.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2020,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2020,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -41,7 +41,6 @@ int main( int argCnt, char **av )
iPo = 2;
}
-
xbSchema MyV4Record[] =
{
{ "CFLD", XB_CHAR_FLD, 6, 0 },
@@ -50,9 +49,9 @@ int main( int argCnt, char **av )
{ "",0,0,0 }
};
-
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( iPo ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -64,7 +63,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
char c;
xbString s;
@@ -114,7 +112,7 @@ int main( int argCnt, char **av )
iRc += TestMethod( iPo, "SetCurTag()", MyFile->SetCurTag( "" ), XB_NO_ERROR );
#endif // XB_INDEX_SUPPORT
- xbFilter f1( &x, MyFile );
+ xbFilter f1( MyFile );
xbString sMyFilterExpression = "LEFT( CFLD, 2 ) = 'YY'";
iRc += TestMethod( iPo, "Set()", f1.Set( sMyFilterExpression ), XB_NO_ERROR );
diff --git a/src/tests/xb_test_funcs.cpp b/src/tests/xb_test_funcs.cpp
index e8b73b0..c7bf0d3 100755
--- a/src/tests/xb_test_funcs.cpp
+++ b/src/tests/xb_test_funcs.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -61,6 +61,7 @@ int main( int argCnt, char **av )
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
diff --git a/src/tests/xb_test_linklist.cpp b/src/tests/xb_test_linklist.cpp
index dc253af..288ee99 100755
--- a/src/tests/xb_test_linklist.cpp
+++ b/src/tests/xb_test_linklist.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -42,7 +42,8 @@ int main( int argCnt, char **av )
}
xbXBase x;
-#ifdef XB_LOGGING_SUPPORT
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -50,7 +51,8 @@ int main( int argCnt, char **av )
xbString sMsg;
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-#endif
+ #endif
+
InitTime();
xbLinkList<xbString> ll;
diff --git a/src/tests/xb_test_lock.cpp b/src/tests/xb_test_lock.cpp
index 7e9865b..39332ad 100755
--- a/src/tests/xb_test_lock.cpp
+++ b/src/tests/xb_test_lock.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -59,6 +59,7 @@ int main( int argCnt, char **av )
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po > 0 ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -69,7 +70,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
InitTime();
#ifdef XB_DBF4_SUPPORT
MyFile = new xbDbf4( &x ); /* version 4 dbf file */
diff --git a/src/tests/xb_test_lock2.cpp b/src/tests/xb_test_lock2.cpp
index 3dd4b57..d5534ec 100755
--- a/src/tests/xb_test_lock2.cpp
+++ b/src/tests/xb_test_lock2.cpp
@@ -2,7 +2,7 @@
XBase Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -57,8 +57,8 @@ int main( int argCnt, char **av )
}
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
xbString sLogFileName = x.GetLogFqFileName().Str();
-
sLogFileName.Resize( sLogFileName.Len() - 3 );
sLogFileName += "_l2.txt";
x.SetLogFileName( sLogFileName );
@@ -72,7 +72,6 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
InitTime();
#ifdef XB_DBF4_SUPPORT
diff --git a/src/tests/xb_test_log.cpp b/src/tests/xb_test_log.cpp
index 613b7dd..28ae552 100755
--- a/src/tests/xb_test_log.cpp
+++ b/src/tests/xb_test_log.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -21,18 +21,13 @@ Email Contact:
#include "xbase.h"
using namespace xb;
-
#include "tstfuncs.cpp"
-
-
int main( int argCnt, char **av )
{
int rc = 0;
-#ifdef XB_LOGGING_SUPPORT
-
-
+ #ifdef XB_LOGGING_SUPPORT
int po = 1; /* print option */
/* 0 - QUIET */
/* 1 - NORMAL */
@@ -46,6 +41,7 @@ int main( int argCnt, char **av )
}
xbXBase x;
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
InitTime();
if( po ){
@@ -55,21 +51,18 @@ int main( int argCnt, char **av )
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-
xbString sNewLogFileName = "Logfile2.txt";
sMsg.Sprintf( "Switching to logfile [%s]", sNewLogFileName.Str() );
x.WriteLogMessage( sMsg );
-
x.DisableMsgLogging();
rc += TestMethod( po, "Set/Get Log Status()", x.GetLogStatus(), xbFalse );
x.SetLogFileName( sNewLogFileName );
- x.EnableMsgLogging();
+ x.EnableMsgLogging();
rc += TestMethod( po, "Set/Get Log Status()", x.GetLogStatus(), 1 );
rc += TestMethod( po,"WriteLogMessage()", x.WriteLogMessage( "Test log message........" ), XB_NO_ERROR );
-
sMsg.Sprintf( "Program [%s] terminating with [%d] errors...", av[0], rc * -1 );
x.WriteLogMessage( sMsg );
diff --git a/src/tests/xb_test_mdx.cpp b/src/tests/xb_test_mdx.cpp
index af191ad..2ef5ffb 100755
--- a/src/tests/xb_test_mdx.cpp
+++ b/src/tests/xb_test_mdx.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -55,20 +55,28 @@ int main( int argCnt, char **av )
};
+ xbSchema MyV4Record2[] =
+ {
+ { "CHAR1", XB_CHAR_FLD, 1, 0 },
+ { "CHAR27", XB_CHAR_FLD, 27, 0 },
+ { "",0,0,0 }
+ };
+
+
xbXBase x;
-#ifdef XB_LOGGING_SUPPORT
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( iPo ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
}
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-#endif
+ #endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
- x.SetMultiUser( false );
+ x.SetMultiUser( xbFalse );
InitTime();
if( iPo > 0 )
@@ -92,6 +100,7 @@ int main( int argCnt, char **av )
xbInt16 iDescending, xbInt16 iUnique, xbInt16 iOverLay, xbIx **xbIxOut, void **vpTagOut );
*/
+
iRc2 = V4DbfX1->CreateTag( "MDX", "CITY_TAGA", "CITY", "", 0, 0, XB_OVERLAY, &pIx, &pTag );
iRc += TestMethod( iPo, "CreateTag(1)", iRc2, 0 );
@@ -109,8 +118,6 @@ int main( int argCnt, char **av )
// std::cout << iRc2 << "\n";
-// something in th following block of code causing issues
-
xbInt32 uZip = 10000;
for( xbUInt16 i = 0; i < 35; i++ ){
for( xbUInt16 j = 0; j < 14; j++ ){
@@ -147,7 +154,7 @@ int main( int argCnt, char **av )
}
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+ iRc += TestMethod( iPo, "CheckTagIntegrity(1)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
// attempt to add a dup key, should fail with XB_KEY_NOT_UNIQUE
iRc2 = V4DbfX1->BlankRecord();
@@ -177,7 +184,7 @@ int main( int argCnt, char **av )
iRc += TestMethod( iPo, "Abort()", iRc2, XB_NO_ERROR );
iRc += TestMethod( iPo, "DeleteTag()", V4DbfX1->DeleteTag( "MDX", "CITY_TAGA" ), XB_NO_ERROR );
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+ iRc += TestMethod( iPo, "CheckTagIntegrity(2)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
iRc2 = V4DbfX1->CreateTag( "MDX", "CITY_TAGF", "CITY", ".NOT. DELETED()", 0, 0, XB_OVERLAY, &pIx, &pTag );
iRc += TestMethod( iPo, "CreateTag(4)", iRc2, 0 );
@@ -186,27 +193,29 @@ int main( int argCnt, char **av )
iRc += TestMethod( iPo, "SetCurTag()", iRc2, XB_NO_ERROR );
iRc += TestMethod( iPo, "GetCurTagName()", V4DbfX1->GetCurTagName().Str(), "CITY_TAGF", 9 );
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_INVALID_INDEX );
+ // next check throws an error message on the display, that is what it is testing, don't need to debug it
+ iRc += TestMethod( iPo, "CheckTagIntegrity(3)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_INVALID_INDEX );
+
iRc2 = V4DbfX1->Reindex( 0 );
iRc += TestMethod( iPo, "Reindex( 0 )", iRc2, XB_NO_ERROR );
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+ iRc += TestMethod( iPo, "CheckTagIntegrity(4)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
iRc += TestMethod( iPo, "GetCurTagName()", V4DbfX1->GetCurTagName().Str(), "CITY_TAGF", 9 );
iRc2 = V4DbfX1->Reindex( 1 );
iRc += TestMethod( iPo, "Reindex( 1 )", iRc2, XB_NO_ERROR );
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+ iRc += TestMethod( iPo, "CheckTagIntegrity(5)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
// delete everything, all keys should be removed from the filtered index
iRc += TestMethod( iPo, "DeleteAll(0)", V4DbfX1->DeleteAll( 0 ), XB_NO_ERROR );
iRc += TestMethod( iPo, "Commit()", V4DbfX1->Commit(), XB_NO_ERROR );
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+ iRc += TestMethod( iPo, "CheckTagIntegrity(6)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
// undelete everything, all keys should be added back into the filtered index
iRc += TestMethod( iPo, "DeleteAll(1)", V4DbfX1->DeleteAll( 1 ), XB_NO_ERROR );
iRc += TestMethod( iPo, "Commit()", V4DbfX1->Commit(), XB_NO_ERROR );
- iRc += TestMethod( iPo, "CheckTagIntegrity()", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+ iRc += TestMethod( iPo, "CheckTagIntegrity(7)", V4DbfX1->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
// std::cout << "Cur Tag Name = " << V4DbfX1->GetCurTagName().Str() << "\n";
sKey = "abc";
@@ -239,8 +248,41 @@ int main( int argCnt, char **av )
iRc += TestMethod( iPo, "Rename()", V4DbfX1->Rename( "TestMdxR.DBF" ), XB_NO_ERROR );
+ xbDbf *V4DbfX2 = new xbDbf4( &x );
+ iRc2 = V4DbfX2->CreateTable( "TMDXDB02.DBF", "TestMdxX4", MyV4Record2, XB_OVERLAY, XB_MULTI_USER );
+ iRc += TestMethod( iPo, "CreateTable(2)", iRc2, 0 );
+
+
+ iRc2 = V4DbfX2->CreateTag( "MDX", "TAG1", "CHAR27", ".NOT. DELETED()", 0, 0, XB_OVERLAY, &pIx, &pTag );
+// iRc2 = V4DbfX2->CreateTag( "MDX", "TAG2", "CHAR1", "CHAR1 = 'O' .AND. .NOT. DELETED()", 0, 0, XB_OVERLAY, &pIx, &pTag );
+ iRc += TestMethod( iPo, "CreateTag(4)", iRc2, 0 );
+
+
+
+ for( xbUInt32 ul = 0; ul < 500 && iRc2 == XB_NO_ERROR; ul++ ){
+ c = 'O';
+ V4DbfX2->BlankRecord();
+ iRc2 = V4DbfX2->PutField( 1, c );
+ if( iRc2 != XB_NO_ERROR ){
+ iRc += TestMethod( iPo, "PutField()", iRc2, XB_NO_ERROR );
+ } else {
+ iRc2 = V4DbfX2->AppendRecord();
+ if( iRc2 != XB_NO_ERROR ){
+ iRc += TestMethod( iPo, "AppendRecord()", iRc2, XB_NO_ERROR );
+ } else {
+ iRc2 = V4DbfX2->Commit();
+ if( iRc2 != XB_NO_ERROR ){
+ iRc += TestMethod( iPo, "Commit()", iRc2, XB_NO_ERROR );
+ }
+ }
+ }
+ }
+
+ iRc += TestMethod( iPo, "CheckTagIntegrity(7)", V4DbfX2->CheckTagIntegrity( 1, 2 ), XB_NO_ERROR );
+
x.CloseAllTables();
delete V4DbfX1;
+ delete V4DbfX2;
if( iPo > 0 || iRc < 0 )
fprintf( stdout, "Total Errors = %d\n", iRc * -1 );
diff --git a/src/tests/xb_test_ndx.cpp b/src/tests/xb_test_ndx.cpp
index b8b97f6..34496b6 100755
--- a/src/tests/xb_test_ndx.cpp
+++ b/src/tests/xb_test_ndx.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -57,6 +57,7 @@ int main( int argCnt, char **av )
xbString sMsg;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( iPo ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -67,11 +68,7 @@ int main( int argCnt, char **av )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
-
- #ifdef XB_LOCKING_SUPPORT
- x.DisableDefaultAutoLock();
- #endif
+ x.SetMultiUser( xbFalse );
InitTime();
@@ -386,11 +383,13 @@ int main( int argCnt, char **av )
//ix->GetTagName( 0, sTagName );
sMsg.Sprintf( "CheckTagIntegrity() - [%s]", ix->GetTagName(ix->GetCurTag()).Str());
iRc += TestMethod( iPo, sMsg, ix->CheckTagIntegrity( ix->GetCurTag(), 2 ), XB_NO_ERROR );
- ixl = ixl->next;
}
+ ixl = ixl->next;
}
- iRc += TestMethod( iPo, "DeleteTable()", V3Dbf->DeleteTable(), XB_NO_ERROR );
+// iRc += TestMethod( iPo, "DeleteTable()", V3Dbf->DeleteTable(), XB_NO_ERROR );
+
+ x.CloseAllTables();
if( iPo > 0 || iRc < 0 )
fprintf( stdout, "Total Errors = %d\n", iRc * -1 );
diff --git a/src/tests/xb_test_sql.cpp b/src/tests/xb_test_sql.cpp
index 20c8514..99a4f0b 100755
--- a/src/tests/xb_test_sql.cpp
+++ b/src/tests/xb_test_sql.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014, 2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -44,9 +44,10 @@ int main( int argCnt, char **av )
po = 2;
}
-
- xbSchema MySqlRecord[] =
+/*
+ xbSchema MyAddressRecord[] =
{
+ { "ADDRESS", XB_CHAR_FLD, 30, 0 },
{ "CITY", XB_CHAR_FLD, 30, 0 },
{ "STATE", XB_CHAR_FLD, 2, 0 },
{ "ZIPCODE", XB_NUMERIC_FLD, 9, 0 },
@@ -56,9 +57,23 @@ int main( int argCnt, char **av )
{ "",0,0,0 }
};
+ above structure below, depending on how table is created
+
+ sSql = "CREATE TABLE Address.DBF ( ADDRESS CHAR(30), CITY CHAR(30), STATE CHAR(2), ZIPCODE NUMERIC(9,0), NOTES VARCHAR, LASTUPDATE DATE, ACTIVE LOGICAL )";
+*/
+
+ xbSchema MyZipRecord[] =
+ {
+ { "ZIPCODE", XB_NUMERIC_FLD, 9, 0 },
+ { "CITY", XB_CHAR_FLD, 30, 0 },
+ { "STATE", XB_CHAR_FLD, 2, 0 },
+ { "",0,0,0 }
+ };
+
xbXBase x;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -69,9 +84,7 @@ int main( int argCnt, char **av )
#endif
-
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
InitTime();
xbSql sql( &x );
@@ -81,36 +94,48 @@ int main( int argCnt, char **av )
xbDbf4 SqlDbf( &x ); // version 4 dbf file
+ xbDbf4 SqlDbfZ( &x ); // version 4 dbf file
+
- // clean up any things possibly needing cleaned up
- xbString sDir;
- SqlDbf.GetFileDirPart( sDir );
- xbString sDbfName;
- xbString sDbtName;
- xbString sMdxName;
- sDbfName.Sprintf( "%sTestSQL.DBF", sDir.Str());
- sDbtName.Sprintf( "%sTestSQL.DBR", sDir.Str());
- sMdxName.Sprintf( "%sTestSQL.MDX", sDir.Str());
- SqlDbf.xbRemove( sDbfName );
- SqlDbf.xbRemove( sDbtName );
- SqlDbf.xbRemove( sMdxName );
- sDbfName.Sprintf( "%sTestSqlR.DBF", sDir.Str());
- sDbtName.Sprintf( "%sTestSqlR.DBT", sDir.Str());
- sMdxName.Sprintf( "%sTestSqlR.MDX", sDir.Str());
- SqlDbf.xbRemove( sDbfName );
- SqlDbf.xbRemove( sDbtName );
- SqlDbf.xbRemove( sMdxName );
-
-
- iRc2 = SqlDbf.CreateTable( "TestSQL.DBF", "TestSQL", MySqlRecord, XB_OVERLAY, XB_MULTI_USER );
+
+
+ sSql = "DROP TABLE IF EXISTS AddressR.DBF";
+ iRc2 = sql.ExecuteNonQuery( sSql );
+ iRc += TestMethod( po, "DropTable()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+
+
+ sSql = "DROP TABLE IF EXISTS Address.DBF";
+ iRc2 = sql.ExecuteNonQuery( sSql );
+ iRc += TestMethod( po, "DropTable()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+
+
+ sSql = "CREATE TABLE Address.DBF ( ADDRESS CHAR(30), CITY CHAR(30), STATE CHAR(2), ZIPCODE NUMERIC(9,0), NOTES VARCHAR, LASTUPDATE DATE, ACTIVE LOGICAL )";
+
+ iRc2 = sql.ExecuteNonQuery( sSql );
+ iRc += TestMethod( po, "CreateTable()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+/*
+ non sql way to create a table
+ iRc2 = SqlDbf.CreateTable( "Address.DBF", "Address", MyAddressRecord, XB_OVERLAY, XB_MULTI_USER );
iRc += TestMethod( po, "CreateTable()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
+*/
+
+// return 0;
#ifdef XB_MDX_SUPPORT
- sSql = "CREATE INDEX tag1 ON TestSQL.DBF( CITY, STATE, DTOS( LASTUPDATE )) FILTER .NOT. DELETED()";
- // xbString sSql = "CREATE INDEX tag1 ON TestSQL.DBF( CITY, STATE )";
+ sSql = "CREATE INDEX tag1 ON Address.DBF( CITY, STATE, DTOS( LASTUPDATE )) FILTER .NOT. DELETED()";
+ // xbString sSql = "CREATE INDEX tag1 ON Address.DBF( CITY, STATE )";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqL CreateIndex()", (xbInt32) iRc2, XB_NO_ERROR );
@@ -118,65 +143,107 @@ int main( int argCnt, char **av )
x.DisplayError( iRc2 );
#endif // XB_MDX_SUPPORT
- sSql = "INSERT INTO TestSQL (CITY, STATE, ZIPCODE, NOTES, LASTUPDATE, ACTIVE ) VALUES ( 'San Diego', 'CA', 92007, 'San Diego is a cool place', '1989-02-09', 'Y')";
+ sSql = "INSERT INTO Address (CITY, STATE, ZIPCODE, NOTES, LASTUPDATE, ACTIVE ) VALUES ( 'San Diego', 'CA', 92007, 'San Diego is a cool place', '1989-02-09', 'Y')";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlInsert()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- sSql = "INSERT INTO TestSQL (CITY, STATE, ZIPCODE, NOTES, LASTUPDATE, ACTIVE ) VALUES ( 'Dallas', 'TX', 76248, 'Dallas is hot in the summer', '1989-02-09', 'N')";
+ sSql = "INSERT INTO Address (CITY, STATE, ZIPCODE, NOTES, LASTUPDATE, ACTIVE ) VALUES ( 'Dallas', 'TX', 76248, 'Dallas is hot in the summer', '1989-02-09', 'N')";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlInsert()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- sSql = "ALTER TABLE TestSQL.DBF RENAME TO TestSqlR.DBF";
+ sSql = "ALTER TABLE Address.DBF RENAME TO AddressR.DBF";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlAlterTable()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- x.DisplayTableList();
-
-
- sSql = "DELETE FROM TestSqlR.DBF WHERE CITY='San Diego'";
+ sSql = "DELETE FROM AddressR.DBF WHERE CITY='San Diego'";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlDelete()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- sSql = "UNDELETE FROM TestSqlR.DBF WHERE CITY='San Diego'";
+ sSql = "UNDELETE FROM AddressR.DBF WHERE CITY='San Diego'";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlUndelete()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- sSql = "DELETE FROM TestSqlR.DBF";
+ sSql = "DELETE FROM AddressR.DBF";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlDelete()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- sSql = "UNDELETE FROM TestSqlR.DBF";
+ sSql = "UNDELETE FROM AddressR.DBF";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlDelete()", (xbInt32) iRc2, XB_NO_ERROR );
if( iRc2 )
x.DisplayError( iRc2 );
- sSql = "DELETE FROM TestSqlR.DBF WHERE BAD='EXPRESSION'";
+ iRc2 = SqlDbfZ.CreateTable( "ZipCode.DBF", "", MyZipRecord, XB_OVERLAY, XB_MULTI_USER );
+ iRc += TestMethod( po, "CreateTable()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+
+// sSql = "INSERT INTO ZipCode.DBF ( ZIPCODE, CITY, STATE ) VALUES ( 75087, 'Rockwall', 'TX' )";
+
+
+// std::cout << "---------------------------------------------------------\n";
+// std::cout << sSql.Str() << "\n";
+
+ sSql = "INSERT INTO ZipCode ( CITY ) VALUES ( 'city' )";
+ iRc2 = sql.ExecuteNonQuery( sSql );
+
+
+ iRc += TestMethod( po, "SqlInsert()", (xbInt32) iRc2, XB_NO_ERROR );
+ if( iRc2 )
+ x.DisplayError( iRc2 );
+
+
+
+//**************** work in progress
+
+/*
+ sSql = "DELETE FROM AddressR.DBF WHERE BAD='EXPRESSION'";
iRc2 = sql.ExecuteNonQuery( sSql );
iRc += TestMethod( po, "SqlDelete()", (xbInt32) iRc2, XB_INVALID_FIELD_NAME );
+*/
// if( iRc2 )
// x.DisplayError( iRc2 );
-// sSql = "SELECT CITY, STATE ZIPCODE FROM TestSQL.DBF WHERE CITY IS NOT NULL";
-// iRc += TestMethod( po, "Select()", SqlDbf.Select( sSql ), XB_NO_ERROR );
-
iRc += TestMethod( po, "Close()", SqlDbf.Close(), XB_NO_ERROR );
+ iRc += TestMethod( po, "Close()", SqlDbfZ.Close(), XB_NO_ERROR );
+
+
+// return 0;
+
+// std::cout << "---------------------------------------------------------\n";
+
+ xbStmt sqlQry1( &x );
+// sSql = "SELECT CITY, STATE, ZIPCODE FROM Address.DBF T LEFT JOIN LJ.DBF LJ WHERE CITY IS NOT NULL ORDER BY 2 GROUP BY STATE HAVING ZIPCODE .NOT. NULL";
+// sSql = "SELECT CITY, STATE, ZIPCODE FROM AddressR.DBF T WHERE CITY IS NOT NULL ORDER BY 2 GROUP BY STATE HAVING ZIPCODE .NOT. NULL";
+
+// sSql = "SELECT CITY, STATE, ZIPCODE FROM AddressR A LEFT JOIN ZipCode Z ON A.ZIPCODE = Z.ZIPCODE WHERE CITY IS NOT NULL ORDER BY 2 GROUP BY STATE HAVING ZIPCODE .NOT. NULL";
+// sSql = "SELECT M.ID, M.LEFTFK0, L0.CFLD FROM MAIN0 M LEFT JOIN LEFT0 L0 ON M.LEFTFK0 = L0.LEFTFK0 WHERE M.ID IS NOT NULL";
+ iRc += TestMethod( po, "Select()", sqlQry1.ExecuteQuery( sSql ), XB_NO_ERROR );
+
+ sqlQry1.DumpStmtInternals();
+
+ // sqlQry1.Test();
+
+
+ x.DisplayTableList();
+
if( po > 0 || iRc < 0 )
fprintf( stdout, "Total Errors = %d\n", iRc * -1 );
diff --git a/src/tests/xb_test_string.cpp b/src/tests/xb_test_string.cpp
index 9d730db..2f01e51 100755
--- a/src/tests/xb_test_string.cpp
+++ b/src/tests/xb_test_string.cpp
@@ -2,7 +2,7 @@
XBase63 Software Library
-Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -46,6 +46,7 @@ int main( int argCnt, char **av = NULL )
xbString sMsg;
#ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -55,7 +56,6 @@ int main( int argCnt, char **av = NULL )
#endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
InitTime();
@@ -260,6 +260,13 @@ int main( int argCnt, char **av = NULL )
rc += TestMethod( po, "Pos(\"000\") ", (xbInt32) s1.Pos( "000" ), 0 );
rc += TestMethod( po, "Pos(\"DEF\") ", (xbInt32) s1.Pos( "DEF" ), 1 );
+ s1 = "ABC.123.abc";
+ rc += TestMethod( po, "Pos( '.', 4 )", (xbInt32) s1.Pos( '.', 4 ), 4 );
+ rc += TestMethod( po, "Pos( '.', 5 )", (xbInt32) s1.Pos( '.', 5 ), 8 );
+ rc += TestMethod( po, "Pos( '.', 9 )", (xbInt32) s1.Pos( '.', 9 ), 0 );
+
+
+
s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
rc += TestMethod( po, "Remove(3,5) ", s1.Remove( 3, 5 ), "ABHIJKLMNOPQRSTUVWXYZ", 21 );
diff --git a/src/tests/xb_test_tblmgr.cpp b/src/tests/xb_test_tblmgr.cpp
index 451432c..d048594 100755
--- a/src/tests/xb_test_tblmgr.cpp
+++ b/src/tests/xb_test_tblmgr.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -13,7 +13,7 @@ Email Contact:
*/
-// This program tests the class xbXBase
+// This program tests the table manager functions.
// usage: xb_test_tblmgr QUITE|NORMAL|VERBOSE
@@ -25,33 +25,35 @@ using namespace xb;
int main( int argCnt, char **av )
{
- int rc = 0;
- int po = 1; /* print option */
+ int iRc = 0;
+ int iPo = 1; /* print option */
/* 0 - QUIET */
/* 1 - NORMAL */
/* 2 - VERBOSE */
if( argCnt > 1 ) {
if( av[1][0] == 'Q' )
- po = 0;
+ iPo = 0;
else if( av[1][0] == 'V' )
- po = 2;
+ iPo = 2;
}
xbXBase x;
-#ifdef XB_LOGGING_SUPPORT
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
- if( po ){
+ if( iPo ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
}
xbString sMsg;
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-#endif
+ #endif
+
InitTime();
- if( po == 2 ){
+ if( iPo == 2 ){
std::cout << "DisplayError Test ==> ";
x.DisplayError( 0 );
#ifdef WIN32
@@ -73,14 +75,14 @@ int main( int argCnt, char **av )
return -1;
#endif
- rc += TestMethod( po, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableC" ), 0 );
- rc += TestMethod( po, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableA" ), 0 );
- rc += TestMethod( po, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableB" ), 0 );
- rc += TestMethod( po, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableD" ), 0 );
+ iRc += TestMethod( iPo, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableC" ), 0 );
+ iRc += TestMethod( iPo, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableA" ), 0 );
+ iRc += TestMethod( iPo, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableB" ), 0 );
+ iRc += TestMethod( iPo, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableD" ), 0 );
// Next line should generate an exception
- rc += TestMethod( po, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableC" ), XB_DUP_TABLE_OR_ALIAS );
+ iRc += TestMethod( iPo, "AddTblToTblLst()", x.AddTblToTblList( d1, "TestTableC" ), XB_DUP_TABLE_OR_ALIAS );
std::cout << "**** Next list should have one each of TestTableA, B, C, D sorted in alpha order ****" << std::endl;
x.DisplayTableList();
@@ -90,7 +92,7 @@ int main( int argCnt, char **av )
std::cout << "[PASS] GetDbfPtr()" << std::endl;
else{
std::cout << "[FAIL] GetDbfPtr()" << std::endl;
- rc--;
+ iRc--;
}
@@ -98,70 +100,59 @@ std::cout << "cp0\n";
x.SetDataDirectory( "/ABCDEFG/" );
#ifdef WIN32
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG\\", 9 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG\\", 9 );
#else
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG/", 9 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG/", 9 );
#endif
std::cout << "cp1\n";
x.SetDataDirectory( "/ABCDEFG" );
#ifdef WIN32
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG", 8 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG", 8 );
#else
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG", 8 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG", 8 );
#endif
- std::cout << "cp2\n";
-
-
x.SetDataDirectory( "\\ABCDEFG\\");
#ifdef WIN32
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG\\", 9 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG\\", 9 );
#else
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG/", 9 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG/", 9 );
#endif
- std::cout << "cp3\n";
-
-
x.SetDataDirectory( "\\ABCDEFG" );
#ifdef WIN32
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG", 8 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "\\ABCDEFG", 8 );
#else
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG", 8 );
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "/ABCDEFG", 8 );
#endif
-
- std::cout << "cp4\n";
-
-
x.SetDataDirectory( "ABCDEFG" );
- rc += TestMethod( po, "Set/GetDataDirectory()", x.GetDataDirectory(), "ABCDEFG", 7 );
-
+ iRc += TestMethod( iPo, "Set/GetDataDirectory()", x.GetDataDirectory(), "ABCDEFG", 7 );
- rc += TestMethod( po, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableB" ), 0 );
- rc += TestMethod( po, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableB" ), XB_NOT_FOUND );
+ iRc += TestMethod( iPo, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableB" ), 0 );
+ iRc += TestMethod( iPo, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableB" ), XB_NOT_FOUND );
std::cout << "**** Next list should not have TestTableB in it ****" << std::endl;
x.DisplayTableList();
- rc += TestMethod( po, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableA" ), 0 );
- rc += TestMethod( po, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableC" ), 0 );
- rc += TestMethod( po, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableD" ), 0 );
+ iRc += TestMethod( iPo, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableA" ), 0 );
+ iRc += TestMethod( iPo, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableC" ), 0 );
+ iRc += TestMethod( iPo, "RemoveTblFromDbList()", x.RemoveTblFromTblList( "TestTableD" ), 0 );
delete d1;
- if( po > 0 || rc < 0 )
- fprintf( stdout, "Total Errors = %d\n", rc * -1 );
+ if( iPo > 0 || iRc < 0 )
+ fprintf( stdout, "Total Errors = %d\n", iRc * -1 );
#ifdef XB_LOGGING_SUPPORT
- sMsg.Sprintf( "Program [%s] terminating with [%d] errors...", av[0], rc * -1 );
+ sMsg.Sprintf( "Program [%s] terminating with [%d] errors...", av[0], iRc * -1 );
x.WriteLogMessage( sMsg );
#endif
- return rc;
+ return iRc;
}
diff --git a/src/tests/xb_test_uda.cpp b/src/tests/xb_test_uda.cpp
index dec41fa..18693b5 100755
--- a/src/tests/xb_test_uda.cpp
+++ b/src/tests/xb_test_uda.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -45,7 +45,8 @@ int main( int argCnt, char **av )
xbXBase x;
-#ifdef XB_LOGGING_SUPPORT
+ #ifdef XB_LOGGING_SUPPORT
+ x.SetLogDirectory( PROJECT_LOG_DIR );
x.EnableMsgLogging();
if( po ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
@@ -53,11 +54,9 @@ int main( int argCnt, char **av )
xbString sMsg;
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
-#endif
-
+ #endif
x.SetDataDirectory( PROJECT_DATA_DIR );
- x.EnableMsgLogging();
xbUda uda;
iRc += TestMethod( po, "GetTokencCnt()", uda.GetTokenCnt(), 0 );
diff --git a/src/tests/xb_test_xbase.cpp b/src/tests/xb_test_xbase.cpp
index 9d523c5..4751c25 100755
--- a/src/tests/xb_test_xbase.cpp
+++ b/src/tests/xb_test_xbase.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014, 2022 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2022,2023 Gary A Kunkel
The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
@@ -27,26 +27,34 @@ using namespace xb;
int main( int argCnt, char **av )
{
int iRc = 0;
- int po = 1; /* print option */
+ int iPo = 1; /* print option */
/* 0 - QUIET */
/* 1 - NORMAL */
/* 2 - VERBOSE */
if( argCnt > 1 ) {
if( av[1][0] == 'Q' )
- po = 0;
+ iPo = 0;
else if( av[1][0] == 'V' )
- po = 2;
+ iPo = 2;
}
xbXBase x;
xbString sMsg;
#ifdef XB_LOGGING_SUPPORT
+
+
+ xbString sLogDir = PROJECT_LOG_DIR;
+// x.SetLogDirectory( sLogDir );
+ x.SetLogDirectory( PROJECT_LOG_DIR );
+
+
x.EnableMsgLogging();
- if( po ){
+ if( iPo ){
std::cout << "Logfile is [" << x.GetLogFqFileName().Str() << "]" << std::endl;
}
+
sMsg.Sprintf( "Program [%s] initializing...", av[0] );
x.WriteLogMessage( sMsg );
#endif
@@ -54,8 +62,8 @@ int main( int argCnt, char **av )
x.SetDefaultDateFormat( "YY-MM-DD" );
- iRc += TestMethod( po, "SetDefaultDateFormat", x.GetDefaultDateFormat(), "YY-MM-DD", 8 );
- if( po == 2 ){
+ iRc += TestMethod( iPo, "SetDefaultDateFormat", x.GetDefaultDateFormat(), "YY-MM-DD", 8 );
+ if( iPo == 2 ){
if( x.GetEndianType() == 'L' )
std::cout << "Little Endian Architecture" << std::endl;
else if( x.GetEndianType() == 'B' )
@@ -64,38 +72,32 @@ int main( int argCnt, char **av )
std::cout << "Undefine Endian Architecture" << std::endl;
}
- iRc += TestMethod( po, "GetErrorMessage", x.GetErrorMessage( XB_DBF_FILE_NOT_OPEN ), "DBF File Not Open", 17 );
+ iRc += TestMethod( iPo, "GetErrorMessage", x.GetErrorMessage( XB_DBF_FILE_NOT_OPEN ), "DBF File Not Open", 17 );
#ifdef XB_LOGGING_SUPPORT
- xbString sLogDir = PROJECT_LOG_DIR;
- iRc += TestMethod( po, "GetDefaultLogDirectory()", x.GetDefaultLogDirectory(), sLogDir, sLogDir.Len());
-
+ iRc += TestMethod( iPo, "GetLogDirectory()", x.GetLogDirectory(), sLogDir, sLogDir.Len());
xbString sLogName = CMAKE_SYSTEM_NAME;
sLogName += "_";
sLogName += XB_PLATFORM;
sLogName += ".xbLog.txt";
- iRc += TestMethod( po, "GetDefaultLogFileName()", x.GetDefaultLogFileName(), sLogName, sLogName.Len());
-
- x.WriteLogMessage( "test" );
+ iRc += TestMethod( iPo, "GetLogFileName()", x.GetLogFileName(), sLogName, sLogName.Len());
+ x.WriteLogMessage( "Program xb_test_xbase - test logfile message" );
#endif
x.xbSleep( 250 );
-
-
- if( po == 2 ){
+ if( iPo == 2 ){
std::cout << "DisplayError Test ==> ";
x.DisplayError( 0 );
}
-
- if( po > 0 || iRc < 0 )
+ if( iPo > 0 || iRc < 0 )
fprintf( stdout, "Total Errors = %d\n", iRc * -1 );
-#ifdef XB_LOGGING_SUPPORT
+ #ifdef XB_LOGGING_SUPPORT
sMsg.Sprintf( "Program [%s] terminating with [%d] errors...", av[0], iRc * -1 );
x.WriteLogMessage( sMsg );
-#endif
+ #endif
return iRc;
}
diff --git a/src/utils/xb_cfg_check.cpp b/src/utils/xb_cfg_check.cpp
index 25ca46c..5489c51 100755
--- a/src/utils/xb_cfg_check.cpp
+++ b/src/utils/xb_cfg_check.cpp
@@ -1,3 +1,19 @@
+/* xb_cfg_check.cpp
+
+XBase64 Software Library
+
+Copyright (c) 1997,2003,2014,2019,2023 Gary A Kunkel
+
+The xb64 software library is covered under
+the terms of the GPL Version 3, 2007 license.
+
+Email Contact:
+
+ xb64-devel@lists.sourceforge.net
+ xb64-users@lists.sourceforge.net
+
+*/
+
#include <stdio.h>
#include <stdlib.h>
@@ -23,7 +39,7 @@ int main()
fprintf( stdout, "CMAKE C FLAGS = [%s]\n", CMAKE_C_FLAGS );
fprintf( stdout, "CMAKE C FLAGS DEBUG = [%s]\n", CMAKE_C_FLAGS_DEBUG );
fprintf( stdout, "CMAKE C FLAGS RELEASE = [%s]\n", CMAKE_C_FLAGS_RELEASE );
-
+
#ifdef XB_PLATFORM_32
fprintf( stdout, "XB_PLATFORM_32 = [TRUE]\n" );
@@ -124,13 +140,13 @@ int main()
fprintf( stdout, "XB_INDEX_SUPPORT = [OFF]\n" );
#endif
- #ifdef XB_INDEX_SUPPORT
+ #ifdef XB_NDX_SUPPORT
fprintf( stdout, "XB_NDX_SUPPORT = [ON]\n" );
#else
fprintf( stdout, "XB_NDX_SUPPORT = [OFF]\n" );
#endif
- #ifdef XB_INDEX_SUPPORT
+ #ifdef XB_MDX_SUPPORT
fprintf( stdout, "XB_MDX_SUPPORT = [ON]\n" );
#else
fprintf( stdout, "XB_MDX_SUPPORT = [OFF]\n" );
@@ -142,6 +158,24 @@ int main()
fprintf( stdout, "XB_SQL_SUPPORT = [OFF]\n" );
#endif
+ #ifdef XB_INF_SUPPORT
+ fprintf( stdout, "XB_INF_SUPPORT = [ON]\n" );
+ #else
+ fprintf( stdout, "XB_INF_SUPPORT = [OFF]\n" );
+ #endif
+
+ #ifdef XB_FILTER_SUPPORT
+ fprintf( stdout, "XB_FILTER_SUPPORT = [ON]\n" );
+ #else
+ fprintf( stdout, "XB_FILTER_SUPPORT = [OFF]\n" );
+ #endif
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ fprintf( stdout, "XB_BLOCKREAD_SUPPORT = [ON]\n" );
+ #else
+ fprintf( stdout, "XB_BLOCKREAD_SUPPORT = [OFF]\n" );
+ #endif
+
fprintf( stdout, "\nDirectories:\n" );
fprintf( stdout, "HOME_DIRECTORY = [%s]\n", CMAKE_HOME_DIRECTORY );
@@ -159,32 +193,32 @@ int main()
fprintf( stdout, "Field sizes:\n" );
fprintf( stdout, "SIZEOF_VOID_P = [%s]\n", CMAKE_SIZEOF_VOID_P );
- fprintf( stdout, "sizeof(char *) = [%ld]\n", sizeof( char *));
- fprintf( stdout, "sizeof(int) = [%ld]\n", sizeof( int ));
- fprintf( stdout, "sizeof(long) = [%ld]\n", sizeof( long ));
- fprintf( stdout, "sizeof(char) = [%ld]\n", sizeof( char ));
+ fprintf( stdout, "sizeof(char *) = [%zd]\n", sizeof( char *));
+ fprintf( stdout, "sizeof(int) = [%zd]\n", sizeof( int ));
+ fprintf( stdout, "sizeof(long) = [%zd]\n", sizeof( long ));
+ fprintf( stdout, "sizeof(char) = [%zd]\n", sizeof( char ));
#ifdef HAVE_WCHAR_H
- fprintf( stdout, "sizeof(wchar_t) = [%ld]\n", sizeof( wchar_t ));
+ fprintf( stdout, "sizeof(wchar_t) = [%zd]\n", sizeof( wchar_t ));
#endif
#ifdef HAVE_WINDOWS_H
- fprintf( stdout, "sizeof(DWORD) = [%ld]\n", sizeof( DWORD ));
- #endif
-
- fprintf( stdout, "sizeof(double) = [%ld]\n", sizeof( double ));
- fprintf( stdout, "sizeof(float) = [%ld]\n", sizeof( float ));
- fprintf( stdout, "sizeof(size_t) = [%ld]\n", sizeof( size_t ));
- fprintf( stdout, "sizeof(off_t) = [%ld]\n\n", sizeof( off_t ));
-
- fprintf( stdout, "sizeof(xbBool) = [%ld]\n", sizeof( xbBool ));
- fprintf( stdout, "sizeof(xbInt16) = [%ld]\n", sizeof( xbInt16 ));
- fprintf( stdout, "sizeof(xbUInt16) = [%ld]\n", sizeof( xbUInt16 ));
- fprintf( stdout, "sizeof(xbInt32) = [%ld]\n", sizeof( xbInt32 ));
- fprintf( stdout, "sizeof(xbUInt32) = [%ld]\n", sizeof( xbUInt32 ));
- fprintf( stdout, "sizeof(xbInt64) = [%ld]\n", sizeof( xbInt64 ));
- fprintf( stdout, "sizeof(xbUInt64) = [%ld]\n", sizeof( xbUInt64 ));
- fprintf( stdout, "sizeof(xbFloat) = [%lu]\n", sizeof( xbFloat ));
- fprintf( stdout, "sizeof(xbDouble) = [%lu]\n", sizeof( xbDouble ));
+ fprintf( stdout, "sizeof(DWORD) = [%zd]\n", sizeof( DWORD ));
+ #endif
+
+ fprintf( stdout, "sizeof(double) = [%zd]\n", sizeof( double ));
+ fprintf( stdout, "sizeof(float) = [%zd]\n", sizeof( float ));
+ fprintf( stdout, "sizeof(size_t) = [%zd]\n", sizeof( size_t ));
+ fprintf( stdout, "sizeof(off_t) = [%zd]\n\n", sizeof( off_t ));
+
+ fprintf( stdout, "sizeof(xbBool) = [%zd]\n", sizeof( xbBool ));
+ fprintf( stdout, "sizeof(xbInt16) = [%zd]\n", sizeof( xbInt16 ));
+ fprintf( stdout, "sizeof(xbUInt16) = [%zd]\n", sizeof( xbUInt16 ));
+ fprintf( stdout, "sizeof(xbInt32) = [%zd]\n", sizeof( xbInt32 ));
+ fprintf( stdout, "sizeof(xbUInt32) = [%zd]\n", sizeof( xbUInt32 ));
+ fprintf( stdout, "sizeof(xbInt64) = [%zd]\n", sizeof( xbInt64 ));
+ fprintf( stdout, "sizeof(xbUInt64) = [%zd]\n", sizeof( xbUInt64 ));
+ fprintf( stdout, "sizeof(xbFloat) = [%zu]\n", sizeof( xbFloat ));
+ fprintf( stdout, "sizeof(xbDouble) = [%zu]\n", sizeof( xbDouble ));
fprintf( stdout, "\nHeader files:\n" );
diff --git a/src/utils/xb_copydbf.cpp b/src/utils/xb_copydbf.cpp
index 1f88eb9..2466b1b 100755
--- a/src/utils/xb_copydbf.cpp
+++ b/src/utils/xb_copydbf.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2019 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2019,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -17,42 +17,80 @@ Email Contact:
#include <xbase.h>
using namespace xb;
-int main(int ac,char** av)
+
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_copydbf [-h] [-?] [--help] [-v] [--version] -s source.DBF -t target.DBF" << std::endl << std::endl;
+ std::cout << "This program copies the structure of a table defined in source.DBF to target.DBF. Data and indices are not included.";
+ std::cout << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+
+
+int main(int argc, char *argv[])
{
- if (3 != ac) {
- std::cout <<
- "\nUsage: xb_copydbf filename1 filename2\n"
- "This program copies the structure of one dbf file to another\n";
+
+ xbXBase x;
+ xbInt16 iRc;
+ xbDbf *dSrc = NULL;
+ xbDbf *dTrg = NULL;
+
+ xbString sParm;
+ xbString sSrcDbf;
+ xbString sTrgDbf;
+
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
return 1;
}
- char* sFileName = av[1];
- char* tFileName = av[2];
+ if( !x.GetCmdLineOpt( argc, argv, "-s", sSrcDbf ) || sSrcDbf == "" ){
+ PrintHelp();
+ return 1;
+ }
- xbXBase x;
- xbInt16 iRc;
- xbDbf *MyFile = NULL;
- xbDbf *MyNewFile = NULL;
+ if( !x.GetCmdLineOpt( argc, argv, "-t", sTrgDbf ) || sTrgDbf == "" ){
+ PrintHelp();
+ return 1;
+ }
#ifdef XB_LOGGING_SUPPORT
x.EnableMsgLogging();
xbString sMsg;
- sMsg.Sprintf( "Program [%s] initializing...", av[0] );
+ sMsg.Sprintf( "Program [%s] initializing...", argv[0] );
x.WriteLogMessage( sMsg );
#endif
- if(( iRc = x.OpenHighestVersion( sFileName, "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << sFileName << std::endl;
+ if(( iRc = x.OpenHighestVersion( sSrcDbf, "", &dSrc )) != XB_NO_ERROR ){
+ std::cout << "Could not open file iRc = " << iRc << " file = " << sSrcDbf.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
- if(( iRc = MyFile->CopyDbfStructure( MyNewFile, tFileName, tFileName, XB_DONTOVERLAY, XB_SINGLE_USER )) != XB_NO_ERROR ){
- std::cout << "Could not copy file " << tFileName << " Error = " << iRc << "\n";
- return 3;
+ #ifdef XB_DBF4_SUPPORT
+ dTrg = new xbDbf4( &x );
+ #else
+ dTrg = new xbDbf3( &x );
+ #endif
+
+ if(( iRc = dSrc->CopyDbfStructure( dTrg, sTrgDbf, sTrgDbf, XB_DONTOVERLAY, XB_SINGLE_USER )) != XB_NO_ERROR ){
+ std::cout << "Could not copy file " << sTrgDbf.Str() << " Error = " << iRc << "\n";
+ x.DisplayError( iRc );
+ return 1;
}
- MyFile->Close();
+ x.CloseAllTables();
return 0;
}
diff --git a/src/utils/xb_dbfutil.cpp b/src/utils/xb_dbfutil.cpp
index 9c04fe3..e50495e 100755
--- a/src/utils/xb_dbfutil.cpp
+++ b/src/utils/xb_dbfutil.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2021 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2021,2022,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -29,11 +29,13 @@ using namespace xb;
///@cond DOXYOFF
class xbUtil{
public:
- xbUtil();
+ xbUtil( xbXBase *x );
~xbUtil();
xbDbf *GetTablePtr( const char * cTitle );
void DisplayActiveTable() const;
+ void Help();
+
// menus
xbInt16 GetOption();
xbInt32 GetLong();
@@ -215,8 +217,8 @@ class xbUtil{
private:
- xbXBase x;
- xbDbf * dActiveTable;
+ xbXBase *x;
+ xbDbf *dActiveTable;
#ifdef XB_EXPRESSION_SUPPORT
xbExp *exp;
@@ -233,18 +235,19 @@ class xbUtil{
};
/*************************************************************************************/
-xbUtil::xbUtil()
+xbUtil::xbUtil( xbXBase *x )
{
+ this->x = x;
dActiveTable = NULL;
- x.EnableMsgLogging();
- x.SetLogSize( 10000000L );
+ x->EnableMsgLogging();
+ x->SetLogSize( 10000000L );
#ifdef XB_EXPRESSION_SUPPORT
exp = NULL;
#endif
#ifdef XB_SQL_SUPPORT
- sql = new xbSql( &x );
+ sql = new xbSql( x );
#endif // XB_SQL_SUPPORT
#ifdef XB_FILTER_SUPPORT
@@ -256,7 +259,7 @@ xbUtil::xbUtil()
/*************************************************************************************/
xbUtil::~xbUtil(){
- x.CloseAllTables();
+ x->CloseAllTables();
if( dActiveTable )
delete dActiveTable;
@@ -272,6 +275,17 @@ xbUtil::~xbUtil(){
#endif // XB_FILTER_SUPPORT
}
+
+/*************************************************************************************/
+void xbUtil::Help(){
+ std::cout << "Program xb_dbfutil provides a menu driven application for accessing" << std::endl;
+ std::cout << "the xbase64 library functions." << std::endl << std::endl;
+ std::cout << "Menu choices can be selected directly with out accessing the given menus" << std::endl;
+ std::cout << "by entering a '=' followed by the menu choices. For example, entering '=3.4'" << std::endl;
+ std::cout << "would be the same as going to menu #3 and entering a 4, which is the sequence" << std::endl;
+ std::cout << "for opening a file." << std::endl;
+}
+
/*************************************************************************************/
#ifdef XB_NDXINF_SUPPORT
@@ -294,7 +308,7 @@ void xbUtil::AddInfFileData()
std::cout << "Enter NDX index file name (FILENAME.NDX)" << std::endl;
std::cin.getline( cBuf, 128 );
xbInt16 iRc = dActiveTable->AssociateIndex( "NDX", cBuf, 0 );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::DeleteInfFileData()
@@ -303,7 +317,7 @@ void xbUtil::DeleteInfFileData()
std::cout << "Enter NDX index file name (FILENAME.NDX)" << std::endl;
std::cin.getline( cBuf, 128 );
xbInt16 iRc = dActiveTable->AssociateIndex( "NDX", cBuf, 1 );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::InfFileHelp()
@@ -329,7 +343,7 @@ void xbUtil::LockIndices(){
return;
}
xbInt16 iRc = dActiveTable->LockIndices( XB_LOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::UnlockIndices(){
@@ -343,7 +357,7 @@ void xbUtil::UnlockIndices(){
return;
}
xbInt16 iRc = dActiveTable->LockIndices( XB_UNLOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
#endif // XB_LOCKING_SUPPORT
@@ -381,11 +395,11 @@ void xbUtil::ParseExpression( xbInt16 iOption ){
exp = NULL;
}
- exp = new xbExp( &x, dActiveTable );
+ exp = new xbExp( x, dActiveTable );
iRc = exp->ParseExpression( sExpression );
if( iOption == 0 )
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
@@ -404,7 +418,7 @@ void xbUtil::ProcessParsedExpression( xbInt16 iOption ){
xbInt16 iRc = exp->ProcessExpression();
if( iRc != XB_NO_ERROR ){
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
return;
}
@@ -496,7 +510,7 @@ void xbUtil::IsLeapYear(){
#ifdef XB_SQL_SUPPORT
void xbUtil::ExecSqlNonQuery(){
- xbSql sql( &x );
+ xbSql sql( x );
std::cout << "ExecSqlNonQuery\n";
char sSql[2048];
@@ -504,7 +518,7 @@ void xbUtil::ExecSqlNonQuery(){
std::cin.getline( sSql, 2048 );
xbInt16 iRc = sql.ExecuteNonQuery( sSql );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::ExecSqlQuery(){
@@ -681,7 +695,7 @@ void xbUtil::LockDbf(){
xbInt16 iRc;
std::cout << std::endl << "Lock Table" << std::endl;
iRc = dActiveTable->LockTable( XB_LOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::LockAppend(){
@@ -696,7 +710,7 @@ void xbUtil::LockAppend(){
xbInt16 iRc;
std::cout << std::endl << "Lock Append" << std::endl;
iRc = dActiveTable->LockAppend( XB_LOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::UnlockAppend(){
@@ -711,7 +725,7 @@ void xbUtil::UnlockAppend(){
xbInt16 iRc;
std::cout << std::endl << "Unlock Append" << std::endl;
iRc = dActiveTable->LockAppend( XB_UNLOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
#ifdef XB_MEMO_SUPPORT
void xbUtil::LockMemo(){
@@ -726,7 +740,7 @@ void xbUtil::LockMemo(){
xbInt16 iRc;
std::cout << std::endl << "Lock Memo" << std::endl;
iRc = dActiveTable->LockMemo( XB_LOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::UnlockMemo(){
@@ -741,7 +755,7 @@ void xbUtil::UnlockMemo(){
xbInt16 iRc;
std::cout << std::endl << "Unlock Memo" << std::endl;
iRc = dActiveTable->LockMemo( XB_UNLOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
#endif
@@ -760,8 +774,10 @@ void xbUtil::LockRecord(){
char cBuf[15];
std::cin.getline( cBuf, 15 );
- iRc = dActiveTable->LockRecord( XB_LOCK, atol( cBuf ));
- x.DisplayError( iRc );
+ //iRc = dActiveTable->LockRecord( XB_LOCK, atol( cBuf ));
+ iRc = dActiveTable->LockRecord( XB_LOCK, strtoul( cBuf, NULL, 0 ));
+
+ x->DisplayError( iRc );
}
void xbUtil::UnlockRecord(){
@@ -779,8 +795,9 @@ void xbUtil::UnlockRecord(){
char cBuf[15];
std::cin.getline( cBuf, 15 );
- iRc = dActiveTable->LockRecord( XB_UNLOCK, atol( cBuf ));
- x.DisplayError( iRc );
+ //iRc = dActiveTable->LockRecord( XB_UNLOCK, atol( cBuf ));
+ iRc = dActiveTable->LockRecord( XB_UNLOCK, strtoul( cBuf, NULL, 0 ));
+ x->DisplayError( iRc );
}
void xbUtil::UnlockDbf(){
@@ -796,7 +813,7 @@ void xbUtil::UnlockDbf(){
xbInt16 iRc;
std::cout << std::endl << "Unlock Table" << std::endl;
iRc = dActiveTable->LockTable( XB_UNLOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::UnlockHeader(){
@@ -812,7 +829,7 @@ void xbUtil::UnlockHeader(){
xbInt16 iRc;
std::cout << std::endl << "Unlock Table Header" << std::endl;
iRc = dActiveTable->LockHeader( XB_UNLOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::LockHeader(){
@@ -826,7 +843,7 @@ void xbUtil::LockHeader(){
xbInt16 iRc;
std::cout << std::endl << "Lock Table Header" << std::endl;
iRc = dActiveTable->LockHeader( XB_LOCK );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
#ifdef XB_DEBUG_SUPPORT
@@ -860,7 +877,7 @@ void xbUtil::xbFileLock(){
s1 = cBufLen;
s1.CvtLongLong( llLen );
xbInt16 iRc = dActiveTable->xbLock( XB_LOCK, llSpos, (size_t) llLen );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::xbFileUnlock(){
@@ -884,7 +901,7 @@ void xbUtil::xbFileUnlock(){
}
xbInt16 iRc;
iRc = dActiveTable->xbLock( XB_UNLOCK, atol( cBufOffset ), (size_t) atol( cBufLen ));
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
#endif
@@ -968,7 +985,7 @@ void xbUtil::UpdateFieldData(){
std::cin.getline( cFldData, 256 );
if(( rc = dActiveTable->PutField( cFldName, cFldData )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
std::cout << "Success" << std::endl;
@@ -999,9 +1016,10 @@ void xbUtil::ShowMemoFieldData(){
std::cout << "Record number not entered" << std::endl;
return;
}
- ulRecNo = atol( cBuf );
+ //ulRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
if(( rc = dActiveTable->GetRecord( ulRecNo )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
}
@@ -1009,12 +1027,12 @@ void xbUtil::ShowMemoFieldData(){
std::cin.getline( cFldName, 40 );
if(( rc = dActiveTable->GetMemoField( cFldName, sMemoData )) != XB_NO_ERROR ){
std::cout << "rc = " << rc << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
if(( rc = dActiveTable->GetMemoFieldLen( cFldName, ulFldLen )) != XB_NO_ERROR ){
std::cout << "rc = " << rc << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
std::cout << sMemoData.Str() << std::endl;
@@ -1047,9 +1065,10 @@ void xbUtil::UpdateMemoFieldData(){
std::cout << "Record number not entered" << std::endl;
return;
}
- ulRecNo = atol( cBuf );
+ //ulRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
if(( rc = dActiveTable->GetRecord( ulRecNo )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
}
@@ -1059,13 +1078,13 @@ void xbUtil::UpdateMemoFieldData(){
std::cin.getline( cMemoData, 2048 );
if(( rc = dActiveTable->UpdateMemoField( cFldName, cMemoData )) != XB_NO_ERROR ){
std::cout << "rc = " << rc << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
if(( rc = dActiveTable->PutRecord( dActiveTable->GetCurRecNo())) != XB_NO_ERROR ){
std::cout << "rc = " << rc << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
}
@@ -1098,9 +1117,10 @@ void xbUtil::DeleteMemoField(){
std::cout << "Record number not entered" << std::endl;
return;
}
- ulRecNo = atol( cBuf );
+ //ulRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
if(( rc = dActiveTable->GetRecord( ulRecNo )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
}
@@ -1108,12 +1128,12 @@ void xbUtil::DeleteMemoField(){
std::cin.getline( cFldName, 40 );
if(( rc = dActiveTable->UpdateMemoField( cFldName, "" )) != XB_NO_ERROR ){
std::cout << "rc = " << rc << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
if(( rc = dActiveTable->PutRecord( dActiveTable->GetCurRecNo())) != XB_NO_ERROR ){
std::cout << "rc = " << rc << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
}
@@ -1123,13 +1143,13 @@ void xbUtil::SelectActiveTable(){
char cBuf[15];
xbInt16 iLineNo;
- if( x.GetOpenTableCount() == 0 ){
+ if( x->GetOpenTableCount() == 0 ){
std::cout << "No open tables" << std::endl;
std::cout << "Use menu option =3.4 to open a table" << std::endl;
return;
}
- x.DisplayTableList();
+ x->DisplayTableList();
std::cout << std::endl << "Enter line number:" << std::endl;
std::cin.getline( cBuf, 15 );
if( strlen( cBuf ) == 0 ){
@@ -1137,7 +1157,7 @@ void xbUtil::SelectActiveTable(){
return;
}
iLineNo = atoi( cBuf );
- dActiveTable = x.GetDbfPtr( iLineNo );
+ dActiveTable = x->GetDbfPtr( iLineNo );
}
/*************************************************************************************/
@@ -1157,7 +1177,7 @@ void xbUtil::CommitRecord(){
if(( rc = dActiveTable->Commit()) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
/*************************************************************************************/
void xbUtil::AbortRecord(){
@@ -1176,14 +1196,14 @@ void xbUtil::AbortRecord(){
if(( rc = dActiveTable->Abort()) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
/*************************************************************************************/
void xbUtil::DumpRecord(){
char cBuf[15];
xbInt16 rc;
- xbUInt32 lRecNo;
+ xbUInt32 ulRecNo;
if( !dActiveTable )
dActiveTable = GetTablePtr( " - select table" );
if( !dActiveTable ){
@@ -1199,9 +1219,10 @@ void xbUtil::DumpRecord(){
std::cout << "Record number not entered" << std::endl;
return;
}
- lRecNo = atol( cBuf );
- if(( rc = dActiveTable->GetRecord( lRecNo )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ //lRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
+ if(( rc = dActiveTable->GetRecord( ulRecNo )) != XB_NO_ERROR ){
+ x->DisplayError( rc );
return;
}
}
@@ -1209,7 +1230,7 @@ void xbUtil::DumpRecord(){
if(( rc = dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2 )) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
/*************************************************************************************/
void xbUtil::GetFirstRecord(){
@@ -1227,7 +1248,7 @@ void xbUtil::GetFirstRecord(){
if(( iRc = dActiveTable->GetFirstRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::GetNextRecord(){
@@ -1242,7 +1263,7 @@ void xbUtil::GetNextRecord(){
if(( iRc = dActiveTable->GetNextRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::GetPrevRecord(){
@@ -1257,7 +1278,7 @@ void xbUtil::GetPrevRecord(){
if(( iRc = dActiveTable->GetPrevRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::GetLastRecord(){
@@ -1274,15 +1295,15 @@ void xbUtil::GetLastRecord(){
if(( iRc = dActiveTable->GetLastRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(),2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::UndeleteRecord(){
- char cBuf[15];
- xbInt16 rc;
- xbUInt32 lRecNo;
+ char cBuf[15];
+ xbInt16 rc;
+ xbUInt32 ulRecNo;
if( !dActiveTable )
dActiveTable = GetTablePtr( " - select table" );
@@ -1292,7 +1313,6 @@ void xbUtil::UndeleteRecord(){
return;
}
DisplayActiveTable();
-
if( dActiveTable->GetCurRecNo() == 0 ){
std::cout << "Enter Record number" << std::endl;
std::cin.getline( cBuf, 15 );
@@ -1300,29 +1320,30 @@ void xbUtil::UndeleteRecord(){
std::cout << "Record number not entered" << std::endl;
return;
}
- lRecNo = atol( cBuf );
- if(( rc = dActiveTable->GetRecord( lRecNo )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ //lRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
+ if(( rc = dActiveTable->GetRecord( ulRecNo )) != XB_NO_ERROR ){
+ x->DisplayError( rc );
return;
}
}
-
if(( dActiveTable->RecordDeleted()) == xbFalse )
std::cout << "Record is not flagged for deletion" << std::endl;
else{
if(( rc = dActiveTable->UndeleteRecord()) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
}
/*************************************************************************************/
void xbUtil::DeleteRecord(){
- char cBuf[15];
- xbInt16 rc;
- xbUInt32 lRecNo;
+ char cBuf[15];
+ xbInt16 rc;
+ xbUInt32 ulRecNo;
+
if( !dActiveTable )
dActiveTable = GetTablePtr( " - select table" );
if( !dActiveTable ){
@@ -1337,9 +1358,11 @@ void xbUtil::DeleteRecord(){
std::cout << "Record number not entered" << std::endl;
return;
}
- lRecNo = atol( cBuf );
- if(( rc = dActiveTable->GetRecord( lRecNo )) != XB_NO_ERROR ){
- x.DisplayError( rc );
+ //ulRecNo = atol( cBuf );
+
+ ulRecNo = strtoul( cBuf, NULL, 0 );
+ if(( rc = dActiveTable->GetRecord( ulRecNo )) != XB_NO_ERROR ){
+ x->DisplayError( rc );
return;
}
}
@@ -1350,16 +1373,16 @@ void xbUtil::DeleteRecord(){
if(( rc = dActiveTable->DeleteRecord()) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
}
/*************************************************************************************/
void xbUtil::PutRecord(){
- char cBuf[15];
- xbInt16 rc;
- xbUInt32 lRecNo;
+ char cBuf[15];
+ xbInt16 rc;
+ xbUInt32 ulRecNo;
if( !dActiveTable )
dActiveTable = GetTablePtr( " - select table" );
@@ -1376,11 +1399,12 @@ void xbUtil::PutRecord(){
std::cout << "Record number not entered" << std::endl;
return;
}
- lRecNo = atol( cBuf );
- if(( rc = dActiveTable->PutRecord( lRecNo )) == XB_NO_ERROR )
+ //lRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
+ if(( rc = dActiveTable->PutRecord( ulRecNo )) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
/*************************************************************************************/
@@ -1396,7 +1420,7 @@ void xbUtil::AppendRecord(){
if(( rc = dActiveTable->AppendRecord()) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
/*************************************************************************************/
@@ -1412,7 +1436,7 @@ void xbUtil::BlankRecord(){
if(( rc = dActiveTable->BlankRecord()) == XB_NO_ERROR )
std::cout << "Success" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
}
/*************************************************************************************/
@@ -1449,16 +1473,14 @@ void xbUtil::RenameTable(){
dActiveTable = NULL;
std::cout << "Table closed. Reopen if needed.\n";
}
-
-
}
/*************************************************************************************/
void xbUtil::GetRecord(){
- char cBuf[15];
- xbInt16 iRc;
- xbUInt32 lRecNo;
+ char cBuf[15];
+ xbInt16 iRc;
+ xbUInt32 ulRecNo;
if( !dActiveTable )
dActiveTable = GetTablePtr( " - select table" );
@@ -1476,11 +1498,12 @@ void xbUtil::GetRecord(){
std::cout << "Record number not entered" << std::endl;
return;
}
- lRecNo = atol( cBuf );
- if(( iRc = dActiveTable->GetRecord( lRecNo )) == XB_NO_ERROR )
+ //lRecNo = atol( cBuf );
+ ulRecNo = strtoul( cBuf, NULL, 0 );
+ if(( iRc = dActiveTable->GetRecord( ulRecNo )) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::DisplayActiveTable() const{
@@ -1513,7 +1536,7 @@ void xbUtil::DisplayActiveTable() const{
xbDbf * xbUtil::GetTablePtr( const char * cTitle ){
xbDbf *d;
- xbInt16 iOpenTableCnt = x.GetOpenTableCount();
+ xbInt16 iOpenTableCnt = x->GetOpenTableCount();
char cBuf[15];
xbInt16 iLineNo;
@@ -1521,10 +1544,10 @@ xbDbf * xbUtil::GetTablePtr( const char * cTitle ){
std::cout << "No open tables" << std::endl;
return NULL;
} else if( iOpenTableCnt == 1 ){
- d = x.GetDbfPtr( 1 );
+ d = x->GetDbfPtr( 1 );
} else {
std::cout << "Select file/table " << cTitle << std::endl;
- x.DisplayTableList();
+ x->DisplayTableList();
std::cout << std::endl << "Enter line number:" << std::endl;
memset( cBuf, 0x00, 15 );
std::cin.getline( cBuf, 15 );
@@ -1537,7 +1560,7 @@ xbDbf * xbUtil::GetTablePtr( const char * cTitle ){
std::cout << "Invalid selection. Valid line numbers are 1 through " << iOpenTableCnt << std::endl;
return NULL;
}
- d = x.GetDbfPtr( iLineNo );
+ d = x->GetDbfPtr( iLineNo );
}
return d;
}
@@ -1551,7 +1574,7 @@ void xbUtil::UpdateTableAutoCommit(){
std::cout << " If unsure, leave the option turned on at the DBMS level (default)" << std::endl;
std::cout << " and don't over ride the setting at the table level" << std::endl << std::endl;
std::cout << " -1 ==> Use DBMS setting which is currently [";
- if( x.GetDefaultAutoCommit() )
+ if( x->GetDefaultAutoCommit() )
std::cout << "ON]" << std::endl;
else
std::cout << "OFF]" << std::endl;
@@ -1584,7 +1607,7 @@ void xbUtil::CopyDbfStructure(){
xbDbf *d;
xbInt16 rc;
char filename[128];
- xbFile f( &x );
+ xbFile f( x );
xbDbf *dNewTable;
d = GetTablePtr( "" );
@@ -1592,14 +1615,14 @@ void xbUtil::CopyDbfStructure(){
if( d->GetVersion() == 3 ){
#ifdef XB_DBF3_SUPPORT
- dNewTable = new xbDbf3( &x );
+ dNewTable = new xbDbf3( x );
#else
std::cout << "Dbase III file support not build into library. See XB_DBF3_SUPPORT" << std::endl;
return;
#endif
} else if( d->GetVersion() == 4 ){
#ifdef XB_DBF4_SUPPORT
- dNewTable = new xbDbf4( &x );
+ dNewTable = new xbDbf4( x );
#else
std::cout << "Dbase IV file support not build into library. See XB_DBF4_SUPPORT" << std::endl;
return;
@@ -1622,13 +1645,13 @@ void xbUtil::CopyDbfStructure(){
}
if(( rc = d->CopyDbfStructure( dNewTable, filename, filename, 0, XB_MULTI_USER )) != XB_NO_ERROR ){
std::cout << "Error " << rc << " creating new file" << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
std::cout << "Table " << f.GetFqFileName().Str() << " created" << std::endl;
if(( rc = dNewTable->Close()) != XB_NO_ERROR ){
std::cout << "Error " << rc << " closing new file" << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
}
@@ -1649,7 +1672,7 @@ void xbUtil::ZapTable(){
if( iRc == XB_NO_ERROR )
std::cout << "Table Zapped (all rows deleted)" << std::endl;
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::Pack(){
@@ -1666,7 +1689,7 @@ void xbUtil::Pack(){
if( iRc == XB_NO_ERROR )
std::cout << "Table Packed" << std::endl;
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
/*************************************************************************************/
void xbUtil::DisplayTableStats(){
@@ -1699,7 +1722,7 @@ void xbUtil::DisplayTableStats(){
// DBMS settings
if( d->GetAutoCommit( 0 ) == -1 ){
std::cout << "Table Auto Commit = [Use DBMS Setting]" << std::endl;
- if( x.GetDefaultAutoCommit() )
+ if( x->GetDefaultAutoCommit() )
std::cout << "DBMS Auto Commit = [ON]" << std::endl;
else
std::cout << "DBMS Auto Commit = [OFF]" << std::endl;
@@ -1714,24 +1737,24 @@ void xbUtil::DisplayTableStats(){
/*************************************************************************************/
void xbUtil::CloseAllTables(){
- xbInt16 sOpenTableCnt = x.GetOpenTableCount();
+ xbInt16 sOpenTableCnt = x->GetOpenTableCount();
xbInt16 rc;
if( sOpenTableCnt == 0 ){
std::cout << "No open tables" << std::endl;
return;
}
- rc = x.CloseAllTables();
+ rc = x->CloseAllTables();
if( rc == XB_NO_ERROR )
std::cout << "All open tables closed" << std::endl;
else
- x.DisplayError( rc );
+ x->DisplayError( rc );
dActiveTable = NULL;
}
/*************************************************************************************/
void xbUtil::Close(){
xbDbf *d;
-// xbInt16 sOpenTableCnt = x.GetOpenTableCount();
+// xbInt16 sOpenTableCnt = x->GetOpenTableCount();
d = GetTablePtr( "to close" );
if( d ){
@@ -1746,7 +1769,7 @@ void xbUtil::Close(){
/*************************************************************************************/
void xbUtil::Open(){
xbInt16 rc;
- xbFile f( &x );
+ xbFile f( x );
xbDbf *dTable;
char filename[128];
unsigned char cFileTypeByte;
@@ -1766,18 +1789,18 @@ void xbUtil::Open(){
}
if(( rc = f.GetXbaseFileTypeByte( f.GetFqFileName(), cFileTypeByte )) != XB_NO_ERROR ){
std::cout << "Could not open file or determine file type rc = " << rc << " file = " << filename << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
std:: cout << "File Type Byte ";
- x.BitDump( cFileTypeByte );
+ x->BitDump( cFileTypeByte );
std::cout << "\n";
std::cout << "Table Type = [" << f.DetermineXbaseTableVersion( cFileTypeByte ) << "]\n";
std::cout << "Memo Type = [" << f.DetermineXbaseMemoVersion( cFileTypeByte ) << "]\n";
if( f.DetermineXbaseTableVersion( cFileTypeByte ) == 4 ){
#ifdef XB_DBF4_SUPPORT
- dTable = new xbDbf4( &x );
+ dTable = new xbDbf4( x );
#else
std::cout << "Dbase IV file support not build into library. See XB_DBF4_SUPPORT" << std::endl;
return;
@@ -1785,21 +1808,21 @@ void xbUtil::Open(){
} else if( f.DetermineXbaseTableVersion( cFileTypeByte ) == 3 ){
#ifdef XB_DBF3_SUPPORT
- dTable = new xbDbf3( &x );
+ dTable = new xbDbf3( x );
#else
std::cout << "Dbase III file support not build into library. See XB_DBF3_SUPPORT" << std::endl;
return;
#endif
} else {
std::cout << "Unsupported file type file = " << filename << " type = ";
- x.BitDump( cFileTypeByte );
+ x->BitDump( cFileTypeByte );
std::cout << std::endl;
return;
}
if(( rc = dTable->Open( filename )) != 0 ){
std::cout << "Could not open file rc = " << rc << " file = " << filename << std::endl;
- x.DisplayError( rc );
+ x->DisplayError( rc );
return;
}
@@ -1821,9 +1844,9 @@ void xbUtil::UpdateDefaultLockRetries(){
std::cout << "Default Lock Retry Count not updated" << std::endl;
return;
} else {
- x.SetDefaultLockRetries( atoi( cBuf ));
+ x->SetDefaultLockRetries( atoi( cBuf ));
std::cout << "Default Lock Retry Count updated to ["
- << x.GetDefaultLockRetries() << "]" << std::endl;
+ << x->GetDefaultLockRetries() << "]" << std::endl;
}
}
@@ -1835,9 +1858,9 @@ void xbUtil::UpdateDefaultLockWait(){
std::cout << "Default Lock Wait Time not updated" << std::endl;
return;
} else {
- x.SetDefaultLockWait( atoi( cBuf ));
+ x->SetDefaultLockWait( atoi( cBuf ));
std::cout << "Default Lock Wait Time updated to ["
- << x.GetDefaultLockWait() << "]" << std::endl;
+ << x->GetDefaultLockWait() << "]" << std::endl;
}
}
@@ -1854,38 +1877,38 @@ void xbUtil::UpdateDefaultLockFlavor(){
std::cout << "Default Lock Flavor not updated" << std::endl;
return;
} else {
- x.SetDefaultLockFlavor( atoi( cBuf ));
+ x->SetDefaultLockFlavor( atoi( cBuf ));
std::cout << "Default Lock Flavor updated to ["
- << x.GetDefaultLockFlavor() << "]" << std::endl;
+ << x->GetDefaultLockFlavor() << "]" << std::endl;
}
}
void xbUtil::ToggleDefaultAutoLock(){
- if( x.GetDefaultAutoLock()){
- x.DisableDefaultAutoLock();
- x.WriteLogMessage( "xb_dbfutil - Default Auto Lock disabled" );
+ if( x->GetDefaultAutoLock()){
+ x->DisableDefaultAutoLock();
+ x->WriteLogMessage( "xb_dbfutil - Default Auto Lock disabled" );
std::cout << "Default Auto Lock disabled" << std::endl;
} else {
- x.EnableDefaultAutoLock();
- x.WriteLogMessage( "xb_dbfutil - Default Auto Lock enabled" );
+ x->EnableDefaultAutoLock();
+ x->WriteLogMessage( "xb_dbfutil - Default Auto Lock enabled" );
std::cout << "Default Auto Lock enabled" << std::endl;
}
}
void xbUtil::ToggleMultiUserMode(){
- if( x.GetMultiUser()){
- x.SetMultiUser( xbFalse );
- x.WriteLogMessage( "xb_dbfutil - Multi user mode disabled" );
+ if( x->GetMultiUser()){
+ x->SetMultiUser( xbFalse );
+ x->WriteLogMessage( "xb_dbfutil - Multi user mode disabled" );
std::cout << "Multi user mode disabled" << std::endl;
} else {
- x.SetMultiUser( xbTrue );
- x.WriteLogMessage( "xb_dbfutil - Multu user mode enabled" );
+ x->SetMultiUser( xbTrue );
+ x->WriteLogMessage( "xb_dbfutil - Multu user mode enabled" );
std::cout << "Multi user mode enabled" << std::endl;
}
}
#endif
/*************************************************************************************/
void xbUtil::ListFilesInDataDirectory(){
- std::cout << "List files for [" << x.GetDataDirectory().Str() << "]" << std::endl << std::endl;
+ std::cout << "List files for [" << x->GetDataDirectory().Str() << "]" << std::endl << std::endl;
xbString s1;
xbInt16 iCnt = 0;
@@ -1894,7 +1917,7 @@ void xbUtil::ListFilesInDataDirectory(){
WIN32_FIND_DATA fData;
HANDLE hFile;
- xbString sSearchPath = x.GetDataDirectory();
+ xbString sSearchPath = x->GetDataDirectory();
xbUInt32 l = sSearchPath.Len();
char cPathSeperator = sSearchPath.GetPathSeparator();
char cLastChar = sSearchPath.GetCharacter( l );
@@ -1926,7 +1949,7 @@ void xbUtil::ListFilesInDataDirectory(){
DIR *dir;
struct dirent *ent;
- if(( dir = opendir( x.GetDataDirectory() )) != NULL ){
+ if(( dir = opendir( x->GetDataDirectory() )) != NULL ){
while(( ent = readdir( dir )) != NULL ){
s1 = ent->d_name;
if( s1 != "." && s1 != ".." ){
@@ -1947,20 +1970,20 @@ void xbUtil::UpdateLogDirectory(){
char cNewDir[256];
cNewDir[0] = 0x00;
std::cout << std::endl << "Update Log Directory" << std::endl;
- std::cout << "Current Log File Directory = [" << x.GetLogDirectory().Str() << "]" << std::endl;
+ std::cout << "Current Log File Directory = [" << x->GetLogDirectory().Str() << "]" << std::endl;
std::cout << "Enter '1' to erase the Log File Directory" << std::endl;
- std::cout << "Enter '2' to change Log File Directory to [" << x.GetDefaultLogDirectory().Str() << "]" << std::endl;
+ std::cout << "Enter '2' to change Log File Directory to [" << x->GetLogDirectory().Str() << "]" << std::endl;
std::cout << "Enter new log directory. Enter for no updates." << std::endl;
std::cin.getline( cNewDir, 256 );
if( strlen( cNewDir ) > 0 ){
if( cNewDir[0] == '1' )
- x.SetLogDirectory( "" );
+ x->SetLogDirectory( "" );
else if( cNewDir[0] == '2' )
- x.SetLogDirectory( x.GetDefaultLogDirectory());
+ x->SetLogDirectory( x->GetLogDirectory());
else
- x.SetLogDirectory( cNewDir );
+ x->SetLogDirectory( cNewDir );
- std::cout << "Log File Directory is [" << x.GetLogDirectory().Str() << "]" << std::endl;
+ std::cout << "Log File Directory is [" << x->GetLogDirectory().Str() << "]" << std::endl;
}
else
std::cout << "Log Directory not updated" << std::endl;
@@ -1971,51 +1994,51 @@ void xbUtil::UpdateLogFileName(){
cNewFile[0] = 0x00;
std::cout << std::endl << "Update Log File Name" << std::endl;
- std::cout << "Current Log File Name = [" << x.GetLogFileName().Str() << "]" << std::endl;
- std::cout << "Enter '1' to change change Log File Name to default [" << x.GetDefaultLogFileName().Str() << "]" << std::endl;
+ std::cout << "Current Log File Name = [" << x->GetLogFileName().Str() << "]" << std::endl;
+ std::cout << "Enter '1' to change change Log File Name to default [" << x->GetLogFileName().Str() << "]" << std::endl;
std::cout << "Enter new Log File Name" << std::endl;
std::cin.getline( cNewFile, 256 );
if( strlen( cNewFile ) > 0 ){
if( cNewFile[0] == '1' )
- x.SetLogFileName( x.GetDefaultLogFileName());
+ x->SetLogFileName( x->GetLogFileName());
else
- x.SetLogFileName( cNewFile );
+ x->SetLogFileName( cNewFile );
- std::cout << "Log File Name is [" << x.GetLogFileName().Str() << "]" << std::endl;
+ std::cout << "Log File Name is [" << x->GetLogFileName().Str() << "]" << std::endl;
} else
std::cout << "Log File Name not updated" << std::endl;
}
/*************************************************************************************/
void xbUtil::WriteLogMessage(){
- if( x.GetLogStatus()) {
+ if( x->GetLogStatus()) {
char cMsg[256];
std::cout << "Enter a message to write to the log file (256 byte max)" << std::endl;
std::cin.getline( cMsg, 256 );
- x.WriteLogMessage( cMsg );
+ x->WriteLogMessage( cMsg );
} else
std::cout << "Logging disabled" << std::endl;
}
/*************************************************************************************/
void xbUtil::ToggleLoggingStatus(){
- if( x.GetLogStatus()){
- x.DisableMsgLogging();
- x.WriteLogMessage( "xb_dbfutil - Logging disabled" );
+ if( x->GetLogStatus()){
+ x->DisableMsgLogging();
+ x->WriteLogMessage( "xb_dbfutil - Logging disabled" );
std::cout << "Logging disabled" << std::endl;
} else {
- x.EnableMsgLogging();
- x.WriteLogMessage( "xb_dbfutil - Logging enabled" );
+ x->EnableMsgLogging();
+ x->WriteLogMessage( "xb_dbfutil - Logging enabled" );
std::cout << "Logging enabled" << std::endl;
}
}
/*************************************************************************************/
void xbUtil::ToggleDefaultAutoCommit(){
- if( x.GetDefaultAutoCommit()){
- x.SetDefaultAutoCommit( xbFalse );
- x.WriteLogMessage( "xb_dbfutil - Default Auto Commit disabled" );
+ if( x->GetDefaultAutoCommit()){
+ x->SetDefaultAutoCommit( xbFalse );
+ x->WriteLogMessage( "xb_dbfutil - Default Auto Commit disabled" );
std::cout << "Default Auto Commit disabled" << std::endl;
} else {
- x.SetDefaultAutoCommit( xbTrue );
- x.WriteLogMessage( "xb_dbfutil - Default Auto Commit enabled" );
+ x->SetDefaultAutoCommit( xbTrue );
+ x->WriteLogMessage( "xb_dbfutil - Default Auto Commit enabled" );
std::cout << "Default Auto Commit enabled" << std::endl;
}
}
@@ -2024,19 +2047,19 @@ void xbUtil::UpdateDataDirectory(){
char cNewDir[256];
cNewDir[0] = 0x00;
std::cout << std::endl << "Update Default Data Directory" << std::endl;
- std::cout << "Current Default Data Directory = [" << x.GetDataDirectory().Str() << "]" << std::endl;
+ std::cout << "Current Default Data Directory = [" << x->GetDataDirectory().Str() << "]" << std::endl;
std::cout << "Enter '1' to erase the Default Data Directory" << std::endl;
std::cout << "Enter '2' to change Default Data Directory to [" << PROJECT_DATA_DIR << "]" << std::endl;
std::cout << "Enter new directory" << std::endl;
std::cin.getline( cNewDir, 256 );
if( strlen( cNewDir ) > 0 ){
if( cNewDir[0] == '1' )
- x.SetDataDirectory( "" );
+ x->SetDataDirectory( "" );
else if( cNewDir[0] == '2' )
- x.SetDataDirectory( PROJECT_DATA_DIR );
+ x->SetDataDirectory( PROJECT_DATA_DIR );
else
- x.SetDataDirectory( cNewDir );
- std::cout << "Default Data Directory is [" << x.GetDataDirectory().Str() << "]" << std::endl;
+ x->SetDataDirectory( cNewDir );
+ std::cout << "Default Data Directory is [" << x->GetDataDirectory().Str() << "]" << std::endl;
}
else
std::cout << "Default Data Directory not updated" << std::endl;
@@ -2044,20 +2067,20 @@ void xbUtil::UpdateDataDirectory(){
/*************************************************************************************/
void xbUtil::ListSystemSettings(){
std::cout << std::endl << "List System Settings" << std::endl;
- std::cout << "Default Data Directory = [" << x.GetDataDirectory().Str() << "]" << std::endl;
-// std::cout << "Default File Version = [" << x.GetDefaultFileVersion() << "]" << std::endl;
+ std::cout << "Default Data Directory = [" << x->GetDataDirectory().Str() << "]" << std::endl;
+// std::cout << "Default File Version = [" << x->GetDefaultFileVersion() << "]" << std::endl;
#ifdef XB_LOCKING_SUPPORT
std::cout << "Default Auto Locking = [";
- if( x.GetDefaultAutoLock())
+ if( x->GetDefaultAutoLock())
std::cout << "ON]" << std::endl;
else
std::cout << "OFF]" << std::endl;
- std::cout << "Default Lock Retries = [" << x.GetDefaultLockRetries() << "]" << std::endl;
- std::cout << "Default Lock Wait Time = [" << x.GetDefaultLockWait() << "] (millisecs)" << std::endl;
+ std::cout << "Default Lock Retries = [" << x->GetDefaultLockRetries() << "]" << std::endl;
+ std::cout << "Default Lock Wait Time = [" << x->GetDefaultLockWait() << "] (millisecs)" << std::endl;
std::cout << "Default Lock Flavor = [";
- switch (x.GetDefaultLockFlavor()){
+ switch (x->GetDefaultLockFlavor()){
case 1:
std::cout << "Dbase]" << std::endl;
break;
@@ -2075,26 +2098,26 @@ void xbUtil::ListSystemSettings(){
break;
}
#endif
- std::cout << "Default Log Directory = [" << x.GetDefaultLogDirectory().Str() << "]" << std::endl;
- std::cout << "Default Logfile Name = [" << x.GetDefaultLogFileName().Str() << "]" << std::endl;
+ std::cout << "Log Directory = [" << x->GetLogDirectory().Str() << "]" << std::endl;
+ std::cout << "Logfile Name = [" << x->GetLogFileName().Str() << "]" << std::endl;
std::cout << "Default Auto Commit = [";
- if( x.GetDefaultAutoCommit())
+ if( x->GetDefaultAutoCommit())
std::cout << "ON]" << std::endl;
else
std::cout << "OFF]" << std::endl;
std::cout << "Logging Status = [";
- if( x.GetLogStatus())
+ if( x->GetLogStatus())
std::cout << "ON]" << std::endl;
else
std::cout << "OFF]" << std::endl;
std::cout << "Endian Type = [";
- if( x.GetEndianType() == 'L' )
+ if( x->GetEndianType() == 'L' )
std::cout << "Little Endian]" << std::endl;
else
std::cout << "Big Endian]" << std::endl;
- if( x.GetMultiUser())
+ if( x->GetMultiUser())
std::cout << "Multi User Mode = [ON]";
else
std::cout << "Multi User Mode = [OFF]";
@@ -2109,7 +2132,9 @@ void xbUtil::ProcessOption( const xbString &sOption ){
else if( sOption == "=0.99" )
// exit right now, now cleanup or termination of anything
exit(0);
- else if( sOption == "=2" )
+ else if( sOption == "=1" )
+ Help();
+ else if( sOption == "=2" )
SystemMenu();
else if( sOption == "=2.1" )
ListSystemSettings();
@@ -2144,7 +2169,7 @@ void xbUtil::ProcessOption( const xbString &sOption ){
else if( sOption == "=3.2" )
UpdateDataDirectory();
else if( sOption == "=3.3" )
- x.DisplayTableList();
+ x->DisplayTableList();
else if( sOption == "=3.4" )
Open();
else if( sOption == "=3.5" )
@@ -2808,7 +2833,7 @@ void xbUtil::FileMenu()
case 0: break;
case 1: ListFilesInDataDirectory(); break;
case 2: UpdateDataDirectory(); break;
- case 3: x.DisplayTableList(); break;
+ case 3: x->DisplayTableList(); break;
case 4: Open(); break;
case 5: Close(); break;
case 6: CloseAllTables(); break;
@@ -2963,6 +2988,7 @@ void xbUtil::MainMenu()
option = GetOption();
switch( option ){
case 0: break;
+ case 1: Help(); break;
case 2: SystemMenu(); break;
case 3: FileMenu(); break;
case 4: RecordMenu(); break;
@@ -3114,7 +3140,7 @@ void xbUtil::OpenIndex(){
xbString sIxFileName = cBuf;
iRc = dActiveTable->OpenIndex( sIxType, sIxFileName );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::CloseIndexFile(){
@@ -3141,7 +3167,7 @@ void xbUtil::CloseIndexFile(){
}
xbInt16 iRc = dActiveTable->CloseIndexFile( pIx );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::CreateIndexTag(){
@@ -3227,7 +3253,7 @@ void xbUtil::CreateIndexTag(){
void *vpTag;
xbInt16 iRc = dActiveTable->CreateTag( sIxType, sIxName, sKeyExpression, sFilter, iDescending, iUnique, 0, &pIx, &vpTag );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetFirstKey(){
@@ -3252,7 +3278,7 @@ void xbUtil::GetFirstKey(){
if( iRc == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetNextKey(){
@@ -3277,7 +3303,7 @@ void xbUtil::GetNextKey(){
if( iRc == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetPrevKey(){
@@ -3303,7 +3329,7 @@ void xbUtil::GetPrevKey(){
if( iRc == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetLastKey(){
@@ -3328,7 +3354,7 @@ void xbUtil::GetLastKey(){
if( iRc == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::FindKey(){
@@ -3387,7 +3413,7 @@ void xbUtil::FindKey(){
if( iRc == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::CheckIntegrity(){
@@ -3410,7 +3436,7 @@ void xbUtil::CheckIntegrity(){
void *vpCurTag = dActiveTable->GetCurTag();
xbInt16 iRc = pIx->CheckTagIntegrity( vpCurTag, 2 );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::Reindex(){
@@ -3433,7 +3459,7 @@ void xbUtil::Reindex(){
}
void *vpCurTag = dActiveTable->GetCurTag();
xbInt16 iRc = pIx->Reindex( &vpCurTag );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::DeleteTag(){
@@ -3455,7 +3481,7 @@ void xbUtil::DeleteTag(){
}
void *vpCurTag = dActiveTable->GetCurTag();
xbInt16 iRc = dActiveTable->DeleteTag( dActiveTable->GetCurIxType(), pIx->GetTagName( vpCurTag ));
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::AssociateNonProdIx(){
@@ -3494,7 +3520,7 @@ void xbUtil::DumpRecsByIx( xbInt16 iOpt ){
std::cout << "1 - 1 line per record" << std::endl;
xbInt16 iDispFmt = GetOption();
- x.WriteLogMessage( "--------- Dump Recs By Index -------------", iDispOpt );
+ x->WriteLogMessage( "--------- Dump Recs By Index -------------", iDispOpt );
void *vpCurTag = dActiveTable->GetCurTag();
xbUInt32 lRecCnt = 0;
xbInt16 iRc = 0;
@@ -3509,7 +3535,7 @@ void xbUtil::DumpRecsByIx( xbInt16 iOpt ){
lRecCnt++;
}
} else {
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
} else if( iOpt == 1 ) {
iRc = pIx->GetLastKey( vpCurTag, 1 );
@@ -3668,10 +3694,10 @@ void xbUtil::SetFilter()
if( filt )
delete filt;
- filt = new xbFilter( &x, dActiveTable );
+ filt = new xbFilter( dActiveTable );
xbInt16 iRc = filt->Set( s );
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetFirstFilterRec()
@@ -3689,7 +3715,7 @@ void xbUtil::GetFirstFilterRec()
if(( iRc = filt->GetFirstRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetNextFilterRec()
@@ -3706,7 +3732,7 @@ void xbUtil::GetNextFilterRec()
if(( iRc = filt->GetNextRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetPrevFilterRec()
@@ -3723,7 +3749,7 @@ void xbUtil::GetPrevFilterRec()
if(( iRc = filt->GetPrevRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
void xbUtil::GetLastFilterRec()
@@ -3740,17 +3766,46 @@ void xbUtil::GetLastFilterRec()
if(( iRc = filt->GetLastRecord()) == XB_NO_ERROR )
dActiveTable->DumpRecord( dActiveTable->GetCurRecNo(), 2);
else
- x.DisplayError( iRc );
+ x->DisplayError( iRc );
}
#endif // XB_FILTER_SUPPORT
///@endcond DOXYOFF
+
+/*************************************************************************************/
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_dbfutil [-h] [-?] [--help] [-v] [--version]" << std::endl << std::endl;
+ std::cout << "This program provides a menu driven tool for accissing the functionality og the xbase64 library" << std::endl;
+ std::cout << "and provides access to DBF, MDX, NDX and MDT xbase formatted data files." << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
/*************************************************************************************/
-int main(int, char**)
+int main(int argc, char *argv[] )
{
- std::cout << "xb_dbfutil initializing" << std::endl;
- xbUtil u;
+
+ // std::cout << "xb_dbfutil initializing" << std::endl;
+ xbXBase x;
+
+ xbString sParm;
+ if (x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
+ return 1;
+ }
+
+ xbUtil u( &x );
u.MainMenu();
return 0;
}
diff --git a/src/utils/xb_deletall.cpp b/src/utils/xb_deletall.cpp
index 720710f..3a8f6e4 100755
--- a/src/utils/xb_deletall.cpp
+++ b/src/utils/xb_deletall.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2017,2019 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2017,2019,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -24,32 +24,62 @@ This program sets the delete flag on all records in a dbf file
using namespace xb;
-int main(int ac,char** av)
+
+
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_deleteall [-h] [-?] [--help] [-v] [--version] -i myfile" << std::endl << std::endl;
+ std::cout << "This program flags all the records in a DBF table for deletion. To physically remove the deleted records, see program xb_pack.";
+ std::cout << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+
+
+int main(int argc, char *argv[])
{
+
xbXBase x;
xbDbf *MyFile = NULL;
xbFile f( &x );
xbInt16 iRc = 0;
- if (ac <= 1) {
- std::cout << "\nUsage: xb_deletall filename...\n";
+ xbString sParm;
+
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
+ return 1;
+ }
+
+ if( !x.GetCmdLineOpt( argc, argv, "-i", sParm ) || sParm == "" ){
+ PrintHelp();
return 1;
}
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
+ if(( iRc = x.OpenHighestVersion( sParm.Str(), "", &MyFile )) != XB_NO_ERROR ){
+ std::cout << "Could not open file RC = " << iRc << " file = " << sParm.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
iRc = MyFile->DeleteAllRecords();
if( iRc != XB_NO_ERROR ) {
- std::cout << "Error Deleting all records - database ==> " << av[1] << "\n";
- std::cout << " Return Code = " << iRc;
+ std::cout << "Error Deleting all records - database ==> " << sParm.Str() << "\n";
+ std::cout << "Return Code = " << iRc;
+ x.DisplayError( iRc );
+ return 1;
}
MyFile->Close();
- std::cout << "\nDone...\n\n";
-
+ delete MyFile;
return 0;
-
} \ No newline at end of file
diff --git a/src/utils/xb_dumpdbt.cpp b/src/utils/xb_dumpdbt.cpp
index bc95ab7..05b7209 100755
--- a/src/utils/xb_dumpdbt.cpp
+++ b/src/utils/xb_dumpdbt.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2017 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2017,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -16,16 +16,25 @@ Email Contact:
#include <xbase.h>
-
using namespace xb;
-int main( int ac, char **av )
-{
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_dumpdbt [-h] [-?] [--help] [-v] [--version] -i filename.DBF" << std::endl << std::endl;
+ std::cout << "This program dumps memo record data from an xbase formatted DBT file to stdout." << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+
+int main(int argc, char *argv[] )
+{
-#ifdef XB_MEMO_SUPPORT
- xbXBase x;
+ #ifdef XB_MEMO_SUPPORT
+ xbXBase x;
xbInt16 iRc;
char cFieldType;
xbDbf *MyFile = NULL;
@@ -34,19 +43,33 @@ int main( int ac, char **av )
xbInt32 lBlockPtr;
xbString sMemoFldData;
- if( ac <= 1 ){
- std::cout << "\nUsage: dumpdbt filename...\n";
+ xbString sParm;
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
return 1;
}
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
+ if( !x.GetCmdLineOpt( argc, argv, "-i", sParm ) || sParm == "" ){
+ PrintHelp();
+ return 1;
+ }
+
+ if(( iRc = x.OpenHighestVersion( sParm.Str(), "", &MyFile )) != XB_NO_ERROR ){
+ std::cout << "Could not open file iRc = " << iRc << " file = " << sParm.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
if( MyFile->GetMemoFieldCnt() == 0 ) {
- std::cout << "No memo fields exist in " << av[1] << std::endl;
+ std::cout << "No memo fields exist in " << sParm.Str() << std::endl;
} else {
xbUInt32 ulRecCnt = 0;
@@ -78,10 +101,9 @@ int main( int ac, char **av )
MyFile->Close();
delete MyFile;
}
-
-#else
- std::cout << "\nXB_MEMO_SUPPORT is OFF\n";
-#endif
+ #else
+ std::cout << "\nXB_MEMO_SUPPORT is OFF\n";
+ #endif
return 0;
}
diff --git a/src/utils/xb_dumphdr.cpp b/src/utils/xb_dumphdr.cpp
deleted file mode 100755
index 267f4c5..0000000
--- a/src/utils/xb_dumphdr.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/* xb_dumphdr.cpp
-
-XBase64 Software Library
-
-Copyright (c) 1997,2003,2014 Gary A Kunkel
-
-The xb64 software library is covered under
-the terms of the GPL Version 3, 2007 license.
-
-Email Contact:
-
- xb64-devel@lists.sourceforge.net
- xb64-users@lists.sourceforge.net
-
-*/
-
-
-#include <xbase.h>
-
-using namespace xb;
-
-int main( int ac, char ** av ){
-
-
- xbInt16 iRc;
- xbXBase x;
- xbDbf *MyFile = NULL;
-
- if( ac <= 1 ) {
- std::cout << "\nUsage: xb_dumphdr filename...\n";
- return 1;
- }
-
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
- x.DisplayError( iRc );
- return 0;
- }
-
- MyFile->DumpHeader( 4 );
- MyFile->Close();
- delete MyFile;
-
- return 0;
-}
diff --git a/src/utils/xb_dumpix.cpp b/src/utils/xb_dumpix.cpp
deleted file mode 100755
index afd8764..0000000
--- a/src/utils/xb_dumpix.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/* xb_dumpix.cpp
-
-XBase64 Software Library
-
-Copyright (c) 1997,2003,2014 Gary A Kunkel
-
-The xb64 software library is covered under
-the terms of the GPL Version 3, 2007 license.
-
-Email Contact:
-
- xb64-devel@lists.sourceforge.net
- xb64-users@lists.sourceforge.net
-
-*/
-
-
-// This program dumps an index file's internal data blocks.
-// This program is for index development and debugging purposes
-
-
-#include <xbase.h>
-
-using namespace xb;
-
-int main( int ac, char ** av ){
-
-
- xbInt16 iRc;
- xbXBase x;
- xbDbf *MyFile = NULL;
- x.EnableMsgLogging();
- x.SetLogSize( 1000000L );
-
- if( ac <= 1 ) {
- std::cout << "\nUsage: xb_dumphdr filename...\n";
- return 1;
- }
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
- x.DisplayError( iRc );
- return 0;
- }
- xbIx *pIx = MyFile->GetCurIx();
- if( pIx ){
- // pIx->DumpHeader( 2, 3 );
- pIx->DumpTagBlocks( 2 );
- } else {
- std::cout << av[1] << "No current index found" << std::endl;
- }
-
- MyFile->Close();
- delete MyFile;
-
- return 0;
-}
diff --git a/src/utils/xb_dumprecs.cpp b/src/utils/xb_dumprecs.cpp
index 0a85f45..cf6e33c 100755
--- a/src/utils/xb_dumprecs.cpp
+++ b/src/utils/xb_dumprecs.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2019 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2019,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -17,27 +17,57 @@ Email Contact:
#include <xbase.h>
using namespace xb;
-int main(int ac,char** av)
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_dumprecs [-h] [-?] [--help] [-v] [--version] -i filename.DBF" << std::endl << std::endl;
+ std::cout << "This program dumps data records in an xbase formatted DBF file to stdout in csv format." << std::endl;
+ std::cout << "Memo data (variable length) is not included in this export. See program xb_dumpdpt for memo data." << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+
+int main(int argc, char *argv[] )
{
xbXBase x;
+
+
xbInt16 iRc;
x.EnableMsgLogging();
x.SetLogSize( 1000000L );
-// xbUInt32 ulRecCnt = 0;
- if (ac <= 1) {
- std::cout << "Usage: xb_dumprecs filename..." << std::endl;
+ xbString sParm;
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
+ return 1;
+ }
+
+ if( !x.GetCmdLineOpt( argc, argv, "-i", sParm ) || sParm == "" ){
+ PrintHelp();
return 1;
}
xbDbf *MyFile = NULL;
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
+ if(( iRc = x.OpenHighestVersion( sParm.Str(), "", &MyFile )) != XB_NO_ERROR ){
+ std::cout << "Could not open file RC = " << iRc << " file = " << sParm.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
-// std::cout << "Processing file sequentially from beginning..." << std::endl;
+ // std::cout << "Processing file sequentially from beginning..." << std::endl;
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ MyFile->EnableBlockReadProcessing();
+ #endif
xbUInt32 j = 0;
xbUInt32 ulRecCnt = 0;
@@ -48,15 +78,21 @@ int main(int ac,char** av)
return iRc;
while( j < ulRecCnt ){
if( j == 0 )
- iRc = MyFile->DumpRecord(++j, 2, 2 );
+ iRc = MyFile->DumpRecord(++j, 2, 2 ); // header + data
else
- iRc = MyFile->DumpRecord(++j, 2, 1 );
+ iRc = MyFile->DumpRecord(++j, 2, 1 ); // data only
if( iRc != XB_NO_ERROR ){
x.DisplayError( iRc );
return 1;
}
}
-// std::cout << j << " Records written to logile" << std::endl;
+ std::cout << j << " Records processed." << std::endl;
+
+ #ifdef XB_BLOCKREAD_SUPPORT
+ MyFile->DisableBlockReadProcessing();
+ #endif
+
MyFile->Close();
+
return 0;
}
diff --git a/src/utils/xb_execsql.cpp b/src/utils/xb_execsql.cpp
index d474593..daa6b6e 100755
--- a/src/utils/xb_execsql.cpp
+++ b/src/utils/xb_execsql.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
diff --git a/src/utils/xb_pack.cpp b/src/utils/xb_pack.cpp
index ccec5a3..0cbba7e 100755
--- a/src/utils/xb_pack.cpp
+++ b/src/utils/xb_pack.cpp
@@ -2,7 +2,7 @@
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2017 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2017,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -17,33 +17,59 @@ Email Contact:
#include <xbase.h>
using namespace xb;
-int main(int ac,char** av)
-{
- if (ac <= 1) {
- std::cout <<
- "\nUsage: xb_pack filename...\n"
- "\nThis program does automatically reindexes any open NDX or MDX indexes.";
- return 1;
- }
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_pack [-h] [-?] [--help] [-v] [--version] -i filename.DBF" << std::endl << std::endl;
+ std::cout << "This program removes data records that are flagged for deletion in a DBF file and rebuilds indices." << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+int main(int argc, char *argv[] )
+{
xbXBase x;
xbInt16 iRc;
xbDbf * MyFile = NULL;
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
+
+ xbString sParm;
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
+ return 1;
+ }
+
+ if( !x.GetCmdLineOpt( argc, argv, "-i", sParm ) || sParm == "" ){
+ PrintHelp();
+ return 1;
+ }
+
+ if(( iRc = x.OpenHighestVersion( sParm.Str(), "", &MyFile )) != XB_NO_ERROR ){
+ std::cout << "Could not open file iRc = " << iRc << " file = " << sParm.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
if(( iRc = MyFile->Pack()) != XB_NO_ERROR ) {
- std::cout << "\nError packing DBF database ==> " << av[1] << std::endl;
+ std::cout << "\nError packing DBF database ==> " << sParm.Str() << std::endl;
std::cout << " Return Code = " << iRc << std::endl;
+ return 1;
}
#ifdef XB_INDEX_SUPPORT
if(( iRc = MyFile->Reindex( 1 )) != XB_NO_ERROR ) {
- std::cout << "\nError reindexing DBF database ==> " << av[1] << std::endl;
+ std::cout << "\nError reindexing DBF database ==> " << sParm.Str() << std::endl;
std::cout << " Return Code = " << iRc << std::endl;
+ x.DisplayError( iRc );
+ return 1;
}
#endif // XB_INDEX_SUPPORT
diff --git a/src/utils/xb_tblinfo.cpp b/src/utils/xb_tblinfo.cpp
index 6b88403..241642a 100755
--- a/src/utils/xb_tblinfo.cpp
+++ b/src/utils/xb_tblinfo.cpp
@@ -1,8 +1,8 @@
-/* xb_dumpmdx.cpp
+/* xb_tblinfo.cpp
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2021 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2021,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -19,85 +19,86 @@ Email Contact:
using namespace xb;
-int main( int ac, char ** av ){
+
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_tblinfo [-h] [-?] [--help] [-v] [--version] -i filename.DBF" << std::endl << std::endl;
+ std::cout << "This program dumps table definition information from a DBF file and associated indices." << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+
+int main(int argc, char *argv[] ){
xbXBase x;
- xbBool bHdr = xbFalse;
xbInt16 iRc;
xbString sTagName;
xbDbf *MyFile = NULL;
- #ifdef XB_MDX_SUPPORT
- #ifdef XB_DEBUG_SUPPORT
- xbBool bMdxFound = xbFalse;
- #endif // XB_DEBUG_SUPPORT
- #endif // XB_MDX_SUPPORT
-
-
x.EnableMsgLogging();
x.SetLogSize( 1000000L );
-
- if( ac <= 1 ) {
- std::cout << "\nUsage: xb_dumpmdx filename.DBF -h -tTAGNAME...\n";
- std::cout << "-h dump mdx file header (default)\n";
- std::cout << "-tTAGNAME where TAGNAME is the name of a tag for extract\n";
+ xbString sParm;
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
return 1;
}
- if( ac > 2 ){
- for( int i = 1; i< ac; i++ ){
- if( strstr( av[i], "-h" ))
- bHdr = xbTrue;
- else if( strstr( av[i], "-t" ))
- sTagName.Set( av[i]+2 );
- }
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
+ return 1;
}
- if( bHdr == xbFalse && sTagName == "" )
- bHdr = xbTrue;
-
-
- // std::cout << "Hdr = " << bHdr << std::endl;
- if( sTagName != "" )
- std::cout << "Tag = " << sTagName.Str() << std::endl;
+ if( !x.GetCmdLineOpt( argc, argv, "-i", sParm ) || sParm == "" ){
+ PrintHelp();
+ return 1;
+ }
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
+ if(( iRc = x.OpenHighestVersion( sParm.Str(), "", &MyFile )) != XB_NO_ERROR ){
+ std::cout << "Could not open file iRc = " << iRc << " file = " << sParm.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
MyFile->DumpHeader( 4 );
- #ifdef XB_MDX_SUPPORT
- // for each mdx file, dump the header
- xbIxList *ixl = MyFile->GetIxList();
- xbIx *ixp;
+
+
+ #ifdef XB_INDEX_SUPPORT
+ xbIxList *ixl;
+ xbIx *ixp;
xbString sFileType;
+
+ #ifdef XB_MDX_SUPPORT
+ ixl = MyFile->GetIxList();
while( ixl ){
ixp = ixl->ix;
ixp->GetFileType( sFileType );
-
- #ifdef XB_DEBUG_SUPPORT
- if( sFileType == "MDX" ){
- bMdxFound = xbTrue;
- if( bHdr ){
- ixp->DumpHeader( 1, 3 );
- }
- }
- #endif // XB_DEBUG_SUPPORT
+ if( sFileType == "MDX" )
+ ixp->DumpHeader( 1, 3 );
ixl = ixl->next;
}
-
- #ifdef XB_DEBUG_SUPPORT
- if( !bMdxFound )
- std::cout << "No MDX index for file." << std::endl;
- #endif // XB_DEBUG_SUPPORT
#endif // XB_MDX_SUPPORT
+ #ifdef XB_NDX_SUPPORT
+ ixl = MyFile->GetIxList();
+ while( ixl ){
+ ixp = ixl->ix;
+ ixp->GetFileType( sFileType );
+ if( sFileType == "NDX" )
+ ixp->DumpHeader( 1, 3 );
+ ixl = ixl->next;
+ }
+ #endif // XB_NDX_SUPPORT
+
+ #endif // XB_INDEX_SUPPORT
+
MyFile->Close();
delete MyFile;
-
return 0;
}
diff --git a/src/utils/xb_undelall.cpp b/src/utils/xb_undelall.cpp
index 4f1af12..5fb1323 100755
--- a/src/utils/xb_undelall.cpp
+++ b/src/utils/xb_undelall.cpp
@@ -1,8 +1,8 @@
-/* xb_deletall.cpp
+/* xb_undelall.cpp
XBase64 Software Library
-Copyright (c) 1997,2003,2014,2017 Gary A Kunkel
+Copyright (c) 1997,2003,2014,2017,2023 Gary A Kunkel
The xb64 software library is covered under
the terms of the GPL Version 3, 2007 license.
@@ -13,8 +13,7 @@ Email Contact:
xb64-users@lists.sourceforge.net
-
-This program sets the delete flag on all records in a dbf file
+This program removes the delete flag on all records flagged for deletion in a DBF file
*/
@@ -24,32 +23,60 @@ This program sets the delete flag on all records in a dbf file
using namespace xb;
-int main(int ac,char** av)
+
+
+void PrintHelp();
+void PrintHelp(){
+ std::cout << "Usage: xb_undelall [-h] [-?] [--help] [-v] [--version] -i myfile" << std::endl << std::endl;
+ std::cout << "This program removes the deletion flags all the records in a DBF table that are flagged for deletion.";
+ std::cout << std::endl << std::endl;
+}
+void PrintVersion();
+void PrintVersion(){
+ std::cout << "Xbase64 Version: " << xbase_VERSION_MAJOR << "." << xbase_VERSION_MINOR << "." << xbase_VERSION_PATCH << std::endl;
+}
+
+
+int main(int argc, char *argv[])
{
xbXBase x;
xbDbf *MyFile = NULL;
xbInt16 iRc = 0;
- if (ac <= 1) {
- std::cout << "\nUsage: xb_deletall filename...\n";
+ xbString sParm;
+
+ if (argc < 2 || x.GetCmdLineOpt( argc, argv, "-h", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "-?", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--help", sParm )){
+ PrintHelp();
+ return 1;
+ }
+
+ if ( x.GetCmdLineOpt( argc, argv, "-v", sParm ) ||
+ x.GetCmdLineOpt( argc, argv, "--version", sParm )){
+ PrintVersion();
return 1;
}
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file iRc = " << iRc << " file = " << av[1] << std::endl;
+ if( !x.GetCmdLineOpt( argc, argv, "-i", sParm ) || sParm == "" ){
+ PrintHelp();
+ return 1;
+ }
+
+ if(( iRc = x.OpenHighestVersion( sParm.Str(), "", &MyFile )) != XB_NO_ERROR ){
+ std::cout << "Could not open file RC = " << iRc << " file = " << sParm.Str() << std::endl;
x.DisplayError( iRc );
- return 0;
+ return 1;
}
iRc = MyFile->UndeleteAllRecords();
if( iRc != XB_NO_ERROR ) {
- std::cout << "Error Undeleting all records - database ==> " << av[1] << "\n";
+ std::cout << "Error Undeleting all records - database ==> " << sParm.Str() << "\n";
std::cout << " Return Code = " << iRc;
+ return 1;
}
MyFile->Close();
delete MyFile;
- std::cout << "\nDone...\n\n";
-
return 0;
} \ No newline at end of file
diff --git a/src/utils/xb_zap.cpp b/src/utils/xb_zap.cpp
deleted file mode 100755
index 4660cd8..0000000
--- a/src/utils/xb_zap.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/* xb_zap.cpp
-
-XBase64 Software Library
-
-Copyright (c) 1997,2003,2014,2017 Gary A Kunkel
-
-The xb64 software library is covered under
-the terms of the GPL Version 3, 2007 license.
-
-Email Contact:
-
- xb64-devel@lists.sourceforge.net
- xb64-users@lists.sourceforge.net
-
-*/
-
-#include <xbase.h>
-using namespace xb;
-
-int main(int ac,char** av)
-{
- if (ac <= 1) {
- std::cout <<
- "\nUsage: zap filename...\n"
- "\nThis program does not automatically reindex any indices."
- "\nUse the reindex program to reindex any indexes associated"
- "\nwith the database, or build your own program which executes "
- "\nthe PackDatabase() method after opening all the index files "
- "\nassociated with the database.\n\n"
- ;
- return 1;
- }
-
- xbXBase x;
- xbInt16 iRc;
- xbDbf *MyFile = NULL;
-
- if(( iRc = x.OpenHighestVersion( av[1], "", &MyFile )) != XB_NO_ERROR ){
- std::cout << "Could not open file " << av[1] << std::endl;
- return iRc;
- }
-
- if(( iRc = MyFile->Zap()) != XB_NO_ERROR ) {
- std::cout << "\nError packing DBF database ==> " << av[1] << std::endl;
- std::cout << " Return Code = " << iRc << std::endl;
- }
- MyFile->Close();
- delete MyFile;
-
- std::cout << "\nZap Database complete..." << std::endl;
- return 0;
-}