summaryrefslogtreecommitdiff
path: root/docs/doxygen/latex/xbmemo_8h_source.tex
blob: a948e02fc95b221fd13b64f026a4c5310d541546 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
\hypertarget{xbmemo_8h_source}{}\doxysection{xbmemo.\+h}
\label{xbmemo_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.0.2/src/include/xbmemo.h@{/mnt/1Tdata/xbase/xbase64-\/4.0.2/src/include/xbmemo.h}}
\mbox{\hyperlink{xbmemo_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 \textcolor{comment}{/*  xbmemo.h}}
\DoxyCodeLine{2 \textcolor{comment}{}}
\DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}}
\DoxyCodeLine{4 \textcolor{comment}{}}
\DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}}
\DoxyCodeLine{6 \textcolor{comment}{}}
\DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}}
\DoxyCodeLine{8 \textcolor{comment}{}}
\DoxyCodeLine{9 \textcolor{comment}{Email Contact:}}
\DoxyCodeLine{10 \textcolor{comment}{}}
\DoxyCodeLine{11 \textcolor{comment}{    XDB-\/devel@lists.sourceforge.net}}
\DoxyCodeLine{12 \textcolor{comment}{    XDB-\/users@lists.sourceforge.net}}
\DoxyCodeLine{13 \textcolor{comment}{}}
\DoxyCodeLine{14 \textcolor{comment}{*/}}
\DoxyCodeLine{15 }
\DoxyCodeLine{16 }
\DoxyCodeLine{17 \textcolor{preprocessor}{\#ifndef \_\_XB\_XBMEMO\_H\_\_}}
\DoxyCodeLine{18 \textcolor{preprocessor}{\#define \_\_XB\_XBMEMO\_H\_\_}}
\DoxyCodeLine{19 }
\DoxyCodeLine{20 }
\DoxyCodeLine{21 \textcolor{comment}{// dont use "{}\#pragma interface"{} with abstract classes}}
\DoxyCodeLine{22 \textcolor{comment}{// \#ifdef  CMAKE\_COMPILER\_IS\_GNUCC}}
\DoxyCodeLine{23 \textcolor{comment}{// \#pragma interface}}
\DoxyCodeLine{24 \textcolor{comment}{// \#endif}}
\DoxyCodeLine{25 }
\DoxyCodeLine{26 \textcolor{preprocessor}{\#ifdef XB\_MEMO\_SUPPORT}}
\DoxyCodeLine{27 }
\DoxyCodeLine{28 }
\DoxyCodeLine{29 }
\DoxyCodeLine{30 }
\DoxyCodeLine{31 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespacexb}{xb}}\{}
\DoxyCodeLine{32 }
\DoxyCodeLine{34 }
\DoxyCodeLine{55 \textcolor{keyword}{class }XBDLLEXPORT xbMemo : \textcolor{keyword}{public} xbFile \{}
\DoxyCodeLine{56  \textcolor{keyword}{public}:}
\DoxyCodeLine{57 }
\DoxyCodeLine{58   xbMemo( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf, xbString \textcolor{keyword}{const} \&sFileName );}
\DoxyCodeLine{59 }
\DoxyCodeLine{60   \textcolor{comment}{/* virtual methods */}}
\DoxyCodeLine{61   \textcolor{keyword}{virtual} \string~xbMemo();}
\DoxyCodeLine{62   \textcolor{keyword}{virtual} xbInt16 Abort              () = 0;}
\DoxyCodeLine{63   \textcolor{keyword}{virtual} xbInt16 CloseMemoFile      ();}
\DoxyCodeLine{64   \textcolor{keyword}{virtual} xbInt16 Commit             () = 0;}
\DoxyCodeLine{65 }
\DoxyCodeLine{66 \textcolor{preprocessor}{  \#ifdef XB\_LOCKING\_SUPPORT}}
\DoxyCodeLine{67   \textcolor{keyword}{virtual} xbInt16 LockMemo           ( xbInt16 iLockFunction );}
\DoxyCodeLine{68   \textcolor{keyword}{virtual} \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}}  GetMemoLocked      () \textcolor{keyword}{const};}
\DoxyCodeLine{69 \textcolor{preprocessor}{  \#endif}}
\DoxyCodeLine{70 }
\DoxyCodeLine{71   \textcolor{comment}{/* pure virtual methods */}}
\DoxyCodeLine{72   \textcolor{keyword}{virtual} xbInt16 CreateMemoFile () = 0;}
\DoxyCodeLine{73   }
\DoxyCodeLine{74   \textcolor{keyword}{virtual} xbInt16 GetMemoField   ( xbInt16 iFieldNo, xbString \&sMemoData ) = 0;}
\DoxyCodeLine{75   \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen( xbInt16 iFieldNo, xbUInt32 \&ulMemoFieldLen ) = 0;}
\DoxyCodeLine{76   \textcolor{keyword}{virtual} xbInt16 OpenMemoFile   () = 0;}
\DoxyCodeLine{77   \textcolor{keyword}{virtual} xbInt16 GetMemoFileType();}
\DoxyCodeLine{78   \textcolor{keyword}{virtual} xbInt16 PackMemo       ( \textcolor{keywordtype}{void} (*memoStatusFunc)(xbUInt32 ulItemNum, xbUInt32 ulNumItems)) = 0;}
\DoxyCodeLine{79   \textcolor{keyword}{virtual} xbInt16 UpdateMemoField( xbInt16 iFieldNo, \textcolor{keyword}{const} xbString \&sMemoData ) = 0;}
\DoxyCodeLine{80 }
\DoxyCodeLine{81 \textcolor{preprocessor}{  \#ifdef XB\_DEBUG\_SUPPORT}}
\DoxyCodeLine{82   \textcolor{keyword}{virtual} xbInt16 DumpMemoFreeChain() = 0;}
\DoxyCodeLine{83   \textcolor{keyword}{virtual} xbInt16 DumpMemoHeader () = 0;}
\DoxyCodeLine{84 \textcolor{preprocessor}{  \#endif}}
\DoxyCodeLine{85 }
\DoxyCodeLine{86   \textcolor{comment}{// *********** FIXME *************}}
\DoxyCodeLine{87   \textcolor{comment}{// next two methods should be protected but are called in the xb\_test\_xxxx programs testing routines}}
\DoxyCodeLine{88   \textcolor{comment}{// so for now, they are kept as public}}
\DoxyCodeLine{89   \textcolor{keyword}{virtual} xbInt16 CalcLastDataBlock  ( xbUInt32 \&lLastDataBlock );}
\DoxyCodeLine{90   \textcolor{keyword}{virtual} xbInt16 GetHdrNextBlock    ( xbUInt32 \&ulBlockNo );}
\DoxyCodeLine{91 }
\DoxyCodeLine{92  \textcolor{keyword}{protected}:}
\DoxyCodeLine{93   \textcolor{keyword}{friend}  \textcolor{keyword}{class   }\mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}};}
\DoxyCodeLine{94 }
\DoxyCodeLine{95   \textcolor{keyword}{virtual} xbInt16 ReadDbtHeader     ( xbInt16 iOption ) = 0;}
\DoxyCodeLine{96   \textcolor{keyword}{virtual} xbInt16 UpdateHeaderName  () = 0;}
\DoxyCodeLine{97   \textcolor{keyword}{virtual} xbInt16 UpdateHeadNextNode();}
\DoxyCodeLine{98   \textcolor{keyword}{virtual} xbInt16 Zap            () = 0;}
\DoxyCodeLine{99 }
\DoxyCodeLine{100   \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}}    *dbf;                 \textcolor{comment}{/* pointer to related dbf instance                                   */}}
\DoxyCodeLine{101   \textcolor{keywordtype}{char}     cVersion;             \textcolor{comment}{/* byte 16 off the header block, 0x03 for V3, version IV -\/ ?         */}}
\DoxyCodeLine{102   xbInt16  iMemoFileType;        \textcolor{comment}{/* 3 = version  III, 4 = version IV                                  */}}
\DoxyCodeLine{103   xbUInt32 ulHdrNextBlock;       \textcolor{comment}{/* next available block , bytes 0-\/3 of the memo header               */}}
\DoxyCodeLine{104   \textcolor{keywordtype}{void} *   mbb;                  \textcolor{comment}{/* memo block buffer                                                 */}}
\DoxyCodeLine{105 }
\DoxyCodeLine{106 }
\DoxyCodeLine{107  \textcolor{keyword}{private}:}
\DoxyCodeLine{108 }
\DoxyCodeLine{109 \textcolor{preprocessor}{  \#ifdef XB\_LOCKING\_SUPPORT}}
\DoxyCodeLine{110   \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bFileLocked;           \textcolor{comment}{/* memo file locked */}}
\DoxyCodeLine{111 \textcolor{preprocessor}{  \#endif}}
\DoxyCodeLine{112 }
\DoxyCodeLine{113 \};}
\DoxyCodeLine{114 }
\DoxyCodeLine{115 }
\DoxyCodeLine{116 }
\DoxyCodeLine{117 \textcolor{preprocessor}{\#ifdef XB\_DBF3\_SUPPORT}}
\DoxyCodeLine{119 }
\DoxyCodeLine{131 \textcolor{keyword}{class }XBDLLEXPORT xbMemoDbt3 : \textcolor{keyword}{public} xbMemo \{}
\DoxyCodeLine{132  \textcolor{keyword}{public}:}
\DoxyCodeLine{133   xbMemoDbt3( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf, xbString \textcolor{keyword}{const} \&sFileName );}
\DoxyCodeLine{134   \string~xbMemoDbt3();}
\DoxyCodeLine{135   \textcolor{keyword}{virtual} xbInt16 Abort          ();}
\DoxyCodeLine{136   \textcolor{keyword}{virtual} xbInt16 Commit         ();}
\DoxyCodeLine{137   \textcolor{keyword}{virtual} xbInt16 CreateMemoFile ();}
\DoxyCodeLine{138   \textcolor{keyword}{virtual} xbInt16 GetMemoField   ( xbInt16 iFieldNo, xbString \&sMemoData );}
\DoxyCodeLine{139   \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen( xbInt16 iFieldNo, xbUInt32 \&ulMemoFieldLen );}
\DoxyCodeLine{140   \textcolor{keyword}{virtual} xbInt16 OpenMemoFile   ();}
\DoxyCodeLine{141   \textcolor{keyword}{virtual} xbInt16 PackMemo       ( \textcolor{keywordtype}{void} (*memoStatusFunc) (xbUInt32 ulItemNum, xbUInt32 ulNumItems));}
\DoxyCodeLine{142   \textcolor{keyword}{virtual} xbInt16 UpdateMemoField( xbInt16 iFieldNo, \textcolor{keyword}{const} xbString \&sMemoData );}
\DoxyCodeLine{143 }
\DoxyCodeLine{144 \textcolor{preprocessor}{  \#ifdef XB\_DEBUG\_SUPPORT}}
\DoxyCodeLine{145   \textcolor{keyword}{virtual} xbInt16 DumpMemoFreeChain();}
\DoxyCodeLine{146   \textcolor{keyword}{virtual} xbInt16 DumpMemoHeader ();}
\DoxyCodeLine{147 \textcolor{preprocessor}{  \#endif}}
\DoxyCodeLine{148 }
\DoxyCodeLine{149  \textcolor{keyword}{protected}:}
\DoxyCodeLine{150   \textcolor{keyword}{virtual} xbInt16 ReadDbtHeader( xbInt16 iOption );}
\DoxyCodeLine{151   \textcolor{keyword}{virtual} xbInt16 UpdateHeaderName();}
\DoxyCodeLine{152   \textcolor{keyword}{virtual} xbInt16 Zap();}
\DoxyCodeLine{153 }
\DoxyCodeLine{154  \textcolor{keyword}{private}:}
\DoxyCodeLine{155 \};}
\DoxyCodeLine{156 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{157 }
\DoxyCodeLine{158 }
\DoxyCodeLine{159 \textcolor{preprocessor}{\#ifdef XB\_DBF4\_SUPPORT}}
\DoxyCodeLine{160 }
\DoxyCodeLine{162 }
\DoxyCodeLine{172 \textcolor{keyword}{class }XBDLLEXPORT xbMemoDbt4 : \textcolor{keyword}{public} xbMemo \{}
\DoxyCodeLine{173  \textcolor{keyword}{public}:}
\DoxyCodeLine{174   xbMemoDbt4( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf, xbString \textcolor{keyword}{const} \&sFileName );}
\DoxyCodeLine{175   \string~xbMemoDbt4();}
\DoxyCodeLine{176   \textcolor{keyword}{virtual} xbInt16 Abort              ();}
\DoxyCodeLine{177   \textcolor{keyword}{virtual} xbInt16 Commit             ();}
\DoxyCodeLine{178   \textcolor{keyword}{virtual} xbInt16 CreateMemoFile     ();}
\DoxyCodeLine{179 }
\DoxyCodeLine{180   \textcolor{keyword}{virtual} xbInt16 GetMemoField       ( xbInt16 iFieldNo, xbString \&sMemoData );}
\DoxyCodeLine{181   \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen    ( xbInt16 iFieldNo, xbUInt32 \&ulMemoFieldLen );}
\DoxyCodeLine{182   \textcolor{keyword}{virtual} xbInt16 GetMemoFieldLen    ( xbInt16 iFieldNo, xbUInt32 \&ulMemoFieldLen, xbUInt32 \&lBlockNo );}
\DoxyCodeLine{183   \textcolor{keyword}{virtual} xbInt16 OpenMemoFile       ();}
\DoxyCodeLine{184   \textcolor{keyword}{virtual} xbInt16 PackMemo           ( \textcolor{keywordtype}{void} (*memoStatusFunc) (xbUInt32 ulItemNum, xbUInt32 ulNumItems));}
\DoxyCodeLine{185   \textcolor{keyword}{virtual} xbInt16 UpdateMemoField    ( xbInt16 iFieldNo, \textcolor{keyword}{const} xbString \&sMemoData );}
\DoxyCodeLine{186 }
\DoxyCodeLine{187 \textcolor{preprocessor}{  \#ifdef XB\_DEBUG\_SUPPORT}}
\DoxyCodeLine{188   \textcolor{keyword}{virtual} xbInt16 DumpMemoFreeChain  ();}
\DoxyCodeLine{189   \textcolor{keyword}{virtual} xbInt16 DumpMemoHeader     ();}
\DoxyCodeLine{190   \textcolor{keyword}{virtual} xbInt16 DumpMemoInternals  ();}
\DoxyCodeLine{191   \textcolor{keyword}{virtual} xbInt16 ReadFreeBlockHeader( xbUInt32 ulBlockNo, xbUInt32 \&ulNextBlock, xbUInt32 \&ulFreeBlockCnt );}
\DoxyCodeLine{192 \textcolor{preprocessor}{  \#endif}}
\DoxyCodeLine{193 }
\DoxyCodeLine{194  \textcolor{keyword}{protected}:}
\DoxyCodeLine{195   \textcolor{keyword}{virtual} xbInt16 FindBlockSetInChain( xbUInt32 ulBlocksNeeded, xbUInt32 \&ulLastDataBlock, xbUInt32 \&ulLocation, xbUInt32 \&ulPrevNode, \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} \&bFound );}
\DoxyCodeLine{196   \textcolor{keyword}{virtual} xbInt16 FreeMemoBlockChain( xbUInt32 ulBlockNo );}
\DoxyCodeLine{197   \textcolor{keyword}{virtual} xbInt16 FreeMemoBlockChain( xbUInt32 ulBlockNo, xbUInt32 \&ulLastDataBlock );}
\DoxyCodeLine{198   \textcolor{keyword}{virtual} xbInt16 GetBlockSetFromChain( xbUInt32 ulBlocksNeeded, xbUInt32 ulLocation, xbUInt32 ulPrevNode );}
\DoxyCodeLine{199   \textcolor{keyword}{virtual} xbInt16 ReadDbtHeader( xbInt16 iOption );}
\DoxyCodeLine{200   \textcolor{keyword}{virtual} xbInt16 ReadBlockHeader( xbUInt32 ulBlockNo, xbInt16 iOption );}
\DoxyCodeLine{201   \textcolor{keyword}{virtual} xbInt16 UpdateHeaderName   ();}
\DoxyCodeLine{202   \textcolor{keyword}{virtual} xbInt16 WriteBlockHeader( xbUInt32 ulBlockNo, xbInt16 iOption );}
\DoxyCodeLine{203   \textcolor{keyword}{virtual} xbInt16 Zap();}
\DoxyCodeLine{204 }
\DoxyCodeLine{205  \textcolor{keyword}{private}:}
\DoxyCodeLine{206   xbString sDbfFileNameWoExt;}
\DoxyCodeLine{207   xbUInt32 ulNextFreeBlock;}
\DoxyCodeLine{208   xbUInt32 ulFreeBlockCnt;}
\DoxyCodeLine{209   xbInt16  iField1;}
\DoxyCodeLine{210   xbInt16  iStartPos;}
\DoxyCodeLine{211   xbUInt32 ulFieldLen;}
\DoxyCodeLine{212 }
\DoxyCodeLine{213   xbLinkList<xbUInt32> llOldBlocks;   \textcolor{comment}{// list of previously used memo blocks for field, used by Commit() / Abort()}}
\DoxyCodeLine{214   xbLinkList<xbUInt32> llNewBlocks;   \textcolor{comment}{// list of newly updated memo blocks for field, used by Commit() / Abort()}}
\DoxyCodeLine{215 }
\DoxyCodeLine{216 \};}
\DoxyCodeLine{217 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{218 }
\DoxyCodeLine{219 }
\DoxyCodeLine{220 \}        \textcolor{comment}{/* namespace xb   */}}
\DoxyCodeLine{221 \textcolor{preprocessor}{\#endif   }\textcolor{comment}{/* XB\_MEMO\_SUPPORT */}\textcolor{preprocessor}{}}
\DoxyCodeLine{222 \textcolor{preprocessor}{\#endif   }\textcolor{comment}{/* \_\_XB\_MEMO\_H\_\_  */}\textcolor{preprocessor}{}}
\DoxyCodeLine{223 }

\end{DoxyCode}