Xbase64 Class Library
3.1.2
Main Page
Classes
Files
File List
File Members
xbase64
xbase64.h
Go to the documentation of this file.
1
/* xbase64.h
2
3
Xbase project source code
4
5
This file contains a header file for the xbXBase class, which is the
6
base class for using the Xbase DBMS library.
7
8
Copyright (C) 1997,2003 Gary A Kunkel
9
10
This program is free software; you can redistribute it and/or modify
11
it under the terms of the GNU Lesser General Public License as published by
12
the Free Software Foundation; either version 2 of the License, or
13
(at your option) any later version.
14
15
This program is distributed in the hope that it will be useful,
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
GNU Lesser General Public License for more details.
19
20
You should have received a copy of the GNU Lesser General Public License
21
along with this program; if not, write to the Free Software
22
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23
24
25
Contact:
26
27
Email:
28
29
xdb-devel@lists.sourceforge.net
30
xdb-users@lists.sourceforge.net
31
32
33
Regular Mail:
34
35
XBase Support
36
149C South Main St
37
Keller Texas, 76248
38
USA
39
40
*/
41
42
#ifndef __XB_XBASE_H__
43
#define __XB_XBASE_H__
44
45
#ifdef __GNU_LesserG__
46
#pragma interface
47
#endif
48
49
#ifdef __WIN32__
50
#include <
xbase64/xbwincfg.h
>
51
#else
52
#include <
xbase64/xbconfig.h
>
53
#endif
54
55
#include <string.h>
56
57
#if defined(__WIN32__)
58
#include "windows.h"
59
60
// ripped from wxWindows
61
62
// _declspec works in BC++ 5 and later, as well as VC++
63
#if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNU_LesserC__)
64
# ifdef XBMAKINGDLL
65
# define XBDLLEXPORT __declspec( dllexport )
66
# define XBDLLEXPORT_DATA(type) __declspec( dllexport ) type
67
# define XBDLLEXPORT_CTORFN
68
# elif defined(XBUSINGDLL)
69
# define XBDLLEXPORT __declspec( dllimport )
70
# define XBDLLEXPORT_DATA(type) __declspec( dllimport ) type
71
# define XBDLLEXPORT_CTORFN
72
# else
73
# define XBDLLEXPORT
74
# define XBDLLEXPORT_DATA(type) type
75
# define XBDLLEXPORT_CTORFN
76
# endif
77
78
#else
79
80
# define XBDLLEXPORT
81
# define XBDLLEXPORT_DATA(type) type
82
# define XBDLLEXPORT_CTORFN
83
#endif
84
85
#else // !Windows
86
# define XBDLLEXPORT
87
# define XBDLLEXPORT_DATA(type) type
88
# define XBDLLEXPORT_CTORFN
89
#endif // Win/!Win
90
91
92
#define XB_SINGLE_USER_MODE 0
93
#define XB_UNLOCK 200
94
#define XB_LOCK 201
95
#define XB_LOCK_HOLD 202
96
97
#ifdef XB_LOCKING_ON
98
99
#ifdef HAVE_SYS_LOCKING_H
100
#include <sys/locking.h>
101
#ifdef __MINGW32__
102
#defibe locking _locking
103
#endif
104
#endif
105
106
#ifdef HAVE_FCNTL_H
107
#include <fcntl.h>
108
#endif
109
110
#ifdef HAVE_UNISTD_H
111
#include <unistd.h>
112
#endif
113
114
#define XB_XBASE_LOCK_MODE 200
115
#define XB_DBASE5_LOCK_MODE 201
116
#define XB_CLIPPER5_LOCK_MODE 202
117
#define XB_FOXPRO3_LOCK_MODE 203
118
119
#endif // XB_LOCKING_ON
120
121
#include "
xbtypes.h
"
122
#include "
xbretcod.h
"
123
#include "
xbdate.h
"
124
#include "
xbstring.h
"
125
126
#ifndef XB_MIN
127
#define XB_MIN(a, b) (((a) < (b)) ? (a) : (b))
128
#endif
/* XB_MIN */
129
130
// 3/18/04 next macro isn't currently used in the library - GK
131
//#ifndef XB_MAX
132
//#define XB_MAX(a, b) (((a) < (b)) ? (b) : (a))
133
//#endif /* XB_MAX */
134
138
class
XBDLLEXPORT
xbDbf
;
139
141
143
struct
XBDLLEXPORT
xbDbList
{
144
xbDbList
*
NextDbf
;
145
char
*
DbfName
;
146
xbDbf
*
dbf
;
147
};
148
150
152
class
XBDLLEXPORT
xbXBase
{
153
public
:
154
~
xbXBase
();
155
xbXBase
();
156
xbShort
AddDbfToDbfList(
xbDbf
*d,
const
char
*DatabaseName);
157
xbDbf
* GetDbfPtr(
const
char
*Name );
158
xbShort
DirectoryExistsInName(
const
char
*Name );
159
xbShort
GetEndianType
() {
return
EndianType; }
160
void
DisplayError(
xbShort
ErrorCode )
const
;
161
static
const
char
* GetErrorMessage(
xbShort
ErrorCode );
162
xbString
&
GetDefaultDateFormat
() {
return
DefaultDateFormat; }
163
void
SetDefaultDateFormat
(
const
xbString
& f ){ DefaultDateFormat = f; }
164
165
/* next 6 routines handle both big endian and little endian machines */
166
xbDouble
GetDouble(
const
char
*p );
167
xbLong
GetLong (
const
char
*p );
168
xbULong
GetULong (
const
char
*p );
169
xbShort
GetShort (
const
char
*p );
170
xbULong
GetHBFULong(
const
char
*p );
171
xbShort
GetHBFShort (
const
char
*p );
172
173
void
PutLong (
char
*p,
const
xbLong
l );
174
void
PutShort (
char
*p,
const
xbShort
s );
175
void
PutULong (
char
*p,
const
xbULong
l );
176
void
PutUShort(
char
*p,
const
xbUShort
s );
177
void
PutDouble(
char
*p,
const
xbDouble
d );
178
179
xbShort
RemoveDbfFromDbfList(
xbDbf
* );
180
181
#ifdef XB_LOCKING_ON
182
xbShort
GetLockRetryCount(){
return
LockRetryCount; }
183
void
SetLockRetryCount(
xbShort
lrc ) { LockRetryCount = lrc; }
184
xbShort
LockFile(
int
fn,
xbShort
type,
xbOffT
len );
185
xbShort
GetLockMode() {
return
LockMode; }
186
xbShort
SetLockMode(
xbShort
nlm );
187
#endif
188
189
protected
:
190
xbDbList
*
DbfList
;
191
xbDbList
*
FreeDbfList
;
192
xbShort
EndianType
;
/* B = Big Endian, L = Little Endian */
193
194
private
:
195
xbString
DefaultDateFormat;
196
197
#ifdef XB_LOCKING_ON
198
xbShort
LockRetryCount;
199
xbShort
LockMode;
200
#endif
201
};
202
203
#include "
xbdbf.h
"
204
205
#if defined(XB_EXPRESSIONS)
206
#include "
xbexp.h
"
207
#endif
208
209
#if defined(XB_INDEX_ANY)
210
#include "
xbindex.h
"
211
#include "
xbmindex.h
"
212
#endif
213
214
#ifdef XB_LOCKING_ON
215
#include "
xblock.h
"
216
#endif
217
218
#ifdef XB_INDEX_NDX
219
#include "
xbndx.h
"
220
#endif
221
222
#ifdef XB_INDEX_NTX
223
#include "
xbntx.h
"
224
#endif
225
226
#ifdef XB_INDEX_CDX
227
#include "
xbcdx.h
"
228
#endif
229
230
#if defined(XB_FILTERS) && !defined(XB_INDEX_ANY)
231
#error XB_FILTERS cant be used without index support
232
#elif defined(XB_FILTERS)
233
#include "
xbfilter.h
"
234
#endif
235
236
#endif // __XB_XBASE_H__
237
238
239
Generated by
1.8.4