Xbase64 Class Library  3.1.2
xblock.h
Go to the documentation of this file.
1 /* xblock.h
2 
3  Xbase project source code
4 
5  This file conatains a header file for the xbLock virtual objects which
6  is used for controlling file and record locking. Record and file
7  locking has been rewritten in version 3.
8 
9  Copyright (C) 1997,2003 Gary A Kunkel
10 
11  This program is free software; you can redistribute it and/or modify
12  it under the terms of the GNU Lesser General Public License as published by
13  the Free Software Foundation; either version 2 of the License, or
14  (at your option) any later version.
15 
16  This program is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  GNU Lesser General Public License for more details.
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 
44 #ifndef __XB_XBLOCK_H__
45 #define __XB_XBLOCK_H__
46 
47 #ifdef __GNU_LesserG__
48 #pragma interface
49 #endif
50 
51 #ifdef XB_LOCKING_ON
52 
54 
57 class XBDLLEXPORT xbLock
58 {
59 public:
60  xbLock( xbDbf * dbf );
61  virtual ~xbLock();
62  virtual xbShort LockTableHeader( xbShort LockType ) = 0;
63  virtual xbShort LockTable( xbShort LockType ) = 0;
64  virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len ) = 0;
65  virtual xbShort LockMemo( xbShort LockType ) = 0;
66  virtual xbShort LockIndex( xbShort LockType ) = 0;
67  virtual xbShort UnlockAll() = 0;
68  virtual xbShort LockInit() { return XB_NO_ERROR; }
69 
70 protected:
71  xbDbf *dbf;
72  xbShort HdrLockCnt;
73  xbShort TableLockCnt;
74  xbShort MemoLockCnt;
75  xbShort IndexLockCnt;
76  xbShort LockFile( int fn, xbShort LockType, xbOffT lockLen );
77 };
78 
79 class XBDLLEXPORT xbaseLock : xbLock
80 {
81 public:
82  xbaseLock( xbDbf * pdbf );
83  virtual ~xbaseLock() {}
84  virtual xbShort LockTableHeader( xbShort LockType );
85  virtual xbShort LockTable( xbShort LockType );
86  virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
87  virtual xbShort LockMemo( xbShort LockType );
88  virtual xbShort LockIndex( xbShort LockType );
89  virtual xbShort UnlockAll();
90  virtual xbShort LockInit();
91 private:
92  FILE *lfh; /* lock file handle */
93 
94 };
95 
96 class XBDLLEXPORT dbaseLock : xbLock
97 {
98 public:
99  dbaseLock( xbDbf * pdbf );
100  virtual ~dbaseLock() {}
101  virtual xbShort LockTableHeader( xbShort LockType );
102  virtual xbShort LockTable( xbShort LockType );
103  virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
104  virtual xbShort LockMemo( xbShort LockType );
105  virtual xbShort LockIndex( xbShort LockType );
106  virtual xbShort UnlockAll();
107 };
108 
109 
110 class XBDLLEXPORT clipperLock : xbLock
111 {
112 public:
113  clipperLock( xbDbf * pdbf );
114  virtual ~clipperLock() {}
115  virtual xbShort LockTableHeader( xbShort LockType );
116  virtual xbShort LockTable( xbShort LockType );
117  virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
118  virtual xbShort LockMemo( xbShort LockType );
119  virtual xbShort LockIndex( xbShort LockType );
120  virtual xbShort UnlockAll();
121 };
122 
123 class XBDLLEXPORT foxproLock : xbLock
124 {
125 public:
126  foxproLock( xbDbf * pdbf );
127  virtual ~foxproLock() {}
128  virtual xbShort LockTableHeader( xbShort LockType );
129  virtual xbShort LockTable( xbShort LockType );
130  virtual xbShort LockRecord( xbShort LockType, xbULong RecNo, xbOffT len );
131  virtual xbShort LockMemo( xbShort LockType );
132  virtual xbShort LockIndex( xbShort LockType );
133  virtual xbShort UnlockAll();
134 };
135 
136 class XBDLLEXPORT noLock : xbLock
137 {
138 public:
139  noLock( xbDbf * pdbf ) : xbLock( pdbf ) {};
140  virtual ~noLock() {}
141  virtual xbShort LockTableHeader( xbShort LockType )
142  { return XB_NO_ERROR; }
143  virtual xbShort LockTable( xbShort LockType )
144  { return XB_NO_ERROR; }
145  virtual xbShort LockRecord( xbShort LockType, xbULong RecNo )
146  { return XB_NO_ERROR; }
147  virtual xbShort LockMemo( xbShort LockType )
148  { return XB_NO_ERROR; }
149  virtual xbShort LockIndex( xbShort LockType )
150  { return XB_NO_ERROR; }
151  virtual xbShort UnlockAll()
152  { return XB_NO_ERROR; }
153 };
154 
155 
156 
157 
158 #endif // XB_LOCKING_ON
159 #endif // __XB_XBLOCK_H__
#define XBDLLEXPORT
Definition: xbase64.h:87
short int xbShort
xbShort type
Definition: xbtypes.h:60
#define XB_NO_ERROR
Definition: xbretcod.h:50
unsigned long int xbULong
xbULong type
Definition: xbtypes.h:50
long xbOffT
Definition: xbtypes.h:98
xbMH struct
Definition: xbdbf.h:190