1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
\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}}
\mbox{\hyperlink{xbfile_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/* xbfile.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\_FILE\_H\_\_}}
\DoxyCodeLine{17 \textcolor{preprocessor}{\#define \_\_XB\_FILE\_H\_\_}}
\DoxyCodeLine{18 }
\DoxyCodeLine{19 \textcolor{preprocessor}{\#ifdef CMAKE\_COMPILER\_IS\_GNUCC}}
\DoxyCodeLine{20 \textcolor{preprocessor}{\#pragma interface}}
\DoxyCodeLine{21 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{22 }
\DoxyCodeLine{23 \textcolor{comment}{/*****************************/}}
\DoxyCodeLine{24 \textcolor{comment}{/* File Open Modes */}}
\DoxyCodeLine{25 \textcolor{preprocessor}{\#define XB\_READ 0}}
\DoxyCodeLine{26 \textcolor{preprocessor}{\#define XB\_READ\_WRITE 1}}
\DoxyCodeLine{27 \textcolor{preprocessor}{\#define XB\_WRITE 2}}
\DoxyCodeLine{28 }
\DoxyCodeLine{29 \textcolor{comment}{/*****************************/}}
\DoxyCodeLine{30 \textcolor{comment}{/* File Access Modes */}}
\DoxyCodeLine{31 \textcolor{preprocessor}{\#define XB\_SINGLE\_USER 0 }\textcolor{comment}{// file buffering on}}
\DoxyCodeLine{32 \textcolor{preprocessor}{\#define XB\_MULTI\_USER 1 }\textcolor{comment}{// file buffering off}}
\DoxyCodeLine{33 }
\DoxyCodeLine{34 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespacexb}{xb}}\{}
\DoxyCodeLine{35 }
\DoxyCodeLine{56 \textcolor{keyword}{class }XBDLLEXPORT \mbox{\hyperlink{classxb_1_1xbFile}{xbFile}} : \textcolor{keyword}{public} \mbox{\hyperlink{classxb_1_1xbSsv}{xbSsv}} \{}
\DoxyCodeLine{57 }
\DoxyCodeLine{58 \textcolor{keyword}{public}:}
\DoxyCodeLine{59 \textcolor{comment}{// xbFile();}}
\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{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{76 }
\DoxyCodeLine{77 xbInt16 GetOpenMode () \textcolor{keyword}{const};}
\DoxyCodeLine{78 xbInt16 GetShareMode () \textcolor{keyword}{const};}
\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{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{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{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{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{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{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{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{183 }
\DoxyCodeLine{184 \textcolor{preprocessor}{ \#ifdef HAVE\_SETENDOFFILE\_F}}
\DoxyCodeLine{185 HANDLE fHandle;}
\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 }
\end{DoxyCode}
|