Xbase64 4.0.1
C++ Library for handling Xbase (DBF) format type files
xbfile.h
Go to the documentation of this file.
1/* xbfile.h
2
3XBase64 Software Library
4
5Copyright (c) 1997,2003,2014,2022 Gary A Kunkel
6
7The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.
8
9Email Contact:
10
11 XDB-devel@lists.sourceforge.net
12 XDB-users@lists.sourceforge.net
13
14*/
15
16#ifndef __XB_FILE_H__
17#define __XB_FILE_H__
18
19#ifdef CMAKE_COMPILER_IS_GNUCC
20#pragma interface
21#endif
22
23/*****************************/
24/* File Open Modes */
25#define XB_READ 0
26#define XB_READ_WRITE 1
27#define XB_WRITE 2
28
29/*****************************/
30/* File Access Modes */
31#define XB_SINGLE_USER 0 // file buffering on
32#define XB_MULTI_USER 1 // file buffering off
33
34namespace xb{
35
56class XBDLLEXPORT xbFile : public xbSsv {
57
58 public:
59 // xbFile();
60 xbFile( xbXBase * x );
61
62 ~xbFile();
63 xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut );
64 xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut, xbInt16 iOption );
65
66 const xbString& GetDirectory() const;
67 const xbString& GetFileName() const;
68 const xbString& GetFqFileName() const;
69
70 void SetDirectory ( const xbString &sDirectory);
71 void SetFileName ( const xbString &sFileName );
72 void SetFqFileName( const xbString &sFqName );
73
74 xbUInt32 GetBlockSize () const;
75 xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );
76
77 xbInt16 GetOpenMode () const;
78 xbInt16 GetShareMode () const;
79
80 xbInt16 GetFileDirPart ( xbString &sFileDirPartOut ) const;
81 xbInt16 GetFileDirPart ( const xbString &sCompleteFileNameIn, xbString &sFileDirPartOut ) const;
82 xbInt16 GetFileExtPart ( xbString &sFileExtPartOut ) const;
83 xbInt16 GetFileExtPart ( const xbString &sCompleteFileNameIn, xbString &sFileExtPartOut ) const;
84 xbInt16 GetFileNamePart( xbString &sFileNamePartOut ) const;
85 xbInt16 GetFileNamePart( const xbString &sCompleteFileNameIn, xbString &sFileNamePartOut ) const;
86 xbInt16 GetFileType ( xbString &sFileType ) const;
87
88 xbInt16 GetXbaseFileTypeByte( const xbString &sFileName, xbInt16 &iVersion );
89 xbInt16 GetXbaseFileTypeByte( const xbString &sFileName, unsigned char &cFileTypeByte );
90 xbInt16 GetXbaseFileTypeByte( const xbString &sFileName, unsigned char &cFileTypeByte, xbInt16 &iVersion );
91 xbInt16 DetermineXbaseTableVersion( unsigned char cFileTypeByte ) const;
92 xbInt16 DetermineXbaseMemoVersion( unsigned char cFileTypeByte ) const;
93
94 xbBool FileExists () const;
95 xbBool FileExists ( xbInt16 iOption ) const;
96 xbBool FileExists ( const xbString &sFileName ) const;
97 xbBool FileExists ( const xbString &sFileName, xbInt16 iOption ) const;
98
99 xbBool FileIsOpen () const;
100
101 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, size_t readSize, void *buf );
102 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, size_t readSize, void *buf );
103 xbInt16 WriteBlock( xbUInt32 ulBlockNo, size_t writeSize, void *buf );
104
105 xbInt16 GetFileSize( xbUInt64 &ullFileSize );
106 xbInt16 GetFileMtime( time_t &mtime );
107
108 xbDouble eGetDouble( const char *p ) const;
109 xbInt32 eGetInt32 ( const char *p ) const;
110 xbUInt32 eGetUInt32( const char *p ) const;
111 xbInt16 eGetInt16 ( const char *p ) const;
112 xbUInt16 eGetUInt16( const char *p ) const;
113 void ePutDouble( char *p, xbDouble d );
114 void ePutInt32 ( char *p, xbInt32 l );
115 void ePutUInt32( char *p, xbUInt32 ul );
116 void ePutInt16 ( char *p, xbInt16 s );
117 void ePutUInt16( char *p, xbUInt16 s );
118
119 xbInt16 xbFclose ();
120 xbInt16 xbFeof ();
121 xbInt16 xbFflush ();
122 xbInt16 xbFgetc ( xbInt32 &c );
123 xbInt16 xbFgetc ( char &c );
124
125 #ifdef XB_LOCKING_SUPPORT
126 xbInt16 xbLock ( xbInt16 iFunction, xbInt64 llOffset, size_t stLen );
127 xbInt16 GetLockRetryCount() const;
128 void SetLockRetryCount( xbInt16 iLockRetries );
129 #endif
130
131 xbInt16 xbFopen ( xbInt16 iOpenMode );
132 xbInt16 xbFopen ( const xbString &sOpenMode, xbInt16 iShareMode );
133 xbInt16 xbFopen ( xbInt16 iOpenMode, xbInt16 iShareMode );
134 xbInt16 xbFopen ( const xbString &sMode, const xbString &sFileName, xbInt16 iShareMode );
135
136 xbInt16 xbFputc ( xbInt32 c );
137 xbInt16 xbFputc ( xbInt32 c, xbInt32 iNoTimes );
138 xbInt16 xbFputs ( const xbString &s );
139 xbInt16 xbFread ( void *ptr, size_t size, size_t nmemb );
140 xbInt16 xbFgets ( size_t lSize, xbString &sLine );
141
142 size_t xbFtell ();
143 xbInt16 xbFseek ( xbInt64 llOffset, xbInt32 whence );
144
145 void xbFTurnOffFileBuffering();
146 xbInt16 xbFwrite ( const void *ptr, size_t lSize, size_t lNmemb );
147
148 xbInt16 xbReadUntil ( const char cDelim, xbString &sOut );
149 xbInt16 xbRemove ( const xbString &sFileName, xbInt16 iOption );
150 xbInt16 xbRemove ( const xbString &sFileName );
151 xbInt16 xbRemove ();
152
153 xbInt16 xbRename ( const xbString &sOldName, const xbString &sNewName );
154 xbInt16 xbRename ( const xbString &sOldName, const xbString &sNewName, xbInt16 iOption );
155 void xbRewind ();
156
157 xbInt16 xbTruncate ( xbInt64 llSize );
158 xbInt16 NameSuffixMissing( const xbString &sFileName, xbInt16 iOption ) const;
159
160 #ifdef XB_DEBUG_SUPPORT
161 xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlockSize );
162 #endif
163
164
165 protected:
166
167 xbXBase *xbase; /* pointer to the main structures */
168
169 private:
170 FILE *fp;
171 xbString sFqFileName; /* fully qualified file name */
172 xbString sFileName; /* file name */
173 xbString sDirectory; /* directory, ends with / or \ */
174 xbBool bFileOpen; /* true if file is open */
175 xbUInt32 ulBlockSize; /* used for memo and index files */
176
177 xbInt16 iOpenMode; /* XB_READ || XB_READ_WRITE || XB_WRITE */
178 xbInt16 iShareMode; /* XB_SINGLE_USER || XB_MULTI_USER - set file buffering */
179 xbInt32 iFileNo; /* Library File No */
180
181 #ifdef XB_LOCKING_SUPPORT
182 xbInt16 iLockRetries; /* file override number of lock attempts */
183 #endif
184
185 #ifdef HAVE_SETENDOFFILE_F
186 HANDLE fHandle;
187 #endif
188
189
190};
191
192} /* namespace */
193#endif /* __XBFILE_H__ */
194
Class for handling low level file I/O.
Definition: xbfile.h:56
xbInt16 xbFopen(xbInt16 iOpenMode)
xbXBase * xbase
Definition: xbfile.h:167
Class for handling shared system variables.
Definition: xbssv.h:59
Class for handling string data.
Definition: xbstring.h:50
xbXbase class.
Definition: xbxbase.h:123
Definition: xbdate.cpp:19
double xbDouble
Definition: xbtypes.h:23
short int xbBool
Definition: xbtypes.h:24