summaryrefslogtreecommitdiff
path: root/1Tdata/xbase/xbase64-4.1.4/docs/doxygen/latex/xbfile_8h_source.tex
blob: 9254dd409f8038efbb57c068f9d32bc0cd56a949 (plain)
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
184
\hypertarget{xbfile_8h_source}{}\doxysection{xbfile.\+h}
\label{xbfile_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.4/src/include/xbfile.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.4/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              \mbox{\hyperlink{classxb_1_1xbFile}{xbFile}}( \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} * x );}
\DoxyCodeLine{60              \mbox{\hyperlink{classxb_1_1xbFile}{\string~xbFile}}();}
\DoxyCodeLine{61 }
\DoxyCodeLine{62     \textcolor{keyword}{const}    \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetDirectory() \textcolor{keyword}{const};}
\DoxyCodeLine{63     \textcolor{keyword}{const}    \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetFileName() \textcolor{keyword}{const};}
\DoxyCodeLine{64     \textcolor{keyword}{const}    \mbox{\hyperlink{classxb_1_1xbString}{xbString}}\& GetFqFileName() \textcolor{keyword}{const};}
\DoxyCodeLine{65 }
\DoxyCodeLine{66 }
\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 = 0 );}
\DoxyCodeLine{68 }
\DoxyCodeLine{69     xbInt16  DetermineXbaseTableVersion( \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cFileTypeByte ) \textcolor{keyword}{const};}
\DoxyCodeLine{70     xbInt16  DetermineXbaseMemoVersion( \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} cFileTypeByte ) \textcolor{keyword}{const};}
\DoxyCodeLine{71 }
\DoxyCodeLine{72     \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} eGetDouble ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
\DoxyCodeLine{73     xbInt32  eGetInt32  ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
\DoxyCodeLine{74     xbUInt32 eGetUInt32 ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
\DoxyCodeLine{75     xbInt16  eGetInt16  ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
\DoxyCodeLine{76     xbUInt16 eGetUInt16 ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} *p ) \textcolor{keyword}{const};}
\DoxyCodeLine{77     \textcolor{keywordtype}{void}     ePutDouble ( \textcolor{keywordtype}{char} *p, \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} d );}
\DoxyCodeLine{78     \textcolor{keywordtype}{void}     ePutInt32  ( \textcolor{keywordtype}{char} *p, xbInt32 l );}
\DoxyCodeLine{79     \textcolor{keywordtype}{void}     ePutUInt32 ( \textcolor{keywordtype}{char} *p, xbUInt32 ul );}
\DoxyCodeLine{80     \textcolor{keywordtype}{void}     ePutInt16  ( \textcolor{keywordtype}{char} *p, xbInt16 s );}
\DoxyCodeLine{81     \textcolor{keywordtype}{void}     ePutUInt16 ( \textcolor{keywordtype}{char} *p, xbUInt16 s );}
\DoxyCodeLine{82 }
\DoxyCodeLine{83     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   FileExists () \textcolor{keyword}{const};}
\DoxyCodeLine{84     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   FileExists ( xbInt16 iOption ) \textcolor{keyword}{const};}
\DoxyCodeLine{85     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   FileExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName ) \textcolor{keyword}{const};}
\DoxyCodeLine{86     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   FileExists ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
\DoxyCodeLine{87     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   FileIsOpen () \textcolor{keyword}{const};}
\DoxyCodeLine{88 }
\DoxyCodeLine{89     xbUInt32 GetBlockSize   () \textcolor{keyword}{const};}
\DoxyCodeLine{90 }
\DoxyCodeLine{91     xbInt16  GetFileDirPart ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileDirPartOut ) \textcolor{keyword}{const};}
\DoxyCodeLine{92     xbInt16  GetFileDirPart ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileDirPartOut ) \textcolor{keyword}{const};}
\DoxyCodeLine{93     xbInt16  GetFileExtPart ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileExtPartOut ) \textcolor{keyword}{const};}
\DoxyCodeLine{94     xbInt16  GetFileExtPart ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileExtPartOut ) \textcolor{keyword}{const};}
\DoxyCodeLine{95     xbInt16  GetFileMtime   ( time\_t \&mtime );}
\DoxyCodeLine{96     xbInt16  GetFileNamePart( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileNamePartOut ) \textcolor{keyword}{const};}
\DoxyCodeLine{97     xbInt16  GetFileNamePart( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sCompleteFileNameIn, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileNamePartOut ) \textcolor{keyword}{const};}
\DoxyCodeLine{98     xbInt16  GetFileSize    ( xbUInt64 \&ullFileSize );}
\DoxyCodeLine{99     xbInt16  GetFileType    ( \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileType ) \textcolor{keyword}{const};}
\DoxyCodeLine{100 }
\DoxyCodeLine{101 }
\DoxyCodeLine{102     xbInt16  GetOpenMode    () \textcolor{keyword}{const};}
\DoxyCodeLine{103     xbInt16  GetShareMode   () \textcolor{keyword}{const};}
\DoxyCodeLine{104 }
\DoxyCodeLine{105 }
\DoxyCodeLine{106     xbInt16  GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 \&iVersion );}
\DoxyCodeLine{107     xbInt16  GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \&cFileTypeByte );}
\DoxyCodeLine{108     xbInt16  GetXbaseFileTypeByte( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, \textcolor{keywordtype}{unsigned} \textcolor{keywordtype}{char} \&cFileTypeByte, xbInt16 \&iVersion );}
\DoxyCodeLine{109 }
\DoxyCodeLine{110     xbInt16  NameSuffixMissing( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
\DoxyCodeLine{111 }
\DoxyCodeLine{112     xbInt16  ReadBlock     ( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} readSize,  \textcolor{keywordtype}{void} *buf );}
\DoxyCodeLine{113     xbInt16  ReadBlock     ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, \textcolor{keywordtype}{size\_t} readSize,  \textcolor{keywordtype}{void} *buf );}
\DoxyCodeLine{114 }
\DoxyCodeLine{115     xbInt16  SetBlockSize  ( xbUInt32 ulBlockSize );}
\DoxyCodeLine{116     \textcolor{keywordtype}{void}     SetDirectory  ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sDirectory);}
\DoxyCodeLine{117     \textcolor{keywordtype}{void}     SetFileName   ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName );}
\DoxyCodeLine{118     \textcolor{keywordtype}{void}     SetFqFileName ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFqName );}
\DoxyCodeLine{119     xbInt16  SetHomeFolders();}
\DoxyCodeLine{120 }
\DoxyCodeLine{121     xbInt16  WriteBlock    ( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} writeSize, \textcolor{keywordtype}{void} *buf );}
\DoxyCodeLine{122 }
\DoxyCodeLine{123     xbInt16  xbFclose      ();}
\DoxyCodeLine{124     xbInt16  xbFeof        ();}
\DoxyCodeLine{125     xbInt16  xbFflush      ();}
\DoxyCodeLine{126     xbInt16  xbFgetc       ( xbInt32 \&c );}
\DoxyCodeLine{127     xbInt16  xbFgetc       ( \textcolor{keywordtype}{char} \&c );}
\DoxyCodeLine{128     xbInt16  xbFgets       ( \textcolor{keywordtype}{size\_t} lSize, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sLine );}
\DoxyCodeLine{129 }
\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  xbFseek       ( xbInt64 llOffset, xbInt32 whence );}
\DoxyCodeLine{141     \textcolor{keywordtype}{size\_t}   xbFtell       ();}
\DoxyCodeLine{142     \textcolor{keywordtype}{void}     xbFTurnOffFileBuffering();}
\DoxyCodeLine{143  }
\DoxyCodeLine{144     xbInt16  xbReadUntil   ( \textcolor{keyword}{const} \textcolor{keywordtype}{char} cDelim, \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOut );}
\DoxyCodeLine{145     xbInt16  xbRemove      ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption );}
\DoxyCodeLine{146     xbInt16  xbRemove      ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName );}
\DoxyCodeLine{147     xbInt16  xbRemove      ();}
\DoxyCodeLine{148 }
\DoxyCodeLine{149     xbInt16  xbRename      ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sNewName );}
\DoxyCodeLine{150     \textcolor{keywordtype}{void}     xbRewind      ();}
\DoxyCodeLine{151 }
\DoxyCodeLine{152     xbInt16  xbFwrite      ( \textcolor{keyword}{const} \textcolor{keywordtype}{void} *ptr, \textcolor{keywordtype}{size\_t} lSize, \textcolor{keywordtype}{size\_t} lNmemb );}
\DoxyCodeLine{153 }
\DoxyCodeLine{154     xbInt16  xbTruncate    ( xbInt64 llSize );}
\DoxyCodeLine{155 }
\DoxyCodeLine{156 }
\DoxyCodeLine{157 \textcolor{preprocessor}{    \#ifdef XB\_LOCKING\_SUPPORT}}
\DoxyCodeLine{158     xbInt16  xbLock           ( xbInt16 iFunction, xbInt64 llOffset, \textcolor{keywordtype}{size\_t} stLen );}
\DoxyCodeLine{159     xbInt16  GetLockRetryCount() \textcolor{keyword}{const};}
\DoxyCodeLine{160     \textcolor{keywordtype}{void}     SetLockRetryCount( xbInt16 iLockRetries );}
\DoxyCodeLine{161 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{162 }
\DoxyCodeLine{163 \textcolor{preprocessor}{    \#ifdef XB\_DEBUG\_SUPPORT}}
\DoxyCodeLine{164     xbInt16  DumpBlockToDisk( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} lBlockSize );}
\DoxyCodeLine{165     xbInt16  DumpMemToDisk  ( \textcolor{keywordtype}{char} *p, \textcolor{keywordtype}{size\_t} lBlockSize );}
\DoxyCodeLine{166 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{167 }
\DoxyCodeLine{168 }
\DoxyCodeLine{169   \textcolor{keyword}{protected}:}
\DoxyCodeLine{170 }
\DoxyCodeLine{171     \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *\mbox{\hyperlink{classxb_1_1xbFile_ae39a67ea391b46055d4ca299cb222004}{xbase}};              \textcolor{comment}{/* pointer to the main structures                       */}}
\DoxyCodeLine{172 }
\DoxyCodeLine{173   \textcolor{keyword}{private}:}
\DoxyCodeLine{174     FILE     *fp;}
\DoxyCodeLine{175     \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFqFileName;        \textcolor{comment}{/* fully qualified file name                            */}}
\DoxyCodeLine{176     \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFileName;          \textcolor{comment}{/* file name                                            */}}
\DoxyCodeLine{177     \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDirectory;         \textcolor{comment}{/* directory, ends with / or \(\backslash\)                          */}}
\DoxyCodeLine{178     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   bFileOpen;          \textcolor{comment}{/* true if file is open                                 */}}
\DoxyCodeLine{179     xbUInt32 ulBlockSize;        \textcolor{comment}{/* used for memo and index files                        */}}
\DoxyCodeLine{180 }
\DoxyCodeLine{181     xbInt16  iOpenMode;          \textcolor{comment}{/* XB\_READ || XB\_READ\_WRITE || XB\_WRITE                 */}}
\DoxyCodeLine{182     xbInt16  iShareMode;         \textcolor{comment}{/* XB\_SINGLE\_USER || XB\_MULTI\_USER -\/ set file buffering */}}
\DoxyCodeLine{183     xbInt32  iFileNo;            \textcolor{comment}{/* Library File No                                      */}}
\DoxyCodeLine{184 }
\DoxyCodeLine{185 \textcolor{preprocessor}{    \#ifdef XB\_LOCKING\_SUPPORT}}
\DoxyCodeLine{186     xbInt16  iLockRetries;       \textcolor{comment}{/* file override number of lock attempts                */}}
\DoxyCodeLine{187 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{188 }
\DoxyCodeLine{189 \textcolor{preprocessor}{    \#ifdef HAVE\_SETENDOFFILE\_F}}
\DoxyCodeLine{190     HANDLE   fHandle;}
\DoxyCodeLine{191 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{192 }
\DoxyCodeLine{193 }
\DoxyCodeLine{194 \};}
\DoxyCodeLine{195 }
\DoxyCodeLine{196 \}        \textcolor{comment}{/* namespace     */}}
\DoxyCodeLine{197 \textcolor{preprocessor}{\#endif   }\textcolor{comment}{/*  \_\_XBFILE\_H\_\_ */}\textcolor{preprocessor}{}}
\DoxyCodeLine{198 }

\end{DoxyCode}