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
180
181
182
183
|
\hypertarget{xbfile_8h_source}{}\doxysection{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}}
\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 }
\DoxyCodeLine{64 xbInt16 SetHomeFolders();}
\DoxyCodeLine{65 }
\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 xbUInt32 GetBlockSize () \textcolor{keyword}{const};}
\DoxyCodeLine{78 xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );}
\DoxyCodeLine{79 }
\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 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}{size\_t} xbFtell ();}
\DoxyCodeLine{146 xbInt16 xbFseek ( xbInt64 llOffset, xbInt32 whence );}
\DoxyCodeLine{147 }
\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 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 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}{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 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 XB\_LOCKING\_SUPPORT}}
\DoxyCodeLine{185 xbInt16 iLockRetries; \textcolor{comment}{/* file override number of lock attempts */}}
\DoxyCodeLine{186 \textcolor{preprocessor}{ \#endif}}
\DoxyCodeLine{187 }
\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}
|