summaryrefslogtreecommitdiff
path: root/xbase64/xblock.h
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2014-08-02 08:43:31 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2014-08-02 08:43:31 +0200
commitdaf17154bf13139d9375f48525d19d6aaba08155 (patch)
treee3c08b6c49dc8a8e83f03327591310546675b43d /xbase64/xblock.h
Imported Upstream version 3.1.2upstream/3.1.2
Diffstat (limited to 'xbase64/xblock.h')
-rwxr-xr-xxbase64/xblock.h159
1 files changed, 159 insertions, 0 deletions
diff --git a/xbase64/xblock.h b/xbase64/xblock.h
new file mode 100755
index 0000000..50dfcf2
--- /dev/null
+++ b/xbase64/xblock.h
@@ -0,0 +1,159 @@
+/* xblock.h
+
+ Xbase project source code
+
+ This file conatains a header file for the xbLock virtual objects which
+ is used for controlling file and record locking. Record and file
+ locking has been rewritten in version 3.
+
+ 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
+*/
+
+/*! \file xblock.h
+*/
+
+#ifndef __XB_XBLOCK_H__
+#define __XB_XBLOCK_H__
+
+#ifdef __GNU LesserG__
+#pragma interface
+#endif
+
+#ifdef XB_LOCKING_ON
+
+//! xbLock class
+/*!
+*/
+
+class XBDLLEXPORT xbLock
+{
+public:
+ xbLock( xbDbf * dbf );
+ virtual ~xbLock();
+ virtual xbShort LockTableHeader( xbShort LockType ) = 0;
+ virtual xbShort LockTable( xbShort LockType ) = 0;
+ virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len ) = 0;
+ virtual xbShort LockMemo( xbShort LockType ) = 0;
+ virtual xbShort LockIndex( xbShort LockType ) = 0;
+ virtual xbShort UnlockAll() = 0;
+ virtual xbShort LockInit() { return XB_NO_ERROR; }
+
+protected:
+ xbDbf *dbf;
+ xbShort HdrLockCnt;
+ xbShort TableLockCnt;
+ xbShort MemoLockCnt;
+ xbShort IndexLockCnt;
+ xbShort LockFile( int fn, xbShort LockType, xbOffT lockLen );
+};
+
+class XBDLLEXPORT xbaseLock : xbLock
+{
+public:
+ xbaseLock( xbDbf * pdbf );
+ virtual ~xbaseLock() {}
+ virtual xbShort LockTableHeader( xbShort LockType );
+ virtual xbShort LockTable( xbShort LockType );
+ virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
+ virtual xbShort LockMemo( xbShort LockType );
+ virtual xbShort LockIndex( xbShort LockType );
+ virtual xbShort UnlockAll();
+ virtual xbShort LockInit();
+private:
+ FILE *lfh; /* lock file handle */
+
+};
+
+class XBDLLEXPORT dbaseLock : xbLock
+{
+public:
+ dbaseLock( xbDbf * pdbf );
+ virtual ~dbaseLock() {}
+ virtual xbShort LockTableHeader( xbShort LockType );
+ virtual xbShort LockTable( xbShort LockType );
+ virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
+ virtual xbShort LockMemo( xbShort LockType );
+ virtual xbShort LockIndex( xbShort LockType );
+ virtual xbShort UnlockAll();
+};
+
+
+class XBDLLEXPORT clipperLock : xbLock
+{
+public:
+ clipperLock( xbDbf * pdbf );
+ virtual ~clipperLock() {}
+ virtual xbShort LockTableHeader( xbShort LockType );
+ virtual xbShort LockTable( xbShort LockType );
+ virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
+ virtual xbShort LockMemo( xbShort LockType );
+ virtual xbShort LockIndex( xbShort LockType );
+ virtual xbShort UnlockAll();
+};
+
+class XBDLLEXPORT foxproLock : xbLock
+{
+public:
+ foxproLock( xbDbf * pdbf );
+ virtual ~foxproLock() {}
+ virtual xbShort LockTableHeader( xbShort LockType );
+ virtual xbShort LockTable( xbShort LockType );
+ virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
+ virtual xbShort LockMemo( xbShort LockType );
+ virtual xbShort LockIndex( xbShort LockType );
+ virtual xbShort UnlockAll();
+};
+
+class XBDLLEXPORT noLock : xbLock
+{
+public:
+ noLock( xbDbf * pdbf ) : xbLock( pdbf ) {};
+ virtual ~noLock() {}
+ virtual xbShort LockTableHeader( xbShort LockType )
+ { return XB_NO_ERROR; }
+ virtual xbShort LockTable( xbShort LockType )
+ { return XB_NO_ERROR; }
+ virtual xbShort LockRecord( xbShort LockType, xbULong RecNo )
+ { return XB_NO_ERROR; }
+ virtual xbShort LockMemo( xbShort LockType )
+ { return XB_NO_ERROR; }
+ virtual xbShort LockIndex( xbShort LockType )
+ { return XB_NO_ERROR; }
+ virtual xbShort UnlockAll()
+ { return XB_NO_ERROR; }
+};
+
+
+
+
+#endif // XB_LOCKING_ON
+#endif // __XB_XBLOCK_H__