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( xbXBase * x );
60 ~xbFile();
61
62 const xbString& GetDirectory() const;
63 const xbString& GetFileName() const;
64 const xbString& GetFqFileName() const;
65
66
67 xbInt16 CreateUniqueFileName( const xbString &sDirIn, const xbString &sExtIn, xbString &sFqnOut, xbInt16 iOption = 0 );
68
69 xbInt16 DetermineXbaseTableVersion( unsigned char cFileTypeByte ) const;
70 xbInt16 DetermineXbaseMemoVersion( unsigned char cFileTypeByte ) const;
71
72 xbDouble eGetDouble ( const char *p ) const;
73 xbInt32 eGetInt32 ( const char *p ) const;
74 xbUInt32 eGetUInt32 ( const char *p ) const;
75 xbInt16 eGetInt16 ( const char *p ) const;
76 xbUInt16 eGetUInt16 ( const char *p ) const;
77 void ePutDouble ( char *p, xbDouble d );
78 void ePutInt32 ( char *p, xbInt32 l );
79 void ePutUInt32 ( char *p, xbUInt32 ul );
80 void ePutInt16 ( char *p, xbInt16 s );
81 void ePutUInt16 ( char *p, xbUInt16 s );
82
83 xbBool FileExists () const;
84 xbBool FileExists ( xbInt16 iOption ) const;
85 xbBool FileExists ( const xbString &sFileName ) const;
86 xbBool FileExists ( const xbString &sFileName, xbInt16 iOption ) const;
87 xbBool FileIsOpen () const;
88
89 xbUInt32 GetBlockSize () const;
90
91 xbInt16 GetFileDirPart ( xbString &sFileDirPartOut ) const;
92 xbInt16 GetFileDirPart ( const xbString &sCompleteFileNameIn, xbString &sFileDirPartOut ) const;
93 xbInt16 GetFileExtPart ( xbString &sFileExtPartOut ) const;
94 xbInt16 GetFileExtPart ( const xbString &sCompleteFileNameIn, xbString &sFileExtPartOut ) const;
95 xbInt16 GetFileMtime ( time_t &mtime );
96 xbInt16 GetFileNamePart( xbString &sFileNamePartOut ) const;
97 xbInt16 GetFileNamePart( const xbString &sCompleteFileNameIn, xbString &sFileNamePartOut ) const;
98 xbInt16 GetFileSize ( xbUInt64 &ullFileSize );
99 xbInt16 GetFileType ( xbString &sFileType ) const;
100
101
102 xbInt16 GetOpenMode () const;
103 xbInt16 GetShareMode () const;
104
105
106 xbInt16 GetXbaseFileTypeByte( const xbString &sFileName, xbInt16 &iVersion );
107 xbInt16 GetXbaseFileTypeByte( const xbString &sFileName, unsigned char &cFileTypeByte );
108 xbInt16 GetXbaseFileTypeByte( const xbString &sFileName, unsigned char &cFileTypeByte, xbInt16 &iVersion );
109
110 xbInt16 NameSuffixMissing( const xbString &sFileName, xbInt16 iOption ) const;
111
112 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, size_t readSize, void *buf );
113 xbInt16 ReadBlock ( xbUInt32 ulBlockNo, xbUInt32 ulBlockSize, size_t readSize, void *buf );
114
115 xbInt16 SetBlockSize ( xbUInt32 ulBlockSize );
116 void SetDirectory ( const xbString &sDirectory);
117 void SetFileName ( const xbString &sFileName );
118 void SetFqFileName ( const xbString &sFqName );
119 xbInt16 SetHomeFolders();
120
121 xbInt16 WriteBlock ( xbUInt32 ulBlockNo, size_t writeSize, void *buf );
122
123 xbInt16 xbFclose ();
124 xbInt16 xbFeof ();
125 xbInt16 xbFflush ();
126 xbInt16 xbFgetc ( xbInt32 &c );
127 xbInt16 xbFgetc ( char &c );
128 xbInt16 xbFgets ( size_t lSize, xbString &sLine );
129
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 xbFseek ( xbInt64 llOffset, xbInt32 whence );
141 size_t xbFtell ();
142 void xbFTurnOffFileBuffering();
143
144 xbInt16 xbReadUntil ( const char cDelim, xbString &sOut );
145 xbInt16 xbRemove ( const xbString &sFileName, xbInt16 iOption );
146 xbInt16 xbRemove ( const xbString &sFileName );
147 xbInt16 xbRemove ();
148
149 xbInt16 xbRename ( const xbString &sOldName, const xbString &sNewName );
150 void xbRewind ();
151
152 xbInt16 xbFwrite ( const void *ptr, size_t lSize, size_t lNmemb );
153
154 xbInt16 xbTruncate ( xbInt64 llSize );
155
156
157 #ifdef XB_LOCKING_SUPPORT
158 xbInt16 xbLock ( xbInt16 iFunction, xbInt64 llOffset, size_t stLen );
159 xbInt16 GetLockRetryCount() const;
160 void SetLockRetryCount( xbInt16 iLockRetries );
161 #endif
162
163 #ifdef XB_DEBUG_SUPPORT
164 xbInt16 DumpBlockToDisk( xbUInt32 ulBlockNo, size_t lBlockSize );
165 xbInt16 DumpMemToDisk ( char *p, size_t lBlockSize );
166 #endif
167
168
169 protected:
170
171 xbXBase *xbase; /* pointer to the main structures */
172
173 private:
174 FILE *fp;
175 xbString sFqFileName; /* fully qualified file name */
176 xbString sFileName; /* file name */
177 xbString sDirectory; /* directory, ends with / or \ */
178 xbBool bFileOpen; /* true if file is open */
179 xbUInt32 ulBlockSize; /* used for memo and index files */
180
181 xbInt16 iOpenMode; /* XB_READ || XB_READ_WRITE || XB_WRITE */
182 xbInt16 iShareMode; /* XB_SINGLE_USER || XB_MULTI_USER - set file buffering */
183 xbInt32 iFileNo; /* Library File No */
184
185 #ifdef XB_LOCKING_SUPPORT
186 xbInt16 iLockRetries; /* file override number of lock attempts */
187 #endif
188
189 #ifdef HAVE_SETENDOFFILE_F
190 HANDLE fHandle;
191 #endif
192
193
194};
195
196} /* namespace */
197#endif /* __XBFILE_H__ */
198
Class for handling low level file I/O.
Definition: xbfile.h:56
xbInt16 xbFopen(xbInt16 iOpenMode)
xbXBase * xbase
Definition: xbfile.h:171
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