\hypertarget{xbfile_8h_source}{}\doxysection{xbfile.\+h}
\label{xbfile_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.2/src/include/xbfile.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.2/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     xbInt16  xbRename     ( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sOldName, \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sNewName, xbInt16 iOption );}
\DoxyCodeLine{155     \textcolor{keywordtype}{void}     xbRewind     ();}
\DoxyCodeLine{156 }
\DoxyCodeLine{157     xbInt16  xbTruncate   ( xbInt64 llSize );}
\DoxyCodeLine{158     xbInt16  NameSuffixMissing( \textcolor{keyword}{const} \mbox{\hyperlink{classxb_1_1xbString}{xbString}} \&sFileName, xbInt16 iOption ) \textcolor{keyword}{const};}
\DoxyCodeLine{159 }
\DoxyCodeLine{160 \textcolor{preprocessor}{    \#ifdef XB\_DEBUG\_SUPPORT}}
\DoxyCodeLine{161     xbInt16  DumpBlockToDisk( xbUInt32 ulBlockNo, \textcolor{keywordtype}{size\_t} lBlockSize );}
\DoxyCodeLine{162 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{163 }
\DoxyCodeLine{164 }
\DoxyCodeLine{165   \textcolor{keyword}{protected}:}
\DoxyCodeLine{166 }
\DoxyCodeLine{167     \mbox{\hyperlink{classxb_1_1xbXBase}{xbXBase}} *\mbox{\hyperlink{classxb_1_1xbFile_ae39a67ea391b46055d4ca299cb222004}{xbase}};              \textcolor{comment}{/* pointer to the main structures                       */}}
\DoxyCodeLine{168 }
\DoxyCodeLine{169   \textcolor{keyword}{private}:}
\DoxyCodeLine{170     FILE     *fp;}
\DoxyCodeLine{171     \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFqFileName;        \textcolor{comment}{/* fully qualified file name                            */}}
\DoxyCodeLine{172     \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sFileName;          \textcolor{comment}{/* file name                                            */}}
\DoxyCodeLine{173     \mbox{\hyperlink{classxb_1_1xbString}{xbString}} sDirectory;         \textcolor{comment}{/* directory, ends with / or \(\backslash\)                          */}}
\DoxyCodeLine{174     \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}   bFileOpen;          \textcolor{comment}{/* true if file is open                                 */}}
\DoxyCodeLine{175     xbUInt32 ulBlockSize;        \textcolor{comment}{/* used for memo and index files                        */}}
\DoxyCodeLine{176 }
\DoxyCodeLine{177     xbInt16  iOpenMode;          \textcolor{comment}{/* XB\_READ || XB\_READ\_WRITE || XB\_WRITE                 */}}
\DoxyCodeLine{178     xbInt16  iShareMode;         \textcolor{comment}{/* XB\_SINGLE\_USER || XB\_MULTI\_USER -\/ set file buffering */}}
\DoxyCodeLine{179     xbInt32  iFileNo;            \textcolor{comment}{/* Library File No                                      */}}
\DoxyCodeLine{180 }
\DoxyCodeLine{181 \textcolor{preprocessor}{    \#ifdef XB\_LOCKING\_SUPPORT}}
\DoxyCodeLine{182     xbInt16  iLockRetries;       \textcolor{comment}{/* file override number of lock attempts                */}}
\DoxyCodeLine{183 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{184 }
\DoxyCodeLine{185 \textcolor{preprocessor}{    \#ifdef HAVE\_SETENDOFFILE\_F}}
\DoxyCodeLine{186     HANDLE   fHandle;}
\DoxyCodeLine{187 \textcolor{preprocessor}{    \#endif}}
\DoxyCodeLine{188 }
\DoxyCodeLine{189 }
\DoxyCodeLine{190 \};}
\DoxyCodeLine{191 }
\DoxyCodeLine{192 \}        \textcolor{comment}{/* namespace     */}}
\DoxyCodeLine{193 \textcolor{preprocessor}{\#endif   }\textcolor{comment}{/*  \_\_XBFILE\_H\_\_ */}\textcolor{preprocessor}{}}
\DoxyCodeLine{194 }

\end{DoxyCode}
