summaryrefslogtreecommitdiff
path: root/xbase64/xbase64.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbase64/xbase64.h')
-rwxr-xr-xxbase64/xbase64.h239
1 files changed, 239 insertions, 0 deletions
diff --git a/xbase64/xbase64.h b/xbase64/xbase64.h
new file mode 100755
index 0000000..7267299
--- /dev/null
+++ b/xbase64/xbase64.h
@@ -0,0 +1,239 @@
+/* xbase64.h
+
+ Xbase project source code
+
+ This file contains a header file for the xbXBase class, which is the
+ base class for using the Xbase DBMS library.
+
+ Copyright (C) 1997,2003 Gary A Kunkel
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+ Contact:
+
+ Email:
+
+ xdb-devel@lists.sourceforge.net
+ xdb-users@lists.sourceforge.net
+
+
+ Regular Mail:
+
+ XBase Support
+ 149C South Main St
+ Keller Texas, 76248
+ USA
+
+*/
+
+#ifndef __XB_XBASE_H__
+#define __XB_XBASE_H__
+
+#ifdef __GNU LesserG__
+#pragma interface
+#endif
+
+#ifdef __WIN32__
+#include <xbase64/xbwincfg.h>
+#else
+#include <xbase64/xbconfig.h>
+#endif
+
+#include <string.h>
+
+#if defined(__WIN32__)
+#include "windows.h"
+
+// ripped from wxWindows
+
+// _declspec works in BC++ 5 and later, as well as VC++
+#if defined(__VISUALC__) || defined(__BORLANDC__) || defined(__GNU LesserC__)
+# ifdef XBMAKINGDLL
+# define XBDLLEXPORT __declspec( dllexport )
+# define XBDLLEXPORT_DATA(type) __declspec( dllexport ) type
+# define XBDLLEXPORT_CTORFN
+# elif defined(XBUSINGDLL)
+# define XBDLLEXPORT __declspec( dllimport )
+# define XBDLLEXPORT_DATA(type) __declspec( dllimport ) type
+# define XBDLLEXPORT_CTORFN
+# else
+# define XBDLLEXPORT
+# define XBDLLEXPORT_DATA(type) type
+# define XBDLLEXPORT_CTORFN
+# endif
+
+#else
+
+# define XBDLLEXPORT
+# define XBDLLEXPORT_DATA(type) type
+# define XBDLLEXPORT_CTORFN
+#endif
+
+#else // !Windows
+# define XBDLLEXPORT
+# define XBDLLEXPORT_DATA(type) type
+# define XBDLLEXPORT_CTORFN
+#endif // Win/!Win
+
+
+#define XB_SINGLE_USER_MODE 0
+#define XB_UNLOCK 200
+#define XB_LOCK 201
+#define XB_LOCK_HOLD 202
+
+#ifdef XB_LOCKING_ON
+
+ #ifdef HAVE_SYS_LOCKING_H
+ #include <sys/locking.h>
+ #ifdef __MINGW32__
+ #defibe locking _locking
+ #endif
+ #endif
+
+ #ifdef HAVE_FCNTL_H
+ #include <fcntl.h>
+ #endif
+
+ #ifdef HAVE_UNISTD_H
+ #include <unistd.h>
+ #endif
+
+ #define XB_XBASE_LOCK_MODE 200
+ #define XB_DBASE5_LOCK_MODE 201
+ #define XB_CLIPPER5_LOCK_MODE 202
+ #define XB_FOXPRO3_LOCK_MODE 203
+
+#endif // XB_LOCKING_ON
+
+#include "xbtypes.h"
+#include "xbretcod.h"
+#include "xbdate.h"
+#include "xbstring.h"
+
+#ifndef XB_MIN
+#define XB_MIN(a, b) (((a) < (b)) ? (a) : (b))
+#endif /* XB_MIN */
+
+// 3/18/04 next macro isn't currently used in the library - GK
+//#ifndef XB_MAX
+//#define XB_MAX(a, b) (((a) < (b)) ? (b) : (a))
+//#endif /* XB_MAX */
+
+/*! \file xbase64.h
+*/
+
+class XBDLLEXPORT xbDbf;
+
+//! xbDbList struct
+/*!
+*/
+struct XBDLLEXPORT xbDbList{
+ xbDbList * NextDbf;
+ char * DbfName;
+ xbDbf * dbf;
+};
+
+//! xbXBase class
+/*!
+*/
+class XBDLLEXPORT xbXBase {
+ public:
+ ~xbXBase();
+ xbXBase();
+ xbShort AddDbfToDbfList(xbDbf *d, const char *DatabaseName);
+ xbDbf * GetDbfPtr( const char *Name );
+ xbShort DirectoryExistsInName( const char *Name );
+ xbShort GetEndianType() { return EndianType; }
+ void DisplayError( xbShort ErrorCode ) const;
+ static const char* GetErrorMessage( xbShort ErrorCode );
+ xbString & GetDefaultDateFormat() { return DefaultDateFormat; }
+ void SetDefaultDateFormat( const xbString & f ){ DefaultDateFormat = f; }
+
+ /* next 6 routines handle both big endian and little endian machines */
+ xbDouble GetDouble( const char *p );
+ xbLong GetLong ( const char *p );
+ xbULong GetULong ( const char *p );
+ xbShort GetShort ( const char *p );
+ xbULong GetHBFULong( const char *p );
+ xbShort GetHBFShort ( const char *p );
+
+ void PutLong ( char *p, const xbLong l );
+ void PutShort ( char *p, const xbShort s );
+ void PutULong ( char *p, const xbULong l );
+ void PutUShort( char *p, const xbUShort s );
+ void PutDouble( char *p, const xbDouble d );
+
+ xbShort RemoveDbfFromDbfList( xbDbf * );
+
+#ifdef XB_LOCKING_ON
+ xbShort GetLockRetryCount(){ return LockRetryCount; }
+ void SetLockRetryCount( xbShort lrc ) { LockRetryCount = lrc; }
+ xbShort LockFile( int fn, xbShort type, xbOffT len );
+ xbShort GetLockMode() { return LockMode; }
+ xbShort SetLockMode( xbShort nlm );
+#endif
+
+protected:
+ xbDbList * DbfList;
+ xbDbList * FreeDbfList;
+ xbShort EndianType; /* B = Big Endian, L = Little Endian */
+
+private:
+ xbString DefaultDateFormat;
+
+#ifdef XB_LOCKING_ON
+ xbShort LockRetryCount;
+ xbShort LockMode;
+#endif
+};
+
+#include "xbdbf.h"
+
+#if defined(XB_EXPRESSIONS)
+#include "xbexp.h"
+#endif
+
+#if defined(XB_INDEX_ANY)
+#include "xbindex.h"
+#include "xbmindex.h"
+#endif
+
+#ifdef XB_LOCKING_ON
+#include "xblock.h"
+#endif
+
+#ifdef XB_INDEX_NDX
+#include "xbndx.h"
+#endif
+
+#ifdef XB_INDEX_NTX
+#include "xbntx.h"
+#endif
+
+#ifdef XB_INDEX_CDX
+#include "xbcdx.h"
+#endif
+
+#if defined(XB_FILTERS) && !defined(XB_INDEX_ANY)
+#error XB_FILTERS cant be used without index support
+#elif defined(XB_FILTERS)
+#include "xbfilter.h"
+#endif
+
+#endif // __XB_XBASE_H__
+
+
+