summaryrefslogtreecommitdiff
path: root/docs/doxygen/latex/xbfile_8h_source.tex
blob: 506fe71038adeb41c7343a7b0e89c0e520c53635 (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
\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}