home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 …ember: Reference Library / Apple Developer Reference Library (December 1999) (Disk 1).iso / pc / technical documentation / develop / develop issue 24 / develop issue 24 code / scriptable database 1.0a15.sea / Scriptable Database 1.0a15 / Database / GroupControlObject.cp < prev    next >
MacBinary  |  1996-04-29  |  31.1 KB  |  [TEXT/CWIE]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert MS-DOS Code Page Info (other/dosCodePage) ext Unsupported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Mon Apr 29 16:27:02 1996, modified Mon Apr 29 16:27:02 1996, creator 'CWIE', type ASCII, 31232 bytes "GroupControlObject.cp" , at 0x7a80 410 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[CWIE]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 15 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 |..GroupC|ontrolOb|
|00000010| 6a 65 63 74 2e 63 70 00 | 00 00 00 00 00 00 00 00 |ject.cp.|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 57 49 | 45 01 00 00 00 00 00 00 |.TEXTCWI|E.......|
|00000050| 00 00 00 00 00 7a 00 00 | 00 01 9a ad aa d6 96 ad |.....z..|........|
|00000060| aa d6 96 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 bf 3f 00 00 |........|.....?..|
|00000080| 2f 2f 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |//======|========|
|00000090| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000a0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000b0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000000d0| 3d 3d 0d 2f 2f 20 47 72 | 65 67 20 41 6e 64 65 72 |==.// Gr|eg Ander|
|000000e0| 73 6f 6e 0d 2f 2f 20 64 | 62 2b 0d 2f 2f 0d 2f 2f |son.// d|b+.//.//|
|000000f0| 20 47 72 6f 75 70 20 63 | 6f 6e 74 72 6f 6c 20 6f | Group c|ontrol o|
|00000100| 62 6a 65 63 74 0d 2f 2f | 20 31 37 20 4d 61 79 20 |bject.//| 17 May |
|00000110| 31 39 39 34 0d 2f 2f 20 | 33 31 20 44 65 63 20 31 |1994.// |31 Dec 1|
|00000120| 39 39 34 0d 2f 2f 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |994.//==|========|
|00000130| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000140| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000150| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000160| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000170| 3d 3d 3d 3d 3d 3d 0d 0d | 23 69 6e 63 6c 75 64 65 |======..|#include|
|00000180| 20 22 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | "GroupC|ontrolOb|
|00000190| 6a 65 63 74 2e 68 22 0d | 0d 23 69 6e 63 6c 75 64 |ject.h".|.#includ|
|000001a0| 65 20 22 44 61 74 61 62 | 61 73 65 44 6f 63 75 6d |e "Datab|aseDocum|
|000001b0| 65 6e 74 2e 68 22 0d 23 | 69 6e 63 6c 75 64 65 20 |ent.h".#|include |
|000001c0| 22 41 62 73 74 72 61 63 | 74 52 65 63 6f 72 64 2e |"Abstrac|tRecord.|
|000001d0| 68 22 0d 0d 23 69 6e 63 | 6c 75 64 65 20 22 45 78 |h"..#inc|lude "Ex|
|000001e0| 63 65 70 74 69 6f 6e 73 | 2e 68 22 0d 0d 2f 2f 0d |ceptions|.h"..//.|
|000001f0| 2f 2f 20 46 6f 72 20 43 | 6f 70 79 4d 65 6d 6f 72 |// For C|opyMemor|
|00000200| 79 0d 2f 2f 0d 23 69 6e | 63 6c 75 64 65 20 22 41 |y.//.#in|clude "A|
|00000210| 62 73 74 72 61 63 74 44 | 61 74 61 2e 68 22 0d 0d |bstractD|ata.h"..|
|00000220| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00000230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000270| 2d 2d 0d 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |--.// TG|roupCont|
|00000280| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 7e 54 47 72 6f |rolObjec|t::~TGro|
|00000290| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 0d |upContro|lObject.|
|000002a0| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|000002b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002f0| 2d 2d 0d 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |--.TGrou|pControl|
|00000300| 4f 62 6a 65 63 74 3a 3a | 7e 54 47 72 6f 75 70 43 |Object::|~TGroupC|
|00000310| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 28 29 0d 7b |ontrolOb|ject().{|
|00000320| 0d 7d 20 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.} // TG|roupCont|
|00000330| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 7e 54 47 72 6f |rolObjec|t::~TGro|
|00000340| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 0d |upContro|lObject.|
|00000350| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|00000360| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000370| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000380| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000390| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000003a0| 2d 2d 2d 0d 2f 2f 20 54 | 47 72 6f 75 70 43 6f 6e |---.// T|GroupCon|
|000003b0| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 49 6e 69 74 |trolObje|ct::Init|
|000003c0| 69 61 6c 69 7a 65 52 65 | 63 6f 72 64 43 75 72 73 |ializeRe|cordCurs|
|000003d0| 6f 72 73 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ors.//--|--------|
|000003e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000003f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000420| 2d 2d 2d 2d 2d 2d 0d 76 | 6f 69 64 20 54 47 72 6f |------.v|oid TGro|
|00000430| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00000440| 3a 49 6e 69 74 69 61 6c | 69 7a 65 52 65 63 6f 72 |:Initial|izeRecor|
|00000450| 64 43 75 72 73 6f 72 73 | 28 29 0d 7b 0d 09 66 6f |dCursors|().{..fo|
|00000460| 72 28 73 68 6f 72 74 20 | 69 3d 30 3b 20 69 3c 6b |r(short |i=0; i<k|
|00000470| 52 65 63 6f 72 64 73 50 | 65 72 47 72 6f 75 70 3b |RecordsP|erGroup;|
|00000480| 20 2b 2b 69 29 0d 09 09 | 66 52 65 63 6f 72 64 43 | ++i)...|fRecordC|
|00000490| 75 72 73 6f 72 73 5b 69 | 5d 20 3d 20 6e 69 6c 3b |ursors[i|] = nil;|
|000004a0| 0d 7d 20 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.} // TG|roupCont|
|000004b0| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 49 6e 69 74 69 |rolObjec|t::Initi|
|000004c0| 61 6c 69 7a 65 52 65 63 | 6f 72 64 43 75 72 73 6f |alizeRec|ordCurso|
|000004d0| 72 73 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |rs..//--|--------|
|000004e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000004f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000520| 2d 2d 2d 2d 2d 2d 0d 2f | 2f 20 54 47 72 6f 75 70 |------./|/ TGroup|
|00000530| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 44 |ControlO|bject::D|
|00000540| 6f 63 75 6d 65 6e 74 4b | 65 79 53 70 61 63 65 0d |ocumentK|eySpace.|
|00000550| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00000560| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000570| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000580| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000590| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000005a0| 2d 2d 0d 49 6e 74 36 34 | 20 54 47 72 6f 75 70 43 |--.Int64| TGroupC|
|000005b0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 44 6f |ontrolOb|ject::Do|
|000005c0| 63 75 6d 65 6e 74 4b 65 | 79 53 70 61 63 65 28 29 |cumentKe|ySpace()|
|000005d0| 0d 7b 0d 09 72 65 74 75 | 72 6e 20 44 42 44 6f 63 |.{..retu|rn DBDoc|
|000005e0| 75 6d 65 6e 74 28 29 2d | 3e 4f 62 6a 65 63 74 73 |ument()-|>Objects|
|000005f0| 4b 65 79 53 70 61 63 65 | 28 29 3b 0d 7d 20 2f 2f |KeySpace|();.} //|
|00000600| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|00000610| 6a 65 63 74 3a 3a 44 6f | 63 75 6d 65 6e 74 4b 65 |ject::Do|cumentKe|
|00000620| 79 53 70 61 63 65 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |ySpace..|//------|
|00000630| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000640| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000650| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000660| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000670| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 47 |--------|--.// TG|
|00000680| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00000690| 74 3a 3a 43 61 6c 63 75 | 6c 61 74 65 52 65 6c 61 |t::Calcu|lateRela|
|000006a0| 74 69 76 65 49 6e 64 65 | 78 0d 2f 2f 2d 2d 2d 2d |tiveInde|x.//----|
|000006b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 6c 6f 6e |--------|----.lon|
|00000700| 67 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |g TGroup|ControlO|
|00000710| 62 6a 65 63 74 3a 3a 43 | 61 6c 63 75 6c 61 74 65 |bject::C|alculate|
|00000720| 52 65 6c 61 74 69 76 65 | 49 6e 64 65 78 28 6c 6f |Relative|Index(lo|
|00000730| 6e 67 20 72 65 63 6f 72 | 64 49 6e 64 65 78 29 20 |ng recor|dIndex) |
|00000740| 63 6f 6e 73 74 0d 7b 0d | 09 6c 6f 6e 67 20 72 65 |const.{.|.long re|
|00000750| 6c 61 74 69 76 65 49 6e | 64 65 78 20 3d 20 72 65 |lativeIn|dex = re|
|00000760| 63 6f 72 64 49 6e 64 65 | 78 20 2d 20 74 68 69 73 |cordInde|x - this|
|00000770| 2d 3e 46 69 72 73 74 52 | 65 63 6f 72 64 49 6e 64 |->FirstR|ecordInd|
|00000780| 65 78 28 29 3b 0d 09 0d | 09 69 66 28 28 72 65 6c |ex();...|.if((rel|
|00000790| 61 74 69 76 65 49 6e 64 | 65 78 20 3c 20 30 29 20 |ativeInd|ex < 0) |
|000007a0| 7c 7c 20 28 72 65 6c 61 | 74 69 76 65 49 6e 64 65 ||| (rela|tiveInde|
|000007b0| 78 20 3e 3d 20 6b 52 65 | 63 6f 72 64 73 50 65 72 |x >= kRe|cordsPer|
|000007c0| 47 72 6f 75 70 29 29 0d | 09 09 54 68 72 6f 77 28 |Group)).|..Throw(|
|000007d0| 65 49 6e 64 65 78 4f 75 | 74 4f 66 52 61 6e 67 65 |eIndexOu|tOfRange|
|000007e0| 29 3b 0d 09 0d 09 72 65 | 74 75 72 6e 20 72 65 6c |);....re|turn rel|
|000007f0| 61 74 69 76 65 49 6e 64 | 65 78 3b 0d 7d 20 2f 2f |ativeInd|ex;.} //|
|00000800| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|00000810| 6a 65 63 74 3a 3a 43 61 | 6c 63 75 6c 61 74 65 52 |ject::Ca|lculateR|
|00000820| 65 6c 61 74 69 76 65 49 | 6e 64 65 78 0d 0d 2f 2f |elativeI|ndex..//|
|00000830| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000840| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000850| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000860| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000870| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000880| 0d 2f 2f 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f |.// TGro|upContro|
|00000890| 6c 4f 62 6a 65 63 74 3a | 3a 4e 65 78 74 52 65 63 |lObject:|:NextRec|
|000008a0| 6f 72 64 49 6e 64 65 78 | 0d 2f 2f 2d 2d 2d 2d 2d |ordIndex|.//-----|
|000008b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000008f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 6c 6f 6e 67 |--------|---.long|
|00000900| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|00000910| 6a 65 63 74 3a 3a 4e 65 | 78 74 52 65 63 6f 72 64 |ject::Ne|xtRecord|
|00000920| 49 6e 64 65 78 28 6c 6f | 6e 67 20 72 65 63 6f 72 |Index(lo|ng recor|
|00000930| 64 49 6e 64 65 78 29 20 | 63 6f 6e 73 74 0d 7b 0d |dIndex) |const.{.|
|00000940| 09 6c 6f 6e 67 20 66 6c | 61 67 73 20 3d 20 28 74 |.long fl|ags = (t|
|00000950| 68 69 73 2d 3e 52 65 63 | 6f 72 64 44 61 74 61 28 |his->Rec|ordData(|
|00000960| 72 65 63 6f 72 64 49 6e | 64 65 78 29 29 5b 6b 52 |recordIn|dex))[kR|
|00000970| 65 63 6f 72 64 49 44 46 | 6c 61 67 73 57 6f 72 64 |ecordIDF|lagsWord|
|00000980| 5d 3b 0d 09 6c 6f 6e 67 | 20 6e 65 78 74 49 6e 64 |];..long| nextInd|
|00000990| 65 78 20 3d 20 72 65 63 | 6f 72 64 49 6e 64 65 78 |ex = rec|ordIndex|
|000009a0| 3b 0d 09 0d 09 2f 2f 0d | 09 2f 2f 20 49 66 20 74 |;....//.|.// If t|
|000009b0| 68 65 20 64 61 74 61 20 | 72 65 63 6f 72 64 20 69 |he data |record i|
|000009c0| 6e 64 69 63 61 74 6f 72 | 20 62 69 74 73 20 21 3d |ndicator| bits !=|
|000009d0| 20 30 2c 20 74 68 65 6e | 20 74 68 69 73 20 72 65 | 0, then| this re|
|000009e0| 63 6f 72 64 0d 09 2f 2f | 20 69 73 20 61 20 44 42 |cord..//| is a DB|
|000009f0| 20 72 65 63 6f 72 64 3b | 20 65 76 65 72 79 20 44 | record;| every D|
|00000a00| 42 20 72 65 63 6f 72 64 | 20 69 73 20 6f 6e 65 20 |B record| is one |
|00000a10| 65 6e 74 72 79 20 6c 6f | 6e 67 2c 20 73 6f 0d 09 |entry lo|ng, so..|
|00000a20| 2f 2f 20 74 68 65 69 72 | 20 73 69 7a 65 20 69 73 |// their| size is|
|00000a30| 20 61 6c 77 61 79 73 20 | 6b 4c 6f 6e 67 57 6f 72 | always |kLongWor|
|00000a40| 64 73 50 65 72 52 65 63 | 6f 72 64 2e 0d 09 2f 2f |dsPerRec|ord...//|
|00000a50| 0d 09 69 66 28 28 66 6c | 61 67 73 20 26 20 6b 44 |..if((fl|ags & kD|
|00000a60| 61 74 61 52 65 63 6f 72 | 64 49 6e 64 69 63 61 74 |ataRecor|dIndicat|
|00000a70| 6f 72 42 69 74 73 29 20 | 21 3d 20 30 29 0d 09 09 |orBits) |!= 0)...|
|00000a80| 2b 2b 6e 65 78 74 49 6e | 64 65 78 3b 0d 09 2f 2f |++nextIn|dex;..//|
|00000a90| 0d 09 2f 2f 20 44 61 74 | 61 20 72 65 63 6f 72 64 |..// Dat|a record|
|00000aa0| 73 20 61 72 65 20 76 61 | 72 69 61 62 6c 65 20 73 |s are va|riable s|
|00000ab0| 69 7a 65 2c 20 74 68 6f | 75 67 68 2e 20 20 54 68 |ize, tho|ugh. Th|
|00000ac0| 65 20 70 68 79 73 69 63 | 61 6c 0d 09 2f 2f 20 73 |e physic|al..// s|
|00000ad0| 69 7a 65 20 69 73 20 61 | 6c 77 61 79 73 20 73 6f |ize is a|lways so|
|00000ae0| 6d 65 20 6d 75 6c 74 69 | 70 6c 65 20 6f 66 20 6b |me multi|ple of k|
|00000af0| 4c 6f 6e 67 57 6f 72 64 | 73 50 65 72 52 65 63 6f |LongWord|sPerReco|
|00000b00| 72 64 2c 20 61 6e 64 0d | 09 2f 2f 20 69 73 20 65 |rd, and.|.// is e|
|00000b10| 6e 63 6f 64 65 64 20 69 | 6e 20 74 68 65 20 6b 44 |ncoded i|n the kD|
|00000b20| 61 74 61 52 65 63 6f 72 | 64 50 68 79 73 69 63 61 |ataRecor|dPhysica|
|00000b30| 6c 53 69 7a 65 42 69 74 | 73 2e 0d 09 2f 2f 0d 09 |lSizeBit|s...//..|
|00000b40| 65 6c 73 65 0d 09 7b 0d | 09 09 6e 65 78 74 49 6e |else..{.|..nextIn|
|00000b50| 64 65 78 20 2b 3d 20 28 | 28 66 6c 61 67 73 20 26 |dex += (|(flags &|
|00000b60| 20 6b 44 61 74 61 52 65 | 63 6f 72 64 50 68 79 73 | kDataRe|cordPhys|
|00000b70| 69 63 61 6c 53 69 7a 65 | 42 69 74 73 29 20 3e 3e |icalSize|Bits) >>|
|00000b80| 20 28 6b 44 61 74 61 52 | 65 63 6f 72 64 50 68 79 | (kDataR|ecordPhy|
|00000b90| 73 69 63 61 6c 53 69 7a | 65 53 68 69 66 74 29 29 |sicalSiz|eShift))|
|00000ba0| 20 2b 20 31 3b 0d 09 7d | 0d 09 0d 09 2f 2f 0d 09 | + 1;..}|....//..|
|00000bb0| 2f 2f 20 49 66 20 77 65 | 20 67 65 74 20 74 6f 20 |// If we| get to |
|00000bc0| 74 68 65 20 65 6e 64 20 | 6f 66 20 74 68 65 20 67 |the end |of the g|
|00000bd0| 72 6f 75 70 2c 20 72 65 | 74 75 72 6e 20 2d 31 0d |roup, re|turn -1.|
|00000be0| 09 2f 2f 0d 09 69 66 28 | 6e 65 78 74 49 6e 64 65 |.//..if(|nextInde|
|00000bf0| 78 20 3e 3d 20 28 74 68 | 69 73 2d 3e 46 69 72 73 |x >= (th|is->Firs|
|00000c00| 74 52 65 63 6f 72 64 49 | 6e 64 65 78 28 29 20 2b |tRecordI|ndex() +|
|00000c10| 20 6b 52 65 63 6f 72 64 | 73 50 65 72 47 72 6f 75 | kRecord|sPerGrou|
|00000c20| 70 29 29 0d 09 7b 0d 09 | 09 41 53 53 45 52 54 28 |p))..{..|.ASSERT(|
|00000c30| 6e 65 78 74 49 6e 64 65 | 78 20 3d 3d 20 74 68 69 |nextInde|x == thi|
|00000c40| 73 2d 3e 46 69 72 73 74 | 52 65 63 6f 72 64 49 6e |s->First|RecordIn|
|00000c50| 64 65 78 28 29 20 2b 20 | 6b 52 65 63 6f 72 64 73 |dex() + |kRecords|
|00000c60| 50 65 72 47 72 6f 75 70 | 29 3b 0d 09 09 6e 65 78 |PerGroup|);...nex|
|00000c70| 74 49 6e 64 65 78 20 3d | 20 2d 31 3b 0d 09 7d 0d |tIndex =| -1;..}.|
|00000c80| 09 0d 09 72 65 74 75 72 | 6e 20 6e 65 78 74 49 6e |...retur|n nextIn|
|00000c90| 64 65 78 3b 0d 7d 20 2f | 2f 20 54 47 72 6f 75 70 |dex;.} /|/ TGroup|
|00000ca0| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 4e |ControlO|bject::N|
|00000cb0| 65 78 74 52 65 63 6f 72 | 64 49 6e 64 65 78 0d 0d |extRecor|dIndex..|
|00000cc0| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00000cd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d10| 2d 2d 0d 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |--.// TG|roupCont|
|00000d20| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 50 72 65 76 69 |rolObjec|t::Previ|
|00000d30| 6f 75 73 52 65 63 6f 72 | 64 49 6e 64 65 78 0d 2f |ousRecor|dIndex./|
|00000d40| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00000d50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000d90| 2d 0d 6c 6f 6e 67 20 54 | 47 72 6f 75 70 43 6f 6e |-.long T|GroupCon|
|00000da0| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 50 72 65 76 |trolObje|ct::Prev|
|00000db0| 69 6f 75 73 52 65 63 6f | 72 64 49 6e 64 65 78 28 |iousReco|rdIndex(|
|00000dc0| 6c 6f 6e 67 20 72 65 63 | 6f 72 64 49 6e 64 65 78 |long rec|ordIndex|
|00000dd0| 29 20 63 6f 6e 73 74 0d | 7b 0d 09 6c 6f 6e 67 20 |) const.|{..long |
|00000de0| 70 72 65 76 69 6f 75 73 | 49 6e 64 65 78 20 3d 20 |previous|Index = |
|00000df0| 72 65 63 6f 72 64 49 6e | 64 65 78 3b 0d 0d 09 2f |recordIn|dex;.../|
|00000e00| 2f 0d 09 2f 2f 20 49 66 | 20 77 65 27 72 65 20 61 |/..// If| we're a|
|00000e10| 6c 72 65 61 64 79 20 61 | 74 20 74 68 65 20 62 65 |lready a|t the be|
|00000e20| 67 69 6e 6e 69 6e 67 2c | 20 74 68 65 72 65 27 73 |ginning,| there's|
|00000e30| 20 6e 6f 20 70 6f 69 6e | 74 0d 09 2f 2f 20 69 6e | no poin|t..// in|
|00000e40| 20 64 6f 69 6e 67 20 61 | 6e 79 20 66 75 72 74 68 | doing a|ny furth|
|00000e50| 65 72 20 63 61 6c 63 75 | 6c 61 74 69 6f 6e 73 2e |er calcu|lations.|
|00000e60| 0d 09 2f 2f 0d 09 69 66 | 28 72 65 63 6f 72 64 49 |..//..if|(recordI|
|00000e70| 6e 64 65 78 20 3c 3d 20 | 74 68 69 73 2d 3e 46 69 |ndex <= |this->Fi|
|00000e80| 72 73 74 52 65 63 6f 72 | 64 49 6e 64 65 78 28 29 |rstRecor|dIndex()|
|00000e90| 29 0d 09 7b 0d 09 09 41 | 53 53 45 52 54 28 72 65 |)..{...A|SSERT(re|
|00000ea0| 63 6f 72 64 49 6e 64 65 | 78 20 3d 3d 20 74 68 69 |cordInde|x == thi|
|00000eb0| 73 2d 3e 46 69 72 73 74 | 52 65 63 6f 72 64 49 6e |s->First|RecordIn|
|00000ec0| 64 65 78 28 29 29 3b 0d | 09 09 70 72 65 76 69 6f |dex());.|..previo|
|00000ed0| 75 73 49 6e 64 65 78 20 | 3d 20 2d 31 3b 0d 09 7d |usIndex |= -1;..}|
|00000ee0| 0d 09 65 6c 73 65 0d 09 | 7b 0d 09 09 6c 6f 6e 67 |..else..|{...long|
|00000ef0| 20 66 6c 61 67 73 20 3d | 20 28 74 68 69 73 2d 3e | flags =| (this->|
|00000f00| 52 65 63 6f 72 64 44 61 | 74 61 28 72 65 63 6f 72 |RecordDa|ta(recor|
|00000f10| 64 49 6e 64 65 78 29 29 | 5b 6b 52 65 63 6f 72 64 |dIndex))|[kRecord|
|00000f20| 49 44 46 6c 61 67 73 57 | 6f 72 64 5d 3b 0d 09 09 |IDFlagsW|ord];...|
|00000f30| 0d 09 09 2f 2f 0d 09 09 | 2f 2f 20 49 66 20 74 68 |...//...|// If th|
|00000f40| 65 20 64 61 74 61 20 72 | 65 63 6f 72 64 20 69 6e |e data r|ecord in|
|00000f50| 64 69 63 61 74 6f 72 20 | 62 69 74 73 20 21 3d 20 |dicator |bits != |
|00000f60| 30 2c 20 74 68 65 6e 20 | 74 68 69 73 20 72 65 63 |0, then |this rec|
|00000f70| 6f 72 64 0d 09 09 2f 2f | 20 69 73 20 61 20 44 42 |ord...//| is a DB|
|00000f80| 20 72 65 63 6f 72 64 3b | 20 65 76 65 72 79 20 44 | record;| every D|
|00000f90| 42 20 72 65 63 6f 72 64 | 20 69 73 20 6f 6e 65 20 |B record| is one |
|00000fa0| 65 6e 74 72 79 20 6c 6f | 6e 67 2c 20 73 6f 0d 09 |entry lo|ng, so..|
|00000fb0| 09 2f 2f 20 74 68 65 69 | 72 20 73 69 7a 65 20 69 |.// thei|r size i|
|00000fc0| 73 20 61 6c 77 61 79 73 | 20 6b 4c 6f 6e 67 57 6f |s always| kLongWo|
|00000fd0| 72 64 73 50 65 72 52 65 | 63 6f 72 64 2e 0d 09 09 |rdsPerRe|cord....|
|00000fe0| 2f 2f 0d 09 09 69 66 28 | 28 66 6c 61 67 73 20 26 |//...if(|(flags &|
|00000ff0| 20 6b 44 61 74 61 52 65 | 63 6f 72 64 49 6e 64 69 | kDataRe|cordIndi|
|00001000| 63 61 74 6f 72 42 69 74 | 73 29 20 21 3d 20 30 29 |catorBit|s) != 0)|
|00001010| 0d 09 09 09 2d 2d 70 72 | 65 76 69 6f 75 73 49 6e |....--pr|eviousIn|
|00001020| 64 65 78 3b 0d 09 09 2f | 2f 0d 09 09 2f 2f 20 44 |dex;.../|/...// D|
|00001030| 61 74 61 20 72 65 63 6f | 72 64 73 20 61 72 65 20 |ata reco|rds are |
|00001040| 76 61 72 69 61 62 6c 65 | 20 73 69 7a 65 2c 20 74 |variable| size, t|
|00001050| 68 6f 75 67 68 2e 20 20 | 54 68 65 20 70 68 79 73 |hough. |The phys|
|00001060| 69 63 61 6c 0d 09 09 2f | 2f 20 73 69 7a 65 20 69 |ical.../|/ size i|
|00001070| 73 20 61 6c 77 61 79 73 | 20 73 6f 6d 65 20 6d 75 |s always| some mu|
|00001080| 6c 74 69 70 6c 65 20 6f | 66 20 6b 4c 6f 6e 67 57 |ltiple o|f kLongW|
|00001090| 6f 72 64 73 50 65 72 52 | 65 63 6f 72 64 2c 20 61 |ordsPerR|ecord, a|
|000010a0| 6e 64 0d 09 09 2f 2f 20 | 69 73 20 65 6e 63 6f 64 |nd...// |is encod|
|000010b0| 65 64 20 69 6e 20 74 68 | 65 20 6b 44 61 74 61 52 |ed in th|e kDataR|
|000010c0| 65 63 6f 72 64 50 68 79 | 73 69 63 61 6c 53 69 7a |ecordPhy|sicalSiz|
|000010d0| 65 42 69 74 73 2e 0d 09 | 09 2f 2f 0d 09 09 65 6c |eBits...|.//...el|
|000010e0| 73 65 0d 09 09 7b 0d 09 | 09 09 70 72 65 76 69 6f |se...{..|..previo|
|000010f0| 75 73 49 6e 64 65 78 20 | 2d 3d 20 28 28 28 66 6c |usIndex |-= (((fl|
|00001100| 61 67 73 20 26 20 6b 50 | 72 65 76 69 6f 75 73 52 |ags & kP|reviousR|
|00001110| 65 63 6f 72 64 50 68 79 | 73 69 63 61 6c 53 69 7a |ecordPhy|sicalSiz|
|00001120| 65 42 69 74 73 29 20 3e | 3e 20 28 6b 50 72 65 76 |eBits) >|> (kPrev|
|00001130| 69 6f 75 73 52 65 63 6f | 72 64 50 68 79 73 69 63 |iousReco|rdPhysic|
|00001140| 61 6c 53 69 7a 65 53 68 | 69 66 74 29 29 20 2b 20 |alSizeSh|ift)) + |
|00001150| 31 29 3b 0d 09 09 7d 0d | 0d 09 09 41 53 53 45 52 |1);...}.|...ASSER|
|00001160| 54 28 70 72 65 76 69 6f | 75 73 49 6e 64 65 78 20 |T(previo|usIndex |
|00001170| 3e 3d 20 74 68 69 73 2d | 3e 46 69 72 73 74 52 65 |>= this-|>FirstRe|
|00001180| 63 6f 72 64 49 6e 64 65 | 78 28 29 29 3b 0d 09 7d |cordInde|x());..}|
|00001190| 0d 09 0d 09 72 65 74 75 | 72 6e 20 70 72 65 76 69 |....retu|rn previ|
|000011a0| 6f 75 73 49 6e 64 65 78 | 3b 0d 7d 20 2f 2f 20 54 |ousIndex|;.} // T|
|000011b0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|000011c0| 63 74 3a 3a 50 72 65 76 | 69 6f 75 73 52 65 63 6f |ct::Prev|iousReco|
|000011d0| 72 64 49 6e 64 65 78 0d | 0d 2f 2f 2d 2d 2d 2d 2d |rdIndex.|.//-----|
|000011e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000011f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0d 2f 2f 20 54 |--------|---.// T|
|00001230| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00001240| 63 74 3a 3a 42 6c 6f 63 | 6b 45 6e 63 6f 64 65 64 |ct::Bloc|kEncoded|
|00001250| 50 68 79 73 69 63 61 6c | 53 69 7a 65 0d 2f 2f 2d |Physical|Size.//-|
|00001260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000012a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|000012b0| 6c 6f 6e 67 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |long TGr|oupContr|
|000012c0| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 42 6c 6f 63 6b 45 |olObject|::BlockE|
|000012d0| 6e 63 6f 64 65 64 50 68 | 79 73 69 63 61 6c 53 69 |ncodedPh|ysicalSi|
|000012e0| 7a 65 28 6c 6f 6e 67 20 | 72 65 63 6f 72 64 49 6e |ze(long |recordIn|
|000012f0| 64 65 78 29 20 63 6f 6e | 73 74 0d 7b 0d 09 6c 6f |dex) con|st.{..lo|
|00001300| 6e 67 20 66 6c 61 67 73 | 20 3d 20 28 74 68 69 73 |ng flags| = (this|
|00001310| 2d 3e 52 65 63 6f 72 64 | 44 61 74 61 28 72 65 63 |->Record|Data(rec|
|00001320| 6f 72 64 49 6e 64 65 78 | 29 29 5b 6b 52 65 63 6f |ordIndex|))[kReco|
|00001330| 72 64 49 44 46 6c 61 67 | 73 57 6f 72 64 5d 3b 0d |rdIDFlag|sWord];.|
|00001340| 0d 09 69 66 28 28 66 6c | 61 67 73 20 26 20 6b 44 |..if((fl|ags & kD|
|00001350| 61 74 61 52 65 63 6f 72 | 64 49 6e 64 69 63 61 74 |ataRecor|dIndicat|
|00001360| 6f 72 42 69 74 73 29 20 | 21 3d 20 30 29 0d 09 09 |orBits) |!= 0)...|
|00001370| 72 65 74 75 72 6e 20 30 | 3b 0d 09 65 6c 73 65 0d |return 0|;..else.|
|00001380| 09 09 72 65 74 75 72 6e | 20 28 28 66 6c 61 67 73 |..return| ((flags|
|00001390| 20 26 20 6b 44 61 74 61 | 52 65 63 6f 72 64 50 68 | & kData|RecordPh|
|000013a0| 79 73 69 63 61 6c 53 69 | 7a 65 42 69 74 73 29 20 |ysicalSi|zeBits) |
|000013b0| 3e 3e 20 28 6b 44 61 74 | 61 52 65 63 6f 72 64 50 |>> (kDat|aRecordP|
|000013c0| 68 79 73 69 63 61 6c 53 | 69 7a 65 53 68 69 66 74 |hysicalS|izeShift|
|000013d0| 29 29 3b 0d 7d 20 2f 2f | 20 54 47 72 6f 75 70 43 |));.} //| TGroupC|
|000013e0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 42 6c |ontrolOb|ject::Bl|
|000013f0| 6f 63 6b 45 6e 63 6f 64 | 65 64 50 68 79 73 69 63 |ockEncod|edPhysic|
|00001400| 61 6c 53 69 7a 65 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |alSize..|//------|
|00001410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001420| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001430| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001440| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001450| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 47 |--------|--.// TG|
|00001460| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00001470| 74 3a 3a 53 65 74 42 6c | 6f 63 6b 45 6e 63 6f 64 |t::SetBl|ockEncod|
|00001480| 65 64 50 68 79 73 69 63 | 61 6c 53 69 7a 65 0d 2f |edPhysic|alSize./|
|00001490| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000014a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000014e0| 2d 0d 76 6f 69 64 20 54 | 47 72 6f 75 70 43 6f 6e |-.void T|GroupCon|
|000014f0| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 53 65 74 42 |trolObje|ct::SetB|
|00001500| 6c 6f 63 6b 45 6e 63 6f | 64 65 64 50 68 79 73 69 |lockEnco|dedPhysi|
|00001510| 63 61 6c 53 69 7a 65 28 | 6c 6f 6e 67 20 72 65 63 |calSize(|long rec|
|00001520| 6f 72 64 49 6e 64 65 78 | 2c 20 6c 6f 6e 67 20 6e |ordIndex|, long n|
|00001530| 65 77 45 6e 63 6f 64 65 | 64 53 69 7a 65 29 0d 7b |ewEncode|dSize).{|
|00001540| 0d 09 6c 6f 6e 67 20 66 | 6c 61 67 73 20 3d 20 28 |..long f|lags = (|
|00001550| 74 68 69 73 2d 3e 52 65 | 63 6f 72 64 44 61 74 61 |this->Re|cordData|
|00001560| 28 72 65 63 6f 72 64 49 | 6e 64 65 78 29 29 5b 6b |(recordI|ndex))[k|
|00001570| 52 65 63 6f 72 64 49 44 | 46 6c 61 67 73 57 6f 72 |RecordID|FlagsWor|
|00001580| 64 5d 3b 0d 0d 09 52 65 | 71 75 69 72 65 28 28 74 |d];...Re|quire((t|
|00001590| 68 69 73 2d 3e 42 6c 6f | 63 6b 45 6e 63 6f 64 65 |his->Blo|ckEncode|
|000015a0| 64 50 68 79 73 69 63 61 | 6c 53 69 7a 65 28 72 65 |dPhysica|lSize(re|
|000015b0| 63 6f 72 64 49 6e 64 65 | 78 29 20 3e 20 30 29 20 |cordInde|x) > 0) |
|000015c0| 26 26 20 28 6e 65 77 45 | 6e 63 6f 64 65 64 53 69 |&& (newE|ncodedSi|
|000015d0| 7a 65 20 3e 20 30 29 29 | 3b 0d 0d 09 6c 6f 6e 67 |ze > 0))|;...long|
|000015e0| 20 6e 65 77 46 6c 61 67 | 73 20 3d 20 28 66 6c 61 | newFlag|s = (fla|
|000015f0| 67 73 20 26 20 7e 6b 44 | 61 74 61 52 65 63 6f 72 |gs & ~kD|ataRecor|
|00001600| 64 50 68 79 73 69 63 61 | 6c 53 69 7a 65 42 69 74 |dPhysica|lSizeBit|
|00001610| 73 29 20 7c 20 28 28 6e | 65 77 45 6e 63 6f 64 65 |s) | ((n|ewEncode|
|00001620| 64 53 69 7a 65 20 3c 3c | 20 6b 44 61 74 61 52 65 |dSize <<| kDataRe|
|00001630| 63 6f 72 64 50 68 79 73 | 69 63 61 6c 53 69 7a 65 |cordPhys|icalSize|
|00001640| 53 68 69 66 74 29 20 26 | 20 6b 44 61 74 61 52 65 |Shift) &| kDataRe|
|00001650| 63 6f 72 64 50 68 79 73 | 69 63 61 6c 53 69 7a 65 |cordPhys|icalSize|
|00001660| 42 69 74 73 29 3b 0d 09 | 74 68 69 73 2d 3e 57 72 |Bits);..|this->Wr|
|00001670| 69 74 65 52 65 63 6f 72 | 64 57 6f 72 64 28 72 65 |iteRecor|dWord(re|
|00001680| 63 6f 72 64 49 6e 64 65 | 78 2c 20 6b 52 65 63 6f |cordInde|x, kReco|
|00001690| 72 64 49 44 46 6c 61 67 | 73 57 6f 72 64 2c 20 6e |rdIDFlag|sWord, n|
|000016a0| 65 77 46 6c 61 67 73 29 | 3b 0d 7d 20 2f 2f 20 54 |ewFlags)|;.} // T|
|000016b0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|000016c0| 63 74 3a 3a 53 65 74 42 | 6c 6f 63 6b 45 6e 63 6f |ct::SetB|lockEnco|
|000016d0| 64 65 64 50 68 79 73 69 | 63 61 6c 53 69 7a 65 0d |dedPhysi|calSize.|
|000016e0| 0d 2f 2f 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.//-----|--------|
|000016f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001700| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001730| 2d 2d 2d 0d 2f 2f 20 54 | 47 72 6f 75 70 43 6f 6e |---.// T|GroupCon|
|00001740| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 4c 6f 6e 67 |trolObje|ct::Long|
|00001750| 77 6f 72 64 73 49 6e 52 | 65 63 6f 72 64 0d 2f 2f |wordsInR|ecord.//|
|00001760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001770| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001780| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001790| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000017a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000017b0| 0d 6c 6f 6e 67 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.long TG|roupCont|
|000017c0| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 4c 6f 6e 67 77 |rolObjec|t::Longw|
|000017d0| 6f 72 64 73 49 6e 52 65 | 63 6f 72 64 28 6c 6f 6e |ordsInRe|cord(lon|
|000017e0| 67 20 72 65 63 6f 72 64 | 49 6e 64 65 78 29 20 63 |g record|Index) c|
|000017f0| 6f 6e 73 74 0d 7b 0d 09 | 72 65 74 75 72 6e 20 28 |onst.{..|return (|
|00001800| 74 68 69 73 2d 3e 42 6c | 6f 63 6b 45 6e 63 6f 64 |this->Bl|ockEncod|
|00001810| 65 64 50 68 79 73 69 63 | 61 6c 53 69 7a 65 28 72 |edPhysic|alSize(r|
|00001820| 65 63 6f 72 64 49 6e 64 | 65 78 29 20 3c 3c 20 6b |ecordInd|ex) << k|
|00001830| 4c 6f 6e 67 57 6f 72 64 | 73 50 65 72 52 65 63 6f |LongWord|sPerReco|
|00001840| 72 64 53 68 69 66 74 29 | 20 2b 20 6b 4c 6f 6e 67 |rdShift)| + kLong|
|00001850| 57 6f 72 64 73 50 65 72 | 52 65 63 6f 72 64 3b 0d |WordsPer|Record;.|
|00001860| 7d 20 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |} // TGr|oupContr|
|00001870| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 4c 6f 6e 67 77 6f |olObject|::Longwo|
|00001880| 72 64 73 49 6e 52 65 63 | 6f 72 64 0d 0d 2f 2f 2d |rdsInRec|ord..//-|
|00001890| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000018d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 0d |--------|-------.|
|000018e0| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|000018f0| 4f 62 6a 65 63 74 3a 3a | 43 61 63 68 65 43 72 65 |Object::|CacheCre|
|00001900| 61 74 65 64 43 75 72 73 | 6f 72 0d 2f 2f 2d 2d 2d |atedCurs|or.//---|
|00001910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001920| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001930| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001940| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 76 6f |--------|-----.vo|
|00001960| 69 64 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |id TGrou|pControl|
|00001970| 4f 62 6a 65 63 74 3a 3a | 43 61 63 68 65 43 72 65 |Object::|CacheCre|
|00001980| 61 74 65 64 43 75 72 73 | 6f 72 28 6c 6f 6e 67 20 |atedCurs|or(long |
|00001990| 72 65 63 6f 72 64 49 6e | 64 65 78 2c 20 54 41 62 |recordIn|dex, TAb|
|000019a0| 73 74 72 61 63 74 52 65 | 63 6f 72 64 2a 20 63 75 |stractRe|cord* cu|
|000019b0| 72 73 6f 72 29 0d 7b 0d | 09 52 45 51 55 49 52 45 |rsor).{.|.REQUIRE|
|000019c0| 56 41 4c 49 44 50 4f 49 | 4e 54 45 52 28 63 75 72 |VALIDPOI|NTER(cur|
|000019d0| 73 6f 72 29 3b 0d 09 6c | 6f 6e 67 20 72 65 6c 61 |sor);..l|ong rela|
|000019e0| 74 69 76 65 49 6e 64 65 | 78 20 3d 20 74 68 69 73 |tiveInde|x = this|
|000019f0| 2d 3e 43 61 6c 63 75 6c | 61 74 65 52 65 6c 61 74 |->Calcul|ateRelat|
|00001a00| 69 76 65 49 6e 64 65 78 | 28 72 65 63 6f 72 64 49 |iveIndex|(recordI|
|00001a10| 6e 64 65 78 29 3b 0d 09 | 69 66 28 66 52 65 63 6f |ndex);..|if(fReco|
|00001a20| 72 64 43 75 72 73 6f 72 | 73 5b 72 65 6c 61 74 69 |rdCursor|s[relati|
|00001a30| 76 65 49 6e 64 65 78 5d | 20 21 3d 20 6e 69 6c 29 |veIndex]| != nil)|
|00001a40| 0d 09 7b 0d 09 09 69 66 | 28 66 52 65 63 6f 72 64 |..{...if|(fRecord|
|00001a50| 43 75 72 73 6f 72 73 5b | 72 65 6c 61 74 69 76 65 |Cursors[|relative|
|00001a60| 49 6e 64 65 78 5d 2d 3e | 48 61 73 52 65 66 65 72 |Index]->|HasRefer|
|00001a70| 65 6e 63 65 28 29 20 3d | 3d 20 66 61 6c 73 65 29 |ence() =|= false)|
|00001a80| 0d 09 09 09 64 65 6c 65 | 74 65 20 66 52 65 63 6f |....dele|te fReco|
|00001a90| 72 64 43 75 72 73 6f 72 | 73 5b 72 65 6c 61 74 69 |rdCursor|s[relati|
|00001aa0| 76 65 49 6e 64 65 78 5d | 3b 0d 09 7d 0d 09 66 52 |veIndex]|;..}..fR|
|00001ab0| 65 63 6f 72 64 43 75 72 | 73 6f 72 73 5b 72 65 6c |ecordCur|sors[rel|
|00001ac0| 61 74 69 76 65 49 6e 64 | 65 78 5d 20 3d 20 63 75 |ativeInd|ex] = cu|
|00001ad0| 72 73 6f 72 3b 0d 7d 20 | 2f 2f 20 54 47 72 6f 75 |rsor;.} |// TGrou|
|00001ae0| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|00001af0| 43 61 63 68 65 43 72 65 | 61 74 65 64 43 75 72 73 |CacheCre|atedCurs|
|00001b00| 6f 72 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |or..//--|--------|
|00001b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001b50| 2d 2d 2d 2d 2d 2d 0d 2f | 2f 20 54 47 72 6f 75 70 |------./|/ TGroup|
|00001b60| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 4e |ControlO|bject::N|
|00001b70| 6f 74 69 66 79 43 75 72 | 73 6f 72 52 65 6c 65 61 |otifyCur|sorRelea|
|00001b80| 73 65 64 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |sed.//--|--------|
|00001b90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001bd0| 2d 2d 2d 2d 2d 2d 0d 76 | 6f 69 64 20 54 47 72 6f |------.v|oid TGro|
|00001be0| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00001bf0| 3a 4e 6f 74 69 66 79 43 | 75 72 73 6f 72 52 65 6c |:NotifyC|ursorRel|
|00001c00| 65 61 73 65 64 28 63 6f | 6e 73 74 20 54 41 62 73 |eased(co|nst TAbs|
|00001c10| 74 72 61 63 74 52 65 63 | 6f 72 64 2a 20 63 75 72 |tractRec|ord* cur|
|00001c20| 73 6f 72 29 0d 7b 0d 09 | 52 45 51 55 49 52 45 56 |sor).{..|REQUIREV|
|00001c30| 41 4c 49 44 50 4f 49 4e | 54 45 52 28 63 75 72 73 |ALIDPOIN|TER(curs|
|00001c40| 6f 72 29 3b 0d 09 6c 6f | 6e 67 20 72 65 63 6f 72 |or);..lo|ng recor|
|00001c50| 64 49 6e 64 65 78 20 3d | 20 63 75 72 73 6f 72 2d |dIndex =| cursor-|
|00001c60| 3e 52 65 63 6f 72 64 49 | 6e 64 65 78 28 29 3b 0d |>RecordI|ndex();.|
|00001c70| 09 6c 6f 6e 67 20 72 65 | 6c 61 74 69 76 65 49 6e |.long re|lativeIn|
|00001c80| 64 65 78 20 3d 20 74 68 | 69 73 2d 3e 43 61 6c 63 |dex = th|is->Calc|
|00001c90| 75 6c 61 74 65 52 65 6c | 61 74 69 76 65 49 6e 64 |ulateRel|ativeInd|
|00001ca0| 65 78 28 72 65 63 6f 72 | 64 49 6e 64 65 78 29 3b |ex(recor|dIndex);|
|00001cb0| 0d 09 0d 09 2f 2f 0d 09 | 2f 2f 20 54 68 65 20 66 |....//..|// The f|
|00001cc0| 69 72 73 74 20 63 61 73 | 65 20 74 6f 20 77 6f 72 |irst cas|e to wor|
|00001cd0| 72 79 20 61 62 6f 75 74 | 20 69 73 20 77 68 65 6e |ry about| is when|
|00001ce0| 20 61 20 6e 65 77 20 69 | 74 65 6d 20 69 73 20 63 | a new i|tem is c|
|00001cf0| 72 65 61 74 65 64 2c 0d | 09 2f 2f 20 62 75 74 20 |reated,.|.// but |
|00001d00| 74 68 65 20 74 72 61 6e | 73 61 63 74 69 6f 6e 20 |the tran|saction |
|00001d10| 69 73 20 62 61 63 6b 65 | 64 20 6f 75 74 20 62 65 |is backe|d out be|
|00001d20| 66 6f 72 65 20 74 68 65 | 20 6e 65 77 20 69 74 65 |fore the| new ite|
|00001d30| 6d 20 62 65 63 6f 6d 65 | 73 0d 09 2f 2f 20 61 20 |m become|s..// a |
|00001d40| 70 61 72 74 20 6f 66 20 | 74 68 65 20 64 61 74 61 |part of |the data|
|00001d50| 62 61 73 65 2e 20 20 49 | 6e 20 74 68 61 74 20 65 |base. I|n that e|
|00001d60| 76 65 6e 74 2c 20 77 65 | 20 61 72 65 20 69 6e 20 |vent, we| are in |
|00001d70| 64 61 6e 67 65 72 20 6f | 66 0d 09 2f 2f 20 63 61 |danger o|f..// ca|
|00001d80| 63 68 69 6e 67 20 61 6e | 20 6f 62 6a 65 63 74 20 |ching an| object |
|00001d90| 74 68 61 74 20 72 65 70 | 72 65 73 65 6e 74 73 20 |that rep|resents |
|00001da0| 61 20 66 72 65 65 20 6e | 6f 64 65 2d 2d 61 6e 64 |a free n|ode--and|
|00001db0| 20 74 68 65 20 6f 62 6a | 65 63 74 0d 09 2f 2f 20 | the obj|ect..// |
|00001dc0| 6d 61 79 20 68 61 76 65 | 20 74 68 65 20 77 72 6f |may have| the wro|
|00001dd0| 6e 67 20 63 6c 61 73 73 | 20 74 68 65 20 6e 65 78 |ng class| the nex|
|00001de0| 74 20 74 69 6d 65 20 69 | 74 27 73 20 72 65 66 65 |t time i|t's refe|
|00001df0| 72 65 6e 63 65 64 2e 20 | 20 54 6f 20 61 76 6f 69 |renced. | To avoi|
|00001e00| 64 0d 09 2f 2f 20 74 68 | 69 73 20 70 72 6f 62 6c |d..// th|is probl|
|00001e10| 65 6d 2c 20 77 65 20 64 | 65 6c 65 74 65 20 66 72 |em, we d|elete fr|
|00001e20| 65 65 20 6e 6f 64 65 73 | 20 61 73 20 73 6f 6f 6e |ee nodes| as soon|
|00001e30| 20 61 73 20 74 68 65 69 | 72 20 72 65 66 65 72 65 | as thei|r refere|
|00001e40| 6e 63 65 73 0d 09 2f 2f | 20 67 6f 20 61 77 61 79 |nces..//| go away|
|00001e50| 2e 0d 09 2f 2f 0d 09 69 | 66 28 66 52 65 63 6f 72 |...//..i|f(fRecor|
|00001e60| 64 43 75 72 73 6f 72 73 | 5b 72 65 6c 61 74 69 76 |dCursors|[relativ|
|00001e70| 65 49 6e 64 65 78 5d 20 | 3d 3d 20 63 75 72 73 6f |eIndex] |== curso|
|00001e80| 72 29 0d 09 7b 0d 09 09 | 2f 2f 0d 09 09 2f 2f 20 |r)..{...|//...// |
|00001e90| 0d 09 09 2f 2f 0d 09 09 | 69 66 28 63 75 72 73 6f |...//...|if(curso|
|00001ea0| 72 2d 3e 54 68 69 73 52 | 65 63 6f 72 64 49 73 46 |r->ThisR|ecordIsF|
|00001eb0| 72 65 65 28 6e 69 6c 29 | 20 26 26 20 28 63 75 72 |ree(nil)| && (cur|
|00001ec0| 73 6f 72 2d 3e 49 6e 54 | 72 61 6e 73 61 63 74 69 |sor->InT|ransacti|
|00001ed0| 6f 6e 28 29 20 3d 3d 20 | 66 61 6c 73 65 29 29 0d |on() == |false)).|
|00001ee0| 09 09 7b 0d 09 09 09 66 | 52 65 63 6f 72 64 43 75 |..{....f|RecordCu|
|00001ef0| 72 73 6f 72 73 5b 72 65 | 6c 61 74 69 76 65 49 6e |rsors[re|lativeIn|
|00001f00| 64 65 78 5d 20 3d 20 6e | 69 6c 3b 0d 09 09 09 64 |dex] = n|il;....d|
|00001f10| 65 6c 65 74 65 20 28 54 | 41 62 73 74 72 61 63 74 |elete (T|Abstract|
|00001f20| 52 65 63 6f 72 64 2a 29 | 63 75 72 73 6f 72 3b 0d |Record*)|cursor;.|
|00001f30| 09 09 7d 0d 09 7d 0d 09 | 2f 2f 0d 09 2f 2f 20 54 |..}..}..|//..// T|
|00001f40| 68 65 20 6f 74 68 65 72 | 20 63 61 73 65 20 74 6f |he other| case to|
|00001f50| 20 77 6f 72 72 79 20 61 | 62 6f 75 74 20 69 74 20 | worry a|bout it |
|00001f60| 77 68 65 6e 20 61 6e 20 | 69 74 65 6d 20 69 73 20 |when an |item is |
|00001f70| 66 72 65 65 64 2c 0d 09 | 2f 2f 20 73 6f 6d 65 6f |freed,..|// someo|
|00001f80| 6e 65 20 65 6c 73 65 20 | 6d 61 79 20 63 6f 6d 65 |ne else |may come|
|00001f90| 20 61 6c 6f 6e 67 20 61 | 6e 64 20 61 6c 6c 6f 63 | along a|nd alloc|
|00001fa0| 61 74 65 20 61 20 6e 65 | 77 20 72 65 63 6f 72 64 |ate a ne|w record|
|00001fb0| 0d 09 2f 2f 20 6f 6e 20 | 74 6f 70 20 6f 66 20 69 |..// on |top of i|
|00001fc0| 74 20 62 65 66 6f 72 65 | 20 61 6c 6c 20 6f 66 20 |t before| all of |
|00001fd0| 74 68 65 20 6f 6c 64 20 | 72 65 66 65 72 65 6e 63 |the old |referenc|
|00001fe0| 65 73 20 67 6f 20 61 77 | 61 79 2e 0d 09 2f 2f 20 |es go aw|ay...// |
|00001ff0| 49 6e 20 74 68 61 74 20 | 63 61 73 65 2c 20 74 68 |In that |case, th|
|00002000| 65 20 63 75 72 73 6f 72 | 20 77 6f 6e 27 74 20 62 |e cursor| won't b|
|00002010| 65 20 63 61 63 68 65 64 | 20 69 6e 20 74 68 65 20 |e cached| in the |
|00002020| 72 65 63 6f 72 64 0d 09 | 2f 2f 20 63 75 72 73 6f |record..|// curso|
|00002030| 72 73 20 63 61 63 68 65 | 20 74 61 62 6c 65 20 61 |rs cache| table a|
|00002040| 6e 79 20 6d 6f 72 65 2c | 20 61 6e 64 20 77 65 20 |ny more,| and we |
|00002050| 77 69 6c 6c 20 77 61 69 | 74 20 66 6f 72 0d 09 2f |will wai|t for../|
|00002060| 2f 20 74 68 65 20 72 65 | 66 65 72 65 6e 63 65 73 |/ the re|ferences|
|00002070| 20 74 6f 20 67 6f 20 61 | 77 61 79 20 62 65 66 6f | to go a|way befo|
|00002080| 72 65 20 77 65 20 64 65 | 6c 65 74 65 20 74 68 65 |re we de|lete the|
|00002090| 20 69 74 65 6d 2e 0d 09 | 2f 2f 0d 09 65 6c 73 65 | item...|//..else|
|000020a0| 0d 09 7b 0d 09 09 64 65 | 6c 65 74 65 20 28 54 41 |..{...de|lete (TA|
|000020b0| 62 73 74 72 61 63 74 52 | 65 63 6f 72 64 2a 29 63 |bstractR|ecord*)c|
|000020c0| 75 72 73 6f 72 3b 0d 09 | 7d 0d 7d 20 2f 2f 20 54 |ursor;..|}.} // T|
|000020d0| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|000020e0| 63 74 3a 3a 4e 6f 74 69 | 66 79 43 75 72 73 6f 72 |ct::Noti|fyCursor|
|000020f0| 52 65 6c 65 61 73 65 64 | 0d 0d 2f 2f 2d 2d 2d 2d |Released|..//----|
|00002100| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002110| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002120| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002130| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002140| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 2f 2f 20 |--------|----.// |
|00002150| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00002160| 65 63 74 3a 3a 47 65 74 | 52 65 63 6f 72 64 0d 2f |ect::Get|Record./|
|00002170| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00002180| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000021c0| 2d 0d 54 41 62 73 74 72 | 61 63 74 52 65 63 6f 72 |-.TAbstr|actRecor|
|000021d0| 64 2a 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |d* TGrou|pControl|
|000021e0| 4f 62 6a 65 63 74 3a 3a | 47 65 74 52 65 63 6f 72 |Object::|GetRecor|
|000021f0| 64 28 6c 6f 6e 67 20 72 | 65 63 6f 72 64 49 6e 64 |d(long r|ecordInd|
|00002200| 65 78 29 0d 7b 0d 09 6c | 6f 6e 67 20 72 65 6c 61 |ex).{..l|ong rela|
|00002210| 74 69 76 65 49 6e 64 65 | 78 20 3d 20 74 68 69 73 |tiveInde|x = this|
|00002220| 2d 3e 43 61 6c 63 75 6c | 61 74 65 52 65 6c 61 74 |->Calcul|ateRelat|
|00002230| 69 76 65 49 6e 64 65 78 | 28 72 65 63 6f 72 64 49 |iveIndex|(recordI|
|00002240| 6e 64 65 78 29 3b 0d 09 | 54 41 62 73 74 72 61 63 |ndex);..|TAbstrac|
|00002250| 74 52 65 63 6f 72 64 2a | 20 63 75 72 73 6f 72 20 |tRecord*| cursor |
|00002260| 3d 20 6e 69 6c 3b 0d 09 | 0d 09 2f 2f 0d 09 2f 2f |= nil;..|..//..//|
|00002270| 20 4c 6f 6f 6b 20 75 70 | 20 74 68 65 20 63 75 72 | Look up| the cur|
|00002280| 73 6f 72 20 69 6e 20 74 | 68 65 20 74 61 62 6c 65 |sor in t|he table|
|00002290| 20 6f 66 20 63 61 63 68 | 65 64 20 70 6f 69 6e 74 | of cach|ed point|
|000022a0| 65 72 73 20 74 68 61 74 | 20 77 65 20 6b 65 65 70 |ers that| we keep|
|000022b0| 2e 0d 09 2f 2f 20 49 66 | 20 74 68 65 20 63 75 72 |...// If| the cur|
|000022c0| 73 6f 72 20 64 6f 65 73 | 6e 27 74 20 65 78 69 73 |sor does|n't exis|
|000022d0| 74 20 79 65 74 2c 20 74 | 68 65 6e 20 61 73 6b 20 |t yet, t|hen ask |
|000022e0| 74 68 65 20 64 6f 63 75 | 6d 65 6e 74 20 74 6f 20 |the docu|ment to |
|000022f0| 63 72 65 61 74 65 20 69 | 74 2e 0d 09 2f 2f 0d 09 |create i|t...//..|
|00002300| 63 75 72 73 6f 72 20 3d | 20 66 52 65 63 6f 72 64 |cursor =| fRecord|
|00002310| 43 75 72 73 6f 72 73 5b | 72 65 6c 61 74 69 76 65 |Cursors[|relative|
|00002320| 49 6e 64 65 78 5d 3b 0d | 09 69 66 28 63 75 72 73 |Index];.|.if(curs|
|00002330| 6f 72 20 3d 3d 20 6e 69 | 6c 29 0d 09 7b 0d 09 09 |or == ni|l)..{...|
|00002340| 2f 2f 0d 09 09 2f 2f 20 | 6e 2e 62 2e 20 4d 61 6b |//...// |n.b. Mak|
|00002350| 65 52 65 63 6f 72 64 20 | 69 73 20 67 6f 69 6e 67 |eRecord |is going|
|00002360| 20 74 6f 20 66 69 6c 6c | 20 69 6e 20 74 68 65 0d | to fill| in the.|
|00002370| 09 09 2f 2f 20 61 70 72 | 6f 70 72 69 61 74 65 20 |..// apr|opriate |
|00002380| 65 6e 74 72 79 20 69 6e | 20 66 52 65 63 6f 72 64 |entry in| fRecord|
|00002390| 43 75 72 73 6f 72 73 2e | 0d 09 09 2f 2f 0d 09 09 |Cursors.|...//...|
|000023a0| 63 75 72 73 6f 72 20 3d | 20 44 42 44 6f 63 75 6d |cursor =| DBDocum|
|000023b0| 65 6e 74 28 29 2d 3e 4d | 61 6b 65 52 65 63 6f 72 |ent()->M|akeRecor|
|000023c0| 64 28 72 65 63 6f 72 64 | 49 6e 64 65 78 2c 20 74 |d(record|Index, t|
|000023d0| 68 69 73 2d 3e 47 65 74 | 52 65 63 6f 72 64 57 6f |his->Get|RecordWo|
|000023e0| 72 64 28 72 65 63 6f 72 | 64 49 6e 64 65 78 2c 20 |rd(recor|dIndex, |
|000023f0| 30 29 29 3b 0d 09 7d 0d | 09 09 0d 09 72 65 74 75 |0));..}.|....retu|
|00002400| 72 6e 20 63 75 72 73 6f | 72 3b 0d 7d 20 2f 2f 20 |rn curso|r;.} // |
|00002410| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00002420| 65 63 74 3a 3a 47 65 74 | 52 65 63 6f 72 64 0d 0d |ect::Get|Record..|
|00002430| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00002440| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002450| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002460| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002470| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002480| 2d 2d 0d 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |--.// TG|roupCont|
|00002490| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 52 65 63 6f 72 |rolObjec|t::Recor|
|000024a0| 64 44 61 74 61 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |dData.//|--------|
|000024b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000024f0| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 6c 6f 6e 67 2a 20 54 |--------|.long* T|
|00002500| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00002510| 63 74 3a 3a 52 65 63 6f | 72 64 44 61 74 61 28 6c |ct::Reco|rdData(l|
|00002520| 6f 6e 67 20 72 65 63 6f | 72 64 49 6e 64 65 78 29 |ong reco|rdIndex)|
|00002530| 20 63 6f 6e 73 74 0d 7b | 0d 09 6c 6f 6e 67 20 72 | const.{|..long r|
|00002540| 65 6c 61 74 69 76 65 49 | 6e 64 65 78 20 3d 20 74 |elativeI|ndex = t|
|00002550| 68 69 73 2d 3e 43 61 6c | 63 75 6c 61 74 65 52 65 |his->Cal|culateRe|
|00002560| 6c 61 74 69 76 65 49 6e | 64 65 78 28 72 65 63 6f |lativeIn|dex(reco|
|00002570| 72 64 49 6e 64 65 78 29 | 3b 0d 09 0d 09 69 66 28 |rdIndex)|;....if(|
|00002580| 66 52 65 63 6f 72 64 44 | 61 74 61 20 3d 3d 20 6e |fRecordD|ata == n|
|00002590| 69 6c 29 0d 09 7b 0d 09 | 09 2f 2f 0d 09 09 2f 2f |il)..{..|.//...//|
|000025a0| 20 43 6f 6e 73 74 20 63 | 61 73 74 20 61 77 61 79 | Const c|ast away|
|000025b0| 20 64 65 6c 69 62 65 72 | 61 74 65 6c 79 3b 20 77 | deliber|ately; w|
|000025c0| 65 20 77 61 6e 74 20 74 | 6f 20 70 72 6f 76 69 64 |e want t|o provid|
|000025d0| 65 20 61 6e 0d 09 09 2f | 2f 20 69 6e 74 65 72 66 |e an.../|/ interf|
|000025e0| 61 63 65 20 77 68 65 72 | 65 20 27 52 65 63 6f 72 |ace wher|e 'Recor|
|000025f0| 64 44 61 74 61 27 20 63 | 6c 61 69 6d 73 20 74 6f |dData' c|laims to|
|00002600| 20 62 65 20 63 6f 6e 73 | 74 2c 20 62 75 74 0d 09 | be cons|t, but..|
|00002610| 09 2f 2f 20 69 74 20 6d | 61 79 20 6e 65 65 64 20 |.// it m|ay need |
|00002620| 74 6f 20 63 61 6c 6c 20 | 27 52 65 61 64 52 65 63 |to call |'ReadRec|
|00002630| 6f 72 64 47 72 6f 75 70 | 46 72 6f 6d 44 69 73 6b |ordGroup|FromDisk|
|00002640| 27 2c 20 77 68 69 63 68 | 0d 09 09 2f 2f 20 69 73 |', which|...// is|
|00002650| 20 6e 6f 74 20 63 6f 6e | 73 74 2e 0d 09 09 2f 2f | not con|st....//|
|00002660| 0d 09 09 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |...TGrou|pControl|
|00002670| 4f 62 6a 65 63 74 2a 20 | 6d 65 20 3d 20 28 54 47 |Object* |me = (TG|
|00002680| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00002690| 74 2a 29 74 68 69 73 3b | 0d 09 09 6d 65 2d 3e 52 |t*)this;|...me->R|
|000026a0| 65 61 64 52 65 63 6f 72 | 64 47 72 6f 75 70 46 72 |eadRecor|dGroupFr|
|000026b0| 6f 6d 44 69 73 6b 28 29 | 3b 0d 09 7d 0d 09 0d 09 |omDisk()|;..}....|
|000026c0| 72 65 74 75 72 6e 20 28 | 66 52 65 63 6f 72 64 44 |return (|fRecordD|
|000026d0| 61 74 61 29 20 2b 20 28 | 72 65 6c 61 74 69 76 65 |ata) + (|relative|
|000026e0| 49 6e 64 65 78 20 2a 20 | 6b 4c 6f 6e 67 57 6f 72 |Index * |kLongWor|
|000026f0| 64 73 50 65 72 52 65 63 | 6f 72 64 29 3b 0d 7d 20 |dsPerRec|ord);.} |
|00002700| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|00002710| 4f 62 6a 65 63 74 3a 3a | 52 65 63 6f 72 64 44 61 |Object::|RecordDa|
|00002720| 74 61 0d 09 20 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |ta.. .//|--------|
|00002730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002770| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00002780| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00002790| 3a 47 65 74 52 65 63 6f | 72 64 57 6f 72 64 0d 2f |:GetReco|rdWord./|
|000027a0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000027b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000027f0| 2d 0d 6c 6f 6e 67 20 54 | 47 72 6f 75 70 43 6f 6e |-.long T|GroupCon|
|00002800| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 47 65 74 52 |trolObje|ct::GetR|
|00002810| 65 63 6f 72 64 57 6f 72 | 64 28 6c 6f 6e 67 20 72 |ecordWor|d(long r|
|00002820| 65 63 6f 72 64 49 6e 64 | 65 78 2c 20 6c 6f 6e 67 |ecordInd|ex, long|
|00002830| 20 6c 6f 6e 67 77 6f 72 | 64 4e 75 6d 62 65 72 29 | longwor|dNumber)|
|00002840| 20 63 6f 6e 73 74 0d 7b | 0d 09 6c 6f 6e 67 20 74 | const.{|..long t|
|00002850| 68 65 44 61 74 61 20 3d | 20 30 3b 0d 09 0d 09 69 |heData =| 0;....i|
|00002860| 66 28 28 6c 6f 6e 67 77 | 6f 72 64 4e 75 6d 62 65 |f((longw|ordNumbe|
|00002870| 72 20 3e 3d 20 30 29 20 | 26 26 20 28 6c 6f 6e 67 |r >= 0) |&& (long|
|00002880| 77 6f 72 64 4e 75 6d 62 | 65 72 20 3c 20 74 68 69 |wordNumb|er < thi|
|00002890| 73 2d 3e 4c 6f 6e 67 77 | 6f 72 64 73 49 6e 52 65 |s->Longw|ordsInRe|
|000028a0| 63 6f 72 64 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |cord(rec|ordIndex|
|000028b0| 29 29 29 0d 09 7b 0d 09 | 09 74 68 65 44 61 74 61 |)))..{..|.theData|
|000028c0| 20 3d 20 28 74 68 69 73 | 2d 3e 52 65 63 6f 72 64 | = (this|->Record|
|000028d0| 44 61 74 61 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |Data(rec|ordIndex|
|000028e0| 29 29 5b 6c 6f 6e 67 77 | 6f 72 64 4e 75 6d 62 65 |))[longw|ordNumbe|
|000028f0| 72 5d 3b 0d 09 7d 0d 09 | 65 6c 73 65 0d 09 09 54 |r];..}..|else...T|
|00002900| 68 72 6f 77 28 65 49 6e | 64 65 78 4f 75 74 4f 66 |hrow(eIn|dexOutOf|
|00002910| 52 61 6e 67 65 29 3b 0d | 09 0d 09 72 65 74 75 72 |Range);.|...retur|
|00002920| 6e 20 74 68 65 44 61 74 | 61 3b 0d 7d 20 2f 2f 20 |n theDat|a;.} // |
|00002930| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00002940| 65 63 74 3a 3a 47 65 74 | 52 65 63 6f 72 64 57 6f |ect::Get|RecordWo|
|00002950| 72 64 0d 09 20 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |rd.. .//|--------|
|00002960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000029a0| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|000029b0| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|000029c0| 3a 57 72 69 74 65 52 65 | 63 6f 72 64 57 6f 72 64 |:WriteRe|cordWord|
|000029d0| 0d 2f 2f 0d 2f 2f 20 54 | 68 69 73 20 69 73 20 61 |.//.// T|his is a|
|000029e0| 20 70 72 69 76 61 74 65 | 20 6d 65 74 68 6f 64 20 | private| method |
|000029f0| 6e 6f 74 20 74 6f 20 62 | 65 20 63 61 6c 6c 65 64 |not to b|e called|
|00002a00| 20 62 79 20 61 6e 79 20 | 6f 66 20 74 68 65 20 67 | by any |of the g|
|00002a10| 72 6f 75 70 20 63 6f 6e | 74 72 6f 6c 20 6f 62 6a |roup con|trol obj|
|00002a20| 65 63 74 27 73 0d 2f 2f | 20 66 72 69 65 6e 64 73 |ect's.//| friends|
|00002a30| 2e 20 20 41 6e 79 20 65 | 78 74 65 72 6e 61 6c 20 |. Any e|xternal |
|00002a40| 63 6c 69 65 6e 74 20 6f | 66 20 74 68 65 20 67 72 |client o|f the gr|
|00002a50| 6f 75 70 20 63 6f 6e 74 | 72 6f 6c 20 6f 62 6a 65 |oup cont|rol obje|
|00002a60| 63 74 20 74 68 61 74 20 | 77 69 73 68 65 73 20 74 |ct that |wishes t|
|00002a70| 6f 20 63 68 61 6e 67 65 | 0d 2f 2f 20 74 68 65 20 |o change|.// the |
|00002a80| 63 6f 6e 74 65 6e 74 73 | 20 6f 66 20 61 20 72 65 |contents| of a re|
|00002a90| 63 6f 72 64 20 6d 75 73 | 74 20 6d 61 6b 65 20 61 |cord mus|t make a|
|00002aa0| 20 63 6f 70 79 20 6f 66 | 20 74 68 65 20 72 65 63 | copy of| the rec|
|00002ab0| 6f 72 64 20 77 69 74 68 | 0d 2f 2f 20 27 4d 61 6b |ord with|.// 'Mak|
|00002ac0| 65 52 65 63 6f 72 64 44 | 61 74 61 43 6f 70 79 27 |eRecordD|ataCopy'|
|00002ad0| 2c 20 74 68 65 6e 20 77 | 72 69 74 65 20 74 68 65 |, then w|rite the|
|00002ae0| 20 65 6e 74 69 72 65 20 | 72 65 63 6f 72 64 20 62 | entire |record b|
|00002af0| 61 63 6b 20 77 69 74 68 | 20 27 43 68 61 6e 67 65 |ack with| 'Change|
|00002b00| 52 65 63 6f 72 64 44 61 | 74 61 27 0d 2f 2f 2d 2d |RecordDa|ta'.//--|
|00002b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002b50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 76 |--------|------.v|
|00002b60| 6f 69 64 20 54 47 72 6f | 75 70 43 6f 6e 74 72 6f |oid TGro|upContro|
|00002b70| 6c 4f 62 6a 65 63 74 3a | 3a 57 72 69 74 65 52 65 |lObject:|:WriteRe|
|00002b80| 63 6f 72 64 57 6f 72 64 | 28 6c 6f 6e 67 20 72 65 |cordWord|(long re|
|00002b90| 63 6f 72 64 49 6e 64 65 | 78 2c 20 6c 6f 6e 67 20 |cordInde|x, long |
|00002ba0| 6c 6f 6e 67 77 6f 72 64 | 4e 75 6d 62 65 72 2c 20 |longword|Number, |
|00002bb0| 6c 6f 6e 67 20 74 68 65 | 44 61 74 61 29 0d 7b 09 |long the|Data).{.|
|00002bc0| 0d 09 69 66 28 28 6c 6f | 6e 67 77 6f 72 64 4e 75 |..if((lo|ngwordNu|
|00002bd0| 6d 62 65 72 20 3e 3d 20 | 30 29 20 26 26 20 28 6c |mber >= |0) && (l|
|00002be0| 6f 6e 67 77 6f 72 64 4e | 75 6d 62 65 72 20 3c 20 |ongwordN|umber < |
|00002bf0| 74 68 69 73 2d 3e 4c 6f | 6e 67 77 6f 72 64 73 49 |this->Lo|ngwordsI|
|00002c00| 6e 52 65 63 6f 72 64 28 | 72 65 63 6f 72 64 49 6e |nRecord(|recordIn|
|00002c10| 64 65 78 29 29 29 0d 09 | 7b 0d 09 09 28 74 68 69 |dex)))..|{...(thi|
|00002c20| 73 2d 3e 52 65 63 6f 72 | 64 44 61 74 61 28 72 65 |s->Recor|dData(re|
|00002c30| 63 6f 72 64 49 6e 64 65 | 78 29 29 5b 6c 6f 6e 67 |cordInde|x))[long|
|00002c40| 77 6f 72 64 4e 75 6d 62 | 65 72 5d 20 3d 20 74 68 |wordNumb|er] = th|
|00002c50| 65 44 61 74 61 3b 0d 09 | 09 66 52 65 63 6f 72 64 |eData;..|.fRecord|
|00002c60| 47 72 6f 75 70 48 61 73 | 43 68 61 6e 67 65 64 20 |GroupHas|Changed |
|00002c70| 3d 20 74 72 75 65 3b 0d | 09 7d 0d 09 65 6c 73 65 |= true;.|.}..else|
|00002c80| 0d 09 09 54 68 72 6f 77 | 28 65 49 6e 64 65 78 4f |...Throw|(eIndexO|
|00002c90| 75 74 4f 66 52 61 6e 67 | 65 29 3b 0d 7d 20 2f 2f |utOfRang|e);.} //|
|00002ca0| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|00002cb0| 6a 65 63 74 3a 3a 57 72 | 69 74 65 52 65 63 6f 72 |ject::Wr|iteRecor|
|00002cc0| 64 57 6f 72 64 0d 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |dWord../|/-------|
|00002cd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ce0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002cf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002d10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 2f 2f 20 54 47 72 |--------|-.// TGr|
|00002d20| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00002d30| 3a 3a 57 72 69 74 65 54 | 68 72 6f 75 67 68 54 6f |::WriteT|hroughTo|
|00002d40| 54 72 61 6e 73 61 63 74 | 69 6f 6e 0d 2f 2f 0d 2f |Transact|ion.//./|
|00002d50| 2f 20 54 68 69 73 20 72 | 6f 75 74 69 6e 65 20 63 |/ This r|outine c|
|00002d60| 68 61 6e 67 65 73 20 62 | 69 74 73 20 69 6e 20 61 |hanges b|its in a|
|00002d70| 20 64 61 74 61 20 72 65 | 63 6f 72 64 20 62 6f 74 | data re|cord bot|
|00002d80| 68 20 69 6e 20 74 68 65 | 20 70 65 72 73 69 73 74 |h in the| persist|
|00002d90| 61 6e 74 20 28 67 72 6f | 75 70 0d 2f 2f 20 63 6f |ant (gro|up.// co|
|00002da0| 6e 74 72 6f 6c 20 6f 62 | 6a 65 63 74 20 73 74 6f |ntrol ob|ject sto|
|00002db0| 72 65 64 29 20 73 74 72 | 75 63 74 75 72 65 20 61 |red) str|ucture a|
|00002dc0| 6e 64 20 74 68 65 20 63 | 68 61 6e 67 65 20 69 6d |nd the c|hange im|
|00002dd0| 61 67 65 20 28 73 74 6f | 72 65 64 20 69 6e 20 74 |age (sto|red in t|
|00002de0| 68 65 20 75 70 64 61 74 | 65 0d 2f 2f 20 70 6f 69 |he updat|e.// poi|
|00002df0| 6e 74 65 72 20 6f 66 20 | 73 6f 6d 65 20 74 72 61 |nter of |some tra|
|00002e00| 6e 73 61 63 74 69 6f 6e | 29 2e 20 20 54 68 69 73 |nsaction|). This|
|00002e10| 20 69 73 20 63 75 72 72 | 65 6e 74 6c 79 20 6f 6e | is curr|ently on|
|00002e20| 6c 79 20 6e 65 63 65 73 | 73 61 72 79 20 69 6e 20 |ly neces|sary in |
|00002e30| 6f 6e 65 0d 2f 2f 20 69 | 6e 73 74 61 6e 63 65 3a |one.// i|nstance:|
|00002e40| 20 73 65 74 74 69 6e 67 | 20 74 68 65 20 27 70 72 | setting| the 'pr|
|00002e50| 65 76 69 6f 75 73 20 62 | 6c 6f 63 6b 27 73 20 70 |evious b|lock's p|
|00002e60| 68 79 73 69 63 61 6c 20 | 73 69 7a 65 27 20 66 69 |hysical |size' fi|
|00002e70| 65 6c 64 20 6f 66 20 61 | 20 64 61 74 61 0d 2f 2f |eld of a| data.//|
|00002e80| 20 6f 62 6a 65 63 74 20 | 77 68 65 6e 20 73 70 6c | object |when spl|
|00002e90| 69 74 74 69 6e 67 20 61 | 20 62 6c 6f 63 6b 20 61 |itting a| block a|
|00002ea0| 70 61 72 74 20 6f 72 20 | 6a 6f 69 6e 69 6e 67 20 |part or |joining |
|00002eb0| 74 77 6f 20 62 6c 6f 63 | 6b 73 2e 20 20 54 68 65 |two bloc|ks. The|
|00002ec0| 20 73 70 6c 69 74 20 69 | 73 0d 2f 2f 20 64 6f 6e | split i|s.// don|
|00002ed0| 65 20 69 6e 64 65 70 65 | 6e 64 61 6e 74 6c 79 20 |e indepe|ndantly |
|00002ee0| 6f 66 20 74 68 69 73 20 | 74 72 61 6e 73 61 63 74 |of this |transact|
|00002ef0| 69 6f 6e 2c 20 73 6f 20 | 77 65 20 6e 65 65 64 20 |ion, so |we need |
|00002f00| 74 6f 20 6d 61 6b 65 20 | 73 75 72 65 20 74 68 61 |to make |sure tha|
|00002f10| 74 20 74 68 65 0d 2f 2f | 20 61 70 70 72 6f 70 72 |t the.//| appropr|
|00002f20| 69 61 74 65 20 62 69 74 | 73 20 61 72 65 20 63 68 |iate bit|s are ch|
|00002f30| 61 6e 67 65 64 20 69 6e | 20 62 6f 74 68 20 70 6c |anged in| both pl|
|00002f40| 61 63 65 73 20 73 6f 20 | 74 68 61 74 20 74 68 65 |aces so |that the|
|00002f50| 20 6e 65 78 74 2f 70 72 | 65 76 69 6f 75 73 0d 2f | next/pr|evious./|
|00002f60| 2f 20 62 6c 6f 63 6b 20 | 6c 69 6e 6b 73 20 64 6f |/ block |links do|
|00002f70| 20 6e 6f 74 20 62 65 63 | 6f 6d 65 20 69 6e 76 61 | not bec|ome inva|
|00002f80| 6c 69 64 20 77 68 65 6e | 20 74 68 65 20 74 72 61 |lid when| the tra|
|00002f90| 6e 73 61 63 74 69 6f 6e | 20 69 73 20 63 6f 6d 6d |nsaction| is comm|
|00002fa0| 69 74 74 65 64 2e 0d 2f | 2f 2d 2d 2d 2d 2d 2d 2d |itted../|/-------|
|00002fb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0d 76 6f 69 64 20 54 |--------|-.void T|
|00003000| 47 72 6f 75 70 43 6f 6e | 74 72 6f 6c 4f 62 6a 65 |GroupCon|trolObje|
|00003010| 63 74 3a 3a 57 72 69 74 | 65 54 68 72 6f 75 67 68 |ct::Writ|eThrough|
|00003020| 54 6f 54 72 61 6e 73 61 | 63 74 69 6f 6e 28 6c 6f |ToTransa|ction(lo|
|00003030| 6e 67 20 72 65 63 6f 72 | 64 49 6e 64 65 78 2c 20 |ng recor|dIndex, |
|00003040| 6c 6f 6e 67 20 6c 6f 6e | 67 77 6f 72 64 4e 75 6d |long lon|gwordNum|
|00003050| 62 65 72 2c 20 6c 6f 6e | 67 20 74 68 65 44 61 74 |ber, lon|g theDat|
|00003060| 61 2c 20 6c 6f 6e 67 20 | 74 68 65 4d 61 73 6b 29 |a, long |theMask)|
|00003070| 0d 7b 0d 09 6c 6f 6e 67 | 20 63 75 72 72 65 6e 74 |.{..long| current|
|00003080| 57 6f 72 64 56 61 6c 75 | 65 20 3d 20 74 68 69 73 |WordValu|e = this|
|00003090| 2d 3e 47 65 74 52 65 63 | 6f 72 64 57 6f 72 64 28 |->GetRec|ordWord(|
|000030a0| 72 65 63 6f 72 64 49 6e | 64 65 78 2c 20 6c 6f 6e |recordIn|dex, lon|
|000030b0| 67 77 6f 72 64 4e 75 6d | 62 65 72 29 3b 0d 09 74 |gwordNum|ber);..t|
|000030c0| 68 69 73 2d 3e 57 72 69 | 74 65 52 65 63 6f 72 64 |his->Wri|teRecord|
|000030d0| 57 6f 72 64 28 72 65 63 | 6f 72 64 49 6e 64 65 78 |Word(rec|ordIndex|
|000030e0| 2c 20 6c 6f 6e 67 77 6f | 72 64 4e 75 6d 62 65 72 |, longwo|rdNumber|
|000030f0| 2c 20 28 63 75 72 72 65 | 6e 74 57 6f 72 64 56 61 |, (curre|ntWordVa|
|00003100| 6c 75 65 20 26 20 7e 74 | 68 65 4d 61 73 6b 29 20 |lue & ~t|heMask) |
|00003110| 7c 20 28 74 68 65 44 61 | 74 61 20 26 20 74 68 65 || (theDa|ta & the|
|00003120| 4d 61 73 6b 29 29 3b 0d | 0d 09 2f 2f 0d 09 2f 2f |Mask));.|..//..//|
|00003130| 20 49 66 20 74 68 65 20 | 75 70 64 61 74 65 20 63 | If the |update c|
|00003140| 75 72 73 6f 72 20 65 78 | 69 73 74 73 2c 20 69 6e |ursor ex|ists, in|
|00003150| 66 6f 72 6d 20 69 74 20 | 74 68 61 74 20 69 74 20 |form it |that it |
|00003160| 6e 65 65 64 73 20 74 6f | 20 63 68 61 6e 67 65 20 |needs to| change |
|00003170| 73 6f 6d 65 20 62 69 74 | 73 0d 09 2f 2f 0d 09 6c |some bit|s..//..l|
|00003180| 6f 6e 67 20 72 65 6c 61 | 74 69 76 65 49 6e 64 65 |ong rela|tiveInde|
|00003190| 78 20 3d 20 74 68 69 73 | 2d 3e 43 61 6c 63 75 6c |x = this|->Calcul|
|000031a0| 61 74 65 52 65 6c 61 74 | 69 76 65 49 6e 64 65 78 |ateRelat|iveIndex|
|000031b0| 28 72 65 63 6f 72 64 49 | 6e 64 65 78 29 3b 0d 09 |(recordI|ndex);..|
|000031c0| 69 66 28 66 52 65 63 6f | 72 64 43 75 72 73 6f 72 |if(fReco|rdCursor|
|000031d0| 73 5b 72 65 6c 61 74 69 | 76 65 49 6e 64 65 78 5d |s[relati|veIndex]|
|000031e0| 20 21 3d 20 6e 69 6c 29 | 0d 09 7b 0d 09 09 66 52 | != nil)|..{...fR|
|000031f0| 65 63 6f 72 64 43 75 72 | 73 6f 72 73 5b 72 65 6c |ecordCur|sors[rel|
|00003200| 61 74 69 76 65 49 6e 64 | 65 78 5d 2d 3e 57 72 69 |ativeInd|ex]->Wri|
|00003210| 74 65 54 68 72 6f 75 67 | 68 54 6f 54 72 61 6e 73 |teThroug|hToTrans|
|00003220| 61 63 74 69 6f 6e 28 6c | 6f 6e 67 77 6f 72 64 4e |action(l|ongwordN|
|00003230| 75 6d 62 65 72 2c 20 74 | 68 65 44 61 74 61 2c 20 |umber, t|heData, |
|00003240| 74 68 65 4d 61 73 6b 29 | 3b 0d 09 7d 0d 7d 0d 0d |theMask)|;..}.}..|
|00003250| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00003260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003270| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032a0| 2d 2d 0d 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |--.// TG|roupCont|
|000032b0| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 4d 61 6b 65 52 |rolObjec|t::MakeR|
|000032c0| 65 63 6f 72 64 44 61 74 | 61 43 6f 70 79 0d 2f 2f |ecordDat|aCopy.//|
|000032d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003310| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003320| 0d 6c 6f 6e 67 2a 20 54 | 47 72 6f 75 70 43 6f 6e |.long* T|GroupCon|
|00003330| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 4d 61 6b 65 |trolObje|ct::Make|
|00003340| 52 65 63 6f 72 64 44 61 | 74 61 43 6f 70 79 28 6c |RecordDa|taCopy(l|
|00003350| 6f 6e 67 20 72 65 63 6f | 72 64 49 6e 64 65 78 29 |ong reco|rdIndex)|
|00003360| 0d 7b 0d 09 6c 6f 6e 67 | 2a 20 72 65 63 6f 72 64 |.{..long|* record|
|00003370| 44 61 74 61 41 64 64 72 | 65 73 73 20 3d 20 74 68 |DataAddr|ess = th|
|00003380| 69 73 2d 3e 52 65 63 6f | 72 64 44 61 74 61 28 72 |is->Reco|rdData(r|
|00003390| 65 63 6f 72 64 49 6e 64 | 65 78 29 3b 0d 09 6c 6f |ecordInd|ex);..lo|
|000033a0| 6e 67 20 72 65 63 6f 72 | 64 44 61 74 61 4c 6f 6e |ng recor|dDataLon|
|000033b0| 67 73 20 3d 20 74 68 69 | 73 2d 3e 4c 6f 6e 67 77 |gs = thi|s->Longw|
|000033c0| 6f 72 64 73 49 6e 52 65 | 63 6f 72 64 28 72 65 63 |ordsInRe|cord(rec|
|000033d0| 6f 72 64 49 6e 64 65 78 | 29 3b 0d 09 0d 09 6c 6f |ordIndex|);....lo|
|000033e0| 6e 67 2a 20 64 61 74 61 | 43 6f 70 79 20 3d 20 6e |ng* data|Copy = n|
|000033f0| 65 77 20 6c 6f 6e 67 5b | 72 65 63 6f 72 64 44 61 |ew long[|recordDa|
|00003400| 74 61 4c 6f 6e 67 73 5d | 3b 0d 09 46 61 69 6c 4e |taLongs]|;..FailN|
|00003410| 69 6c 28 64 61 74 61 43 | 6f 70 79 29 3b 0d 09 43 |il(dataC|opy);..C|
|00003420| 6f 70 79 4d 65 6d 6f 72 | 79 28 72 65 63 6f 72 64 |opyMemor|y(record|
|00003430| 44 61 74 61 41 64 64 72 | 65 73 73 2c 20 64 61 74 |DataAddr|ess, dat|
|00003440| 61 43 6f 70 79 2c 20 72 | 65 63 6f 72 64 44 61 74 |aCopy, r|ecordDat|
|00003450| 61 4c 6f 6e 67 73 20 2a | 20 73 69 7a 65 6f 66 28 |aLongs *| sizeof(|
|00003460| 6c 6f 6e 67 29 29 3b 20 | 2f 2f 20 6d 65 6d 63 70 |long)); |// memcp|
|00003470| 79 28 64 61 74 61 43 6f | 70 79 2c 20 72 65 63 6f |y(dataCo|py, reco|
|00003480| 72 64 44 61 74 61 41 64 | 64 72 65 73 73 2c 20 72 |rdDataAd|dress, r|
|00003490| 65 63 6f 72 64 44 61 74 | 61 4c 6f 6e 67 73 20 2a |ecordDat|aLongs *|
|000034a0| 20 73 69 7a 65 6f 66 28 | 6c 6f 6e 67 29 29 3b 0d | sizeof(|long));.|
|000034b0| 09 0d 09 72 65 74 75 72 | 6e 20 64 61 74 61 43 6f |...retur|n dataCo|
|000034c0| 70 79 3b 0d 7d 20 2f 2f | 20 54 47 72 6f 75 70 43 |py;.} //| TGroupC|
|000034d0| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 4d 61 |ontrolOb|ject::Ma|
|000034e0| 6b 65 52 65 63 6f 72 64 | 44 61 74 61 43 6f 70 79 |keRecord|DataCopy|
|000034f0| 0d 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..//----|--------|
|00003500| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003510| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003520| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003530| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003540| 2d 2d 2d 2d 0d 2f 2f 20 | 54 47 72 6f 75 70 43 6f |----.// |TGroupCo|
|00003550| 6e 74 72 6f 6c 4f 62 6a | 65 63 74 3a 3a 43 68 61 |ntrolObj|ect::Cha|
|00003560| 6e 67 65 52 65 63 6f 72 | 64 44 61 74 61 0d 2f 2f |ngeRecor|dData.//|
|00003570| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003580| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003590| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000035c0| 0d 76 6f 69 64 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.void TG|roupCont|
|000035d0| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 43 68 61 6e 67 |rolObjec|t::Chang|
|000035e0| 65 52 65 63 6f 72 64 44 | 61 74 61 28 6c 6f 6e 67 |eRecordD|ata(long|
|000035f0| 20 72 65 63 6f 72 64 49 | 6e 64 65 78 2c 20 6c 6f | recordI|ndex, lo|
|00003600| 6e 67 2a 20 6e 65 77 44 | 61 74 61 2c 20 42 6f 6f |ng* newD|ata, Boo|
|00003610| 6c 65 61 6e 20 69 6e 68 | 69 62 69 74 43 6f 6d 70 |lean inh|ibitComp|
|00003620| 61 72 65 20 2f 2a 20 3d | 20 66 61 6c 73 65 20 2a |are /* =| false *|
|00003630| 2f 29 0d 7b 0d 09 52 45 | 51 55 49 52 45 56 41 4c |/).{..RE|QUIREVAL|
|00003640| 49 44 50 4f 49 4e 54 45 | 52 28 6e 65 77 44 61 74 |IDPOINTE|R(newDat|
|00003650| 61 29 3b 0d 09 6c 6f 6e | 67 2a 20 72 65 63 6f 72 |a);..lon|g* recor|
|00003660| 64 44 61 74 61 41 64 64 | 72 65 73 73 20 3d 20 74 |dDataAdd|ress = t|
|00003670| 68 69 73 2d 3e 52 65 63 | 6f 72 64 44 61 74 61 28 |his->Rec|ordData(|
|00003680| 72 65 63 6f 72 64 49 6e | 64 65 78 29 3b 0d 09 6c |recordIn|dex);..l|
|00003690| 6f 6e 67 20 6c 65 6e 67 | 74 68 54 6f 43 6f 70 79 |ong leng|thToCopy|
|000036a0| 20 3d 20 74 68 69 73 2d | 3e 4c 6f 6e 67 77 6f 72 | = this-|>Longwor|
|000036b0| 64 73 49 6e 52 65 63 6f | 72 64 28 72 65 63 6f 72 |dsInReco|rd(recor|
|000036c0| 64 49 6e 64 65 78 29 20 | 2a 20 73 69 7a 65 6f 66 |dIndex) |* sizeof|
|000036d0| 28 6c 6f 6e 67 29 3b 0d | 0d 09 2f 2f 0d 09 2f 2f |(long);.|..//..//|
|000036e0| 20 49 66 20 74 68 65 20 | 64 61 74 61 20 68 61 73 | If the |data has|
|000036f0| 20 63 68 61 6e 67 65 64 | 20 69 6e 20 61 6e 79 20 | changed| in any |
|00003700| 77 61 79 2c 20 74 68 65 | 6e 20 63 6f 70 79 20 74 |way, the|n copy t|
|00003710| 68 65 0d 09 2f 2f 20 6e | 65 77 20 64 61 74 61 20 |he..// n|ew data |
|00003720| 62 61 63 6b 20 69 6e 74 | 6f 20 74 68 65 20 67 72 |back int|o the gr|
|00003730| 6f 75 70 20 63 6f 6e 74 | 72 6f 6c 20 6f 62 6a 65 |oup cont|rol obje|
|00003740| 63 74 20 61 6e 64 0d 09 | 2f 2f 20 6d 61 72 6b 20 |ct and..|// mark |
|00003750| 74 68 61 74 20 74 68 69 | 73 20 6f 62 6a 65 63 74 |that thi|s object|
|00003760| 20 68 61 73 20 63 68 61 | 6e 67 65 64 2e 0d 09 2f | has cha|nged.../|
|00003770| 2f 0d 09 2f 2f 20 49 74 | 20 69 73 20 77 6f 72 74 |/..// It| is wort|
|00003780| 68 20 69 74 20 74 6f 20 | 64 6f 20 74 68 65 20 63 |h it to |do the c|
|00003790| 6f 6d 70 61 72 65 20 69 | 66 20 69 74 20 6d 65 61 |ompare i|f it mea|
|000037a0| 6e 73 20 74 68 61 74 0d | 09 2f 2f 20 77 65 20 6d |ns that.|.// we m|
|000037b0| 69 67 68 74 20 6e 6f 74 | 20 6e 65 65 64 20 74 6f |ight not| need to|
|000037c0| 20 77 72 69 74 65 20 74 | 68 69 73 20 67 72 6f 75 | write t|his grou|
|000037d0| 70 20 62 61 63 6b 20 74 | 6f 20 64 69 73 6b 3b 0d |p back t|o disk;.|
|000037e0| 09 2f 2f 20 69 66 2c 20 | 68 6f 77 65 76 65 72 2c |.// if, |however,|
|000037f0| 20 74 68 69 73 20 67 72 | 6f 75 70 20 69 73 20 61 | this gr|oup is a|
|00003800| 6c 72 65 61 64 79 20 64 | 69 72 74 79 2c 20 6f 72 |lready d|irty, or|
|00003810| 20 69 66 0d 09 2f 2f 20 | 74 68 65 20 63 61 6c 6c | if..// |the call|
|00003820| 65 72 20 6b 6e 6f 77 73 | 20 66 6f 72 20 63 65 72 |er knows| for cer|
|00003830| 74 61 69 6e 20 74 68 61 | 74 20 74 68 65 20 64 61 |tain tha|t the da|
|00003840| 74 61 20 68 61 73 0d 09 | 2f 2f 20 63 68 61 6e 67 |ta has..|// chang|
|00003850| 65 64 2c 20 74 68 65 6e | 20 77 65 20 77 6f 6e 27 |ed, then| we won'|
|00003860| 74 20 62 6f 74 68 65 72 | 20 74 6f 20 63 61 6c 6c |t bother| to call|
|00003870| 20 6d 65 6d 63 6d 70 2e | 0d 09 2f 2f 0d 09 2f 2f | memcmp.|..//..//|
|00003880| 20 46 75 74 75 72 65 3a | 20 20 57 68 65 6e 20 77 | Future:| When w|
|00003890| 65 20 73 74 61 72 74 20 | 63 6f 6c 6c 65 63 74 69 |e start |collecti|
|000038a0| 6e 67 20 63 68 61 6e 67 | 65 64 20 72 65 63 6f 72 |ng chang|ed recor|
|000038b0| 64 0d 09 2f 2f 20 67 72 | 6f 75 70 73 20 69 6e 74 |d..// gr|oups int|
|000038c0| 6f 20 63 68 61 6e 67 65 | 20 73 65 74 73 2c 20 74 |o change| sets, t|
|000038d0| 68 65 6e 20 69 74 20 61 | 6c 73 6f 20 6d 61 74 74 |hen it a|lso matt|
|000038e0| 65 72 73 20 69 66 0d 09 | 2f 2f 20 74 68 69 73 20 |ers if..|// this |
|000038f0| 72 65 63 6f 72 64 20 67 | 72 6f 75 70 20 62 65 6c |record g|roup bel|
|00003900| 6f 6e 67 73 20 74 6f 20 | 74 68 65 20 63 75 72 72 |ongs to |the curr|
|00003910| 65 6e 74 20 63 68 61 6e | 67 65 20 73 65 74 0d 09 |ent chan|ge set..|
|00003920| 2f 2f 20 79 65 74 2c 20 | 61 73 20 77 65 20 77 6f |// yet, |as we wo|
|00003930| 75 6c 64 20 6c 69 6b 65 | 20 74 6f 20 61 76 6f 69 |uld like| to avoi|
|00003940| 64 20 6d 65 72 67 69 6e | 67 20 63 68 61 6e 67 65 |d mergin|g change|
|00003950| 20 73 65 74 73 0d 09 2f | 2f 20 69 66 20 74 68 65 | sets../|/ if the|
|00003960| 20 72 65 63 6f 72 64 20 | 64 61 74 61 20 68 61 73 | record |data has|
|00003970| 6e 27 74 20 61 63 74 75 | 61 6c 6c 79 20 63 68 61 |n't actu|ally cha|
|00003980| 6e 67 65 64 2e 0d 09 2f | 2f 0d 09 2f 2f 20 d7 64 |nged.../|/..// .d|
|00003990| 69 73 61 62 6c 65 20 6d | 65 6d 6f 72 79 20 63 6f |isable m|emory co|
|000039a0| 6d 70 61 72 65 20 66 6f | 72 20 6e 6f 77 0d 09 2f |mpare fo|r now../|
|000039b0| 2f 0d 09 69 66 28 28 69 | 6e 68 69 62 69 74 43 6f |/..if((i|nhibitCo|
|000039c0| 6d 70 61 72 65 20 3d 3d | 20 74 72 75 65 29 20 7c |mpare ==| true) ||
|000039d0| 7c 20 28 74 68 69 73 2d | 3e 52 65 63 6f 72 64 47 || (this-|>RecordG|
|000039e0| 72 6f 75 70 4e 65 65 64 | 73 53 61 76 65 28 29 29 |roupNeed|sSave())|
|000039f0| 20 2f 2a 20 7c 7c 20 28 | 6d 65 6d 63 6d 70 28 72 | /* || (|memcmp(r|
|00003a00| 65 63 6f 72 64 44 61 74 | 61 41 64 64 72 65 73 73 |ecordDat|aAddress|
|00003a10| 2c 20 6e 65 77 44 61 74 | 61 2c 20 6c 65 6e 67 74 |, newDat|a, lengt|
|00003a20| 68 54 6f 43 6f 70 79 29 | 20 21 3d 20 30 29 20 2a |hToCopy)| != 0) *|
|00003a30| 2f 20 29 0d 09 7b 0d 09 | 09 43 6f 70 79 4d 65 6d |/ )..{..|.CopyMem|
|00003a40| 6f 72 79 28 6e 65 77 44 | 61 74 61 2c 20 72 65 63 |ory(newD|ata, rec|
|00003a50| 6f 72 64 44 61 74 61 41 | 64 64 72 65 73 73 2c 20 |ordDataA|ddress, |
|00003a60| 6c 65 6e 67 74 68 54 6f | 43 6f 70 79 29 3b 20 2f |lengthTo|Copy); /|
|00003a70| 2f 20 6d 65 6d 63 70 79 | 28 72 65 63 6f 72 64 44 |/ memcpy|(recordD|
|00003a80| 61 74 61 41 64 64 72 65 | 73 73 2c 20 6e 65 77 44 |ataAddre|ss, newD|
|00003a90| 61 74 61 2c 20 6c 65 6e | 67 74 68 54 6f 43 6f 70 |ata, len|gthToCop|
|00003aa0| 79 29 3b 0d 09 09 74 68 | 69 73 2d 3e 52 65 63 6f |y);...th|is->Reco|
|00003ab0| 72 64 47 72 6f 75 70 48 | 61 73 43 68 61 6e 67 65 |rdGroupH|asChange|
|00003ac0| 64 28 29 3b 0d 09 7d 0d | 7d 20 2f 2f 20 54 47 72 |d();..}.|} // TGr|
|00003ad0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00003ae0| 3a 3a 43 68 61 6e 67 65 | 52 65 63 6f 72 64 44 61 |::Change|RecordDa|
|00003af0| 74 61 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ta..//--|--------|
|00003b00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b40| 2d 2d 2d 2d 2d 2d 0d 2f | 2f 20 54 47 72 6f 75 70 |------./|/ TGroup|
|00003b50| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 52 |ControlO|bject::R|
|00003b60| 65 63 6f 72 64 44 61 74 | 61 52 65 66 65 72 65 6e |ecordDat|aReferen|
|00003b70| 63 65 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ce.//---|--------|
|00003b80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003b90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003bc0| 2d 2d 2d 2d 2d 0d 63 6f | 6e 73 74 20 54 43 6f 6e |-----.co|nst TCon|
|00003bd0| 73 74 44 61 74 61 52 65 | 66 65 72 65 6e 63 65 20 |stDataRe|ference |
|00003be0| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00003bf0| 65 63 74 3a 3a 52 65 63 | 6f 72 64 44 61 74 61 52 |ect::Rec|ordDataR|
|00003c00| 65 66 65 72 65 6e 63 65 | 28 6c 6f 6e 67 20 72 65 |eference|(long re|
|00003c10| 63 6f 72 64 49 6e 64 65 | 78 2c 20 6c 6f 6e 67 20 |cordInde|x, long |
|00003c20| 64 61 74 61 54 79 70 65 | 2c 20 6c 6f 6e 67 20 6c |dataType|, long l|
|00003c30| 6f 6e 67 77 6f 72 64 4e | 75 6d 62 65 72 2c 20 6c |ongwordN|umber, l|
|00003c40| 6f 6e 67 20 6e 75 6d 62 | 65 72 4f 66 42 79 74 65 |ong numb|erOfByte|
|00003c50| 73 29 20 63 6f 6e 73 74 | 0d 7b 0d 09 6c 6f 6e 67 |s) const|.{..long|
|00003c60| 2a 20 72 65 63 6f 72 64 | 44 61 74 61 41 64 64 72 |* record|DataAddr|
|00003c70| 65 73 73 20 3d 20 74 68 | 69 73 2d 3e 52 65 63 6f |ess = th|is->Reco|
|00003c80| 72 64 44 61 74 61 28 72 | 65 63 6f 72 64 49 6e 64 |rdData(r|ecordInd|
|00003c90| 65 78 29 3b 0d 0d 09 72 | 65 74 75 72 6e 20 54 43 |ex);...r|eturn TC|
|00003ca0| 6f 6e 73 74 44 61 74 61 | 52 65 66 65 72 65 6e 63 |onstData|Referenc|
|00003cb0| 65 28 64 61 74 61 54 79 | 70 65 2c 20 28 63 68 61 |e(dataTy|pe, (cha|
|00003cc0| 72 2a 29 26 72 65 63 6f | 72 64 44 61 74 61 41 64 |r*)&reco|rdDataAd|
|00003cd0| 64 72 65 73 73 5b 6c 6f | 6e 67 77 6f 72 64 4e 75 |dress[lo|ngwordNu|
|00003ce0| 6d 62 65 72 5d 2c 20 6e | 75 6d 62 65 72 4f 66 42 |mber], n|umberOfB|
|00003cf0| 79 74 65 73 29 3b 0d 7d | 20 2f 2f 20 54 47 72 6f |ytes);.}| // TGro|
|00003d00| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00003d10| 3a 52 65 63 6f 72 64 44 | 61 74 61 52 65 66 65 72 |:RecordD|ataRefer|
|00003d20| 65 6e 63 65 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |ence..//|--------|
|00003d30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003d70| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00003d80| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00003d90| 3a 54 72 69 6d 42 6c 6f | 63 6b 0d 2f 2f 0d 2f 2f |:TrimBlo|ck.//.//|
|00003da0| 20 52 65 64 75 63 65 20 | 74 68 65 20 73 69 7a 65 | Reduce |the size|
|00003db0| 20 6f 66 20 27 62 6c 6f | 63 6b 54 6f 54 72 69 6d | of 'blo|ckToTrim|
|00003dc0| 27 20 64 6f 77 6e 20 74 | 6f 20 27 6e 65 77 45 6e |' down t|o 'newEn|
|00003dd0| 63 6f 64 65 64 50 68 79 | 73 69 63 61 6c 53 69 7a |codedPhy|sicalSiz|
|00003de0| 65 27 2e 0d 2f 2f 20 52 | 65 74 75 72 6e 20 74 68 |e'..// R|eturn th|
|00003df0| 65 20 69 6e 64 65 78 20 | 6f 66 20 74 68 65 20 62 |e index |of the b|
|00003e00| 6c 6f 63 6b 20 6c 65 66 | 74 20 6f 76 65 72 2c 20 |lock lef|t over, |
|00003e10| 69 66 20 61 6e 79 2e 0d | 2f 2f 2d 2d 2d 2d 2d 2d |if any..|//------|
|00003e20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003e30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003e40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003e50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003e60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 6c 6f 6e 67 20 |--------|--.long |
|00003e70| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00003e80| 65 63 74 3a 3a 54 72 69 | 6d 42 6c 6f 63 6b 28 6c |ect::Tri|mBlock(l|
|00003e90| 6f 6e 67 20 62 6c 6f 63 | 6b 54 6f 54 72 69 6d 2c |ong bloc|kToTrim,|
|00003ea0| 20 6c 6f 6e 67 20 6e 65 | 77 45 6e 63 6f 64 65 64 | long ne|wEncoded|
|00003eb0| 50 68 79 73 69 63 61 6c | 53 69 7a 65 29 0d 7b 0d |Physical|Size).{.|
|00003ec0| 09 6c 6f 6e 67 20 63 75 | 72 72 65 6e 74 45 6e 63 |.long cu|rrentEnc|
|00003ed0| 6f 64 65 64 50 68 79 73 | 69 63 61 6c 53 69 7a 65 |odedPhys|icalSize|
|00003ee0| 20 3d 20 74 68 69 73 2d | 3e 42 6c 6f 63 6b 45 6e | = this-|>BlockEn|
|00003ef0| 63 6f 64 65 64 50 68 79 | 73 69 63 61 6c 53 69 7a |codedPhy|sicalSiz|
|00003f00| 65 28 62 6c 6f 63 6b 54 | 6f 54 72 69 6d 29 3b 0d |e(blockT|oTrim);.|
|00003f10| 09 6c 6f 6e 67 20 6c 65 | 66 74 4f 76 65 72 50 69 |.long le|ftOverPi|
|00003f20| 65 63 65 20 3d 20 2d 31 | 3b 0d 09 0d 09 2f 2f 0d |ece = -1|;....//.|
|00003f30| 09 2f 2f 20 44 6f 6e 27 | 74 20 74 72 69 6d 20 61 |.// Don'|t trim a|
|00003f40| 20 62 6c 6f 63 6b 20 64 | 6f 77 6e 20 62 79 20 6a | block d|own by j|
|00003f50| 75 73 74 20 6f 6e 65 20 | 72 65 63 6f 72 64 20 73 |ust one |record s|
|00003f60| 69 7a 65 3b 20 77 65 0d | 09 2f 2f 20 61 6c 77 61 |ize; we.|.// alwa|
|00003f70| 79 73 20 77 61 6e 74 20 | 74 68 65 20 6c 65 66 74 |ys want |the left|
|00003f80| 6f 76 65 72 20 70 65 69 | 63 65 20 74 6f 20 62 65 |over pei|ce to be|
|00003f90| 20 61 74 20 6c 65 61 73 | 74 20 32 20 72 65 63 6f | at leas|t 2 reco|
|00003fa0| 72 64 73 20 6c 6f 6e 67 | 2e 0d 09 2f 2f 0d 09 69 |rds long|...//..i|
|00003fb0| 66 28 28 63 75 72 72 65 | 6e 74 45 6e 63 6f 64 65 |f((curre|ntEncode|
|00003fc0| 64 50 68 79 73 69 63 61 | 6c 53 69 7a 65 20 2d 20 |dPhysica|lSize - |
|00003fd0| 6e 65 77 45 6e 63 6f 64 | 65 64 50 68 79 73 69 63 |newEncod|edPhysic|
|00003fe0| 61 6c 53 69 7a 65 29 20 | 3e 20 31 29 0d 09 7b 0d |alSize) |> 1)..{.|
|00003ff0| 09 09 2f 2f 0d 09 09 2f | 2f 20 57 65 20 61 72 65 |..//.../|/ We are|
|00004000| 20 67 6f 69 6e 67 20 74 | 6f 20 6d 61 6b 65 20 6f | going t|o make o|
|00004010| 75 72 20 62 6c 6f 63 6b | 20 73 6d 61 6c 6c 65 72 |ur block| smaller|
|00004020| 20 62 79 20 61 20 66 65 | 77 20 28 61 74 20 6c 65 | by a fe|w (at le|
|00004030| 61 73 74 20 74 77 6f 29 | 0d 09 09 2f 2f 20 72 65 |ast two)|...// re|
|00004040| 63 6f 72 64 73 3b 20 27 | 65 6e 63 6f 64 65 64 53 |cords; '|encodedS|
|00004050| 69 7a 65 4c 65 66 74 41 | 66 74 65 72 54 72 69 6d |izeLeftA|fterTrim|
|00004060| 27 20 69 73 20 74 68 65 | 20 73 69 7a 65 20 6f 66 |' is the| size of|
|00004070| 20 74 68 65 0d 09 09 2f | 2f 20 72 65 63 6f 72 64 | the.../|/ record|
|00004080| 20 6c 65 66 74 20 6f 76 | 65 72 20 61 66 74 65 72 | left ov|er after|
|00004090| 20 77 65 20 64 6f 20 73 | 6f 2e 0d 09 09 2f 2f 0d | we do s|o....//.|
|000040a0| 09 09 6c 6f 6e 67 20 65 | 6e 63 6f 64 65 64 53 69 |..long e|ncodedSi|
|000040b0| 7a 65 4c 65 66 74 41 66 | 74 65 72 54 72 69 6d 20 |zeLeftAf|terTrim |
|000040c0| 3d 20 28 63 75 72 72 65 | 6e 74 45 6e 63 6f 64 65 |= (curre|ntEncode|
|000040d0| 64 50 68 79 73 69 63 61 | 6c 53 69 7a 65 20 2d 20 |dPhysica|lSize - |
|000040e0| 6e 65 77 45 6e 63 6f 64 | 65 64 50 68 79 73 69 63 |newEncod|edPhysic|
|000040f0| 61 6c 53 69 7a 65 29 20 | 2d 20 31 3b 0d 09 09 0d |alSize) |- 1;....|
|00004100| 09 09 2f 2f 0d 09 09 2f | 2f 20 43 61 6c 63 75 6c |..//.../|/ Calcul|
|00004110| 61 74 65 20 74 68 65 20 | 72 65 63 6f 72 64 20 69 |ate the |record i|
|00004120| 6e 64 65 78 20 6f 66 20 | 74 68 65 20 62 6c 6f 63 |ndex of |the bloc|
|00004130| 6b 20 77 65 27 72 65 20 | 73 70 6c 69 74 74 69 6e |k we're |splittin|
|00004140| 67 0d 09 09 2f 2f 20 6f | 66 66 20 28 27 6c 65 66 |g...// o|ff ('lef|
|00004150| 74 4f 76 65 72 50 69 65 | 63 65 27 29 20 61 6e 64 |tOverPie|ce') and|
|00004160| 20 74 68 65 20 72 65 63 | 6f 72 64 20 69 6e 64 65 | the rec|ord inde|
|00004170| 78 20 6f 66 20 74 68 65 | 20 62 6c 6f 63 6b 0d 09 |x of the| block..|
|00004180| 09 2f 2f 20 61 66 74 65 | 72 20 74 68 69 73 20 6f |.// afte|r this o|
|00004190| 6e 65 20 28 77 65 27 6c | 6c 20 6e 65 65 64 20 74 |ne (we'l|l need t|
|000041a0| 6f 20 61 64 6a 75 73 74 | 20 69 74 73 20 27 70 68 |o adjust| its 'ph|
|000041b0| 79 73 69 63 61 6c 20 73 | 69 7a 65 0d 09 09 2f 2f |ysical s|ize...//|
|000041c0| 20 6f 66 20 70 72 65 76 | 69 6f 75 73 20 62 6c 6f | of prev|ious blo|
|000041d0| 63 6b 27 29 20 6c 69 6e | 6b 2e 0d 09 09 2f 2f 0d |ck') lin|k....//.|
|000041e0| 09 09 6c 65 66 74 4f 76 | 65 72 50 69 65 63 65 20 |..leftOv|erPiece |
|000041f0| 3d 20 62 6c 6f 63 6b 54 | 6f 54 72 69 6d 20 2b 20 |= blockT|oTrim + |
|00004200| 6e 65 77 45 6e 63 6f 64 | 65 64 50 68 79 73 69 63 |newEncod|edPhysic|
|00004210| 61 6c 53 69 7a 65 20 2b | 20 31 3b 0d 09 09 6c 6f |alSize +| 1;...lo|
|00004220| 6e 67 20 62 6c 6f 63 6b | 54 6f 46 69 78 55 70 20 |ng block|ToFixUp |
|00004230| 3d 20 62 6c 6f 63 6b 54 | 6f 54 72 69 6d 20 2b 20 |= blockT|oTrim + |
|00004240| 63 75 72 72 65 6e 74 45 | 6e 63 6f 64 65 64 50 68 |currentE|ncodedPh|
|00004250| 79 73 69 63 61 6c 53 69 | 7a 65 20 2b 20 31 3b 0d |ysicalSi|ze + 1;.|
|00004260| 09 09 41 53 53 45 52 54 | 28 6c 65 66 74 4f 76 65 |..ASSERT|(leftOve|
|00004270| 72 50 69 65 63 65 20 2b | 20 65 6e 63 6f 64 65 64 |rPiece +| encoded|
|00004280| 53 69 7a 65 4c 65 66 74 | 41 66 74 65 72 54 72 69 |SizeLeft|AfterTri|
|00004290| 6d 20 2b 20 31 20 3d 3d | 20 62 6c 6f 63 6b 54 6f |m + 1 ==| blockTo|
|000042a0| 46 69 78 55 70 29 3b 0d | 09 09 52 65 71 75 69 72 |FixUp);.|..Requir|
|000042b0| 65 28 62 6c 6f 63 6b 54 | 6f 46 69 78 55 70 20 3c |e(blockT|oFixUp <|
|000042c0| 3d 20 74 68 69 73 2d 3e | 46 69 72 73 74 52 65 63 |= this->|FirstRec|
|000042d0| 6f 72 64 49 6e 64 65 78 | 28 29 20 2b 20 6b 52 65 |ordIndex|() + kRe|
|000042e0| 63 6f 72 64 73 50 65 72 | 47 72 6f 75 70 29 3b 0d |cordsPer|Group);.|
|000042f0| 09 09 0d 09 09 2f 2f 0d | 09 09 2f 2f 20 57 65 20 |.....//.|..// We |
|00004300| 6f 6e 6c 79 20 73 70 6c | 69 74 20 62 6c 6f 63 6b |only spl|it block|
|00004310| 73 20 74 68 61 74 20 61 | 72 65 20 66 72 65 65 2c |s that a|re free,|
|00004320| 20 73 6f 20 77 65 20 6b | 6e 6f 77 20 74 68 61 74 | so we k|now that|
|00004330| 20 77 65 0d 09 09 2f 2f | 20 63 61 6e 20 61 64 6a | we...//| can adj|
|00004340| 75 73 74 20 27 62 6c 6f | 63 6b 54 6f 54 72 69 6d |ust 'blo|ckToTrim|
|00004350| 27 20 61 6e 64 20 27 6c | 65 66 74 4f 76 65 72 50 |' and 'l|eftOverP|
|00004360| 69 65 63 65 27 20 77 69 | 74 68 6f 75 74 0d 09 09 |iece' wi|thout...|
|00004370| 2f 2f 20 77 6f 72 72 79 | 69 6e 67 20 61 62 6f 75 |// worry|ing abou|
|00004380| 74 20 61 20 74 72 61 6e | 73 61 63 74 69 6f 6e 2e |t a tran|saction.|
|00004390| 0d 09 09 2f 2f 0d 09 09 | 52 65 71 75 69 72 65 28 |...//...|Require(|
|000043a0| 28 66 52 65 63 6f 72 64 | 43 75 72 73 6f 72 73 5b |(fRecord|Cursors[|
|000043b0| 74 68 69 73 2d 3e 43 61 | 6c 63 75 6c 61 74 65 52 |this->Ca|lculateR|
|000043c0| 65 6c 61 74 69 76 65 49 | 6e 64 65 78 28 62 6c 6f |elativeI|ndex(blo|
|000043d0| 63 6b 54 6f 54 72 69 6d | 29 5d 20 3d 3d 20 6e 69 |ckToTrim|)] == ni|
|000043e0| 6c 29 20 26 26 20 28 66 | 52 65 63 6f 72 64 43 75 |l) && (f|RecordCu|
|000043f0| 72 73 6f 72 73 5b 74 68 | 69 73 2d 3e 43 61 6c 63 |rsors[th|is->Calc|
|00004400| 75 6c 61 74 65 52 65 6c | 61 74 69 76 65 49 6e 64 |ulateRel|ativeInd|
|00004410| 65 78 28 6c 65 66 74 4f | 76 65 72 50 69 65 63 65 |ex(leftO|verPiece|
|00004420| 29 5d 20 3d 3d 20 6e 69 | 6c 29 29 3b 0d 09 09 6c |)] == ni|l));...l|
|00004430| 6f 6e 67 20 74 72 69 6d | 42 6c 6f 63 6b 46 6c 61 |ong trim|BlockFla|
|00004440| 67 73 20 3d 20 74 68 69 | 73 2d 3e 47 65 74 52 65 |gs = thi|s->GetRe|
|00004450| 63 6f 72 64 57 6f 72 64 | 28 62 6c 6f 63 6b 54 6f |cordWord|(blockTo|
|00004460| 54 72 69 6d 2c 20 6b 52 | 65 63 6f 72 64 49 44 46 |Trim, kR|ecordIDF|
|00004470| 6c 61 67 73 57 6f 72 64 | 29 3b 0d 09 09 74 72 69 |lagsWord|);...tri|
|00004480| 6d 42 6c 6f 63 6b 46 6c | 61 67 73 20 3d 20 28 74 |mBlockFl|ags = (t|
|00004490| 72 69 6d 42 6c 6f 63 6b | 46 6c 61 67 73 20 26 20 |rimBlock|Flags & |
|000044a0| 7e 6b 44 61 74 61 52 65 | 63 6f 72 64 50 68 79 73 |~kDataRe|cordPhys|
|000044b0| 69 63 61 6c 53 69 7a 65 | 42 69 74 73 29 20 7c 20 |icalSize|Bits) | |
|000044c0| 28 28 6e 65 77 45 6e 63 | 6f 64 65 64 50 68 79 73 |((newEnc|odedPhys|
|000044d0| 69 63 61 6c 53 69 7a 65 | 20 3c 3c 20 6b 44 61 74 |icalSize| << kDat|
|000044e0| 61 52 65 63 6f 72 64 50 | 68 79 73 69 63 61 6c 53 |aRecordP|hysicalS|
|000044f0| 69 7a 65 53 68 69 66 74 | 29 20 26 20 6b 44 61 74 |izeShift|) & kDat|
|00004500| 61 52 65 63 6f 72 64 50 | 68 79 73 69 63 61 6c 53 |aRecordP|hysicalS|
|00004510| 69 7a 65 42 69 74 73 29 | 3b 0d 09 09 6c 6f 6e 67 |izeBits)|;...long|
|00004520| 20 6c 65 66 74 4f 76 65 | 72 42 6c 6f 63 6b 46 6c | leftOve|rBlockFl|
|00004530| 61 67 73 20 3d 09 28 6b | 46 72 65 65 44 61 74 61 |ags =.(k|FreeData|
|00004540| 52 65 63 6f 72 64 49 44 | 29 20 7c 0d 09 09 09 09 |RecordID|) |.....|
|00004550| 09 09 09 09 09 28 28 65 | 6e 63 6f 64 65 64 53 69 |.....((e|ncodedSi|
|00004560| 7a 65 4c 65 66 74 41 66 | 74 65 72 54 72 69 6d 20 |zeLeftAf|terTrim |
|00004570| 3c 3c 20 6b 44 61 74 61 | 52 65 63 6f 72 64 50 68 |<< kData|RecordPh|
|00004580| 79 73 69 63 61 6c 53 69 | 7a 65 53 68 69 66 74 29 |ysicalSi|zeShift)|
|00004590| 20 26 20 6b 44 61 74 61 | 52 65 63 6f 72 64 50 68 | & kData|RecordPh|
|000045a0| 79 73 69 63 61 6c 53 69 | 7a 65 42 69 74 73 29 20 |ysicalSi|zeBits) |
|000045b0| 7c 0d 09 09 09 09 09 09 | 09 09 09 28 28 6e 65 77 ||.......|...((new|
|000045c0| 45 6e 63 6f 64 65 64 50 | 68 79 73 69 63 61 6c 53 |EncodedP|hysicalS|
|000045d0| 69 7a 65 20 3c 3c 20 6b | 50 72 65 76 69 6f 75 73 |ize << k|Previous|
|000045e0| 52 65 63 6f 72 64 50 68 | 79 73 69 63 61 6c 53 69 |RecordPh|ysicalSi|
|000045f0| 7a 65 53 68 69 66 74 29 | 20 26 20 6b 50 72 65 76 |zeShift)| & kPrev|
|00004600| 69 6f 75 73 52 65 63 6f | 72 64 50 68 79 73 69 63 |iousReco|rdPhysic|
|00004610| 61 6c 53 69 7a 65 42 69 | 74 73 29 3b 0d 09 09 74 |alSizeBi|ts);...t|
|00004620| 68 69 73 2d 3e 57 72 69 | 74 65 52 65 63 6f 72 64 |his->Wri|teRecord|
|00004630| 57 6f 72 64 28 62 6c 6f | 63 6b 54 6f 54 72 69 6d |Word(blo|ckToTrim|
|00004640| 2c 20 6b 52 65 63 6f 72 | 64 49 44 46 6c 61 67 73 |, kRecor|dIDFlags|
|00004650| 57 6f 72 64 2c 20 74 72 | 69 6d 42 6c 6f 63 6b 46 |Word, tr|imBlockF|
|00004660| 6c 61 67 73 29 3b 0d 09 | 09 74 68 69 73 2d 3e 57 |lags);..|.this->W|
|00004670| 72 69 74 65 52 65 63 6f | 72 64 57 6f 72 64 28 6c |riteReco|rdWord(l|
|00004680| 65 66 74 4f 76 65 72 50 | 69 65 63 65 2c 20 6b 52 |eftOverP|iece, kR|
|00004690| 65 63 6f 72 64 49 44 46 | 6c 61 67 73 57 6f 72 64 |ecordIDF|lagsWord|
|000046a0| 2c 20 6c 65 66 74 4f 76 | 65 72 42 6c 6f 63 6b 46 |, leftOv|erBlockF|
|000046b0| 6c 61 67 73 29 3b 0d 09 | 09 74 68 69 73 2d 3e 57 |lags);..|.this->W|
|000046c0| 72 69 74 65 52 65 63 6f | 72 64 57 6f 72 64 28 6c |riteReco|rdWord(l|
|000046d0| 65 66 74 4f 76 65 72 50 | 69 65 63 65 2c 20 6b 46 |eftOverP|iece, kF|
|000046e0| 72 65 65 4e 6f 64 65 4c | 69 6e 6b 42 79 74 65 2c |reeNodeL|inkByte,|
|000046f0| 20 6b 46 72 65 65 52 65 | 63 6f 72 64 4e 6f 74 4c | kFreeRe|cordNotL|
|00004700| 69 6e 6b 65 64 54 6f 54 | 72 65 65 29 3b 0d 09 09 |inkedToT|ree);...|
|00004710| 74 68 69 73 2d 3e 57 72 | 69 74 65 52 65 63 6f 72 |this->Wr|iteRecor|
|00004720| 64 57 6f 72 64 28 6c 65 | 66 74 4f 76 65 72 50 69 |dWord(le|ftOverPi|
|00004730| 65 63 65 2c 20 6b 50 72 | 65 76 69 6f 75 73 46 72 |ece, kPr|eviousFr|
|00004740| 65 65 4e 6f 64 65 4c 69 | 6e 6b 42 79 74 65 2c 20 |eeNodeLi|nkByte, |
|00004750| 6b 4e 69 6c 49 6e 64 65 | 78 29 3b 0d 09 09 0d 09 |kNilInde|x);.....|
|00004760| 09 2f 2f 0d 09 09 2f 2f | 20 44 6f 6e 27 74 20 66 |.//...//| Don't f|
|00004770| 6f 72 67 65 74 2c 20 77 | 68 65 6e 20 73 65 74 74 |orget, w|hen sett|
|00004780| 69 6e 67 20 74 68 65 20 | 27 70 72 65 76 69 6f 75 |ing the |'previou|
|00004790| 73 20 62 6c 6f 63 6b 20 | 70 68 79 73 69 63 61 6c |s block |physical|
|000047a0| 20 73 69 7a 65 27 0d 09 | 09 2f 2f 20 62 69 74 73 | size'..|.// bits|
|000047b0| 2c 20 74 68 61 74 20 74 | 68 65 20 72 65 63 6f 72 |, that t|he recor|
|000047c0| 64 20 62 65 69 6e 67 20 | 63 68 61 6e 67 65 64 20 |d being |changed |
|000047d0| 6d 61 79 20 68 61 76 65 | 20 61 6e 20 61 63 74 69 |may have| an acti|
|000047e0| 76 65 20 63 68 61 6e 67 | 65 20 69 6d 61 67 65 2e |ve chang|e image.|
|000047f0| 0d 09 09 2f 2f 20 49 66 | 20 74 68 61 74 27 73 20 |...// If| that's |
|00004800| 74 68 65 20 63 61 73 65 | 2c 20 74 68 65 6e 20 69 |the case|, then i|
|00004810| 74 20 77 69 6c 6c 20 62 | 65 20 6e 65 63 65 73 73 |t will b|e necess|
|00004820| 61 72 79 20 74 6f 20 63 | 68 61 6e 67 65 20 62 6f |ary to c|hange bo|
|00004830| 74 68 0d 09 09 2f 2f 20 | 74 68 65 20 47 72 6f 75 |th...// |the Grou|
|00004840| 70 20 43 6f 6e 74 72 6f | 6c 20 4f 62 6a 65 63 74 |p Contro|l Object|
|00004850| 27 73 20 70 72 65 76 69 | 6f 75 73 2d 70 68 79 73 |'s previ|ous-phys|
|00004860| 69 63 61 6c 2d 73 69 7a | 65 20 76 61 6c 75 65 2c |ical-siz|e value,|
|00004870| 20 61 6e 64 20 74 68 65 | 0d 09 09 2f 2f 20 63 68 | and the|...// ch|
|00004880| 61 6e 67 65 20 69 6d 61 | 67 65 27 73 20 70 72 65 |ange ima|ge's pre|
|00004890| 76 69 6f 75 73 2d 70 68 | 79 73 69 63 61 6c 2d 73 |vious-ph|ysical-s|
|000048a0| 69 7a 65 20 76 61 6c 75 | 65 2e 0d 09 09 2f 2f 0d |ize valu|e....//.|
|000048b0| 09 09 69 66 28 62 6c 6f | 63 6b 54 6f 46 69 78 55 |..if(blo|ckToFixU|
|000048c0| 70 20 3c 20 28 74 68 69 | 73 2d 3e 46 69 72 73 74 |p < (thi|s->First|
|000048d0| 52 65 63 6f 72 64 49 6e | 64 65 78 28 29 20 2b 20 |RecordIn|dex() + |
|000048e0| 6b 52 65 63 6f 72 64 73 | 50 65 72 47 72 6f 75 70 |kRecords|PerGroup|
|000048f0| 29 29 0d 09 09 7b 0d 09 | 09 09 74 68 69 73 2d 3e |))...{..|..this->|
|00004900| 57 72 69 74 65 54 68 72 | 6f 75 67 68 54 6f 54 72 |WriteThr|oughToTr|
|00004910| 61 6e 73 61 63 74 69 6f | 6e 28 62 6c 6f 63 6b 54 |ansactio|n(blockT|
|00004920| 6f 46 69 78 55 70 2c 20 | 6b 52 65 63 6f 72 64 49 |oFixUp, |kRecordI|
|00004930| 44 46 6c 61 67 73 57 6f | 72 64 2c 20 28 65 6e 63 |DFlagsWo|rd, (enc|
|00004940| 6f 64 65 64 53 69 7a 65 | 4c 65 66 74 41 66 74 65 |odedSize|LeftAfte|
|00004950| 72 54 72 69 6d 20 3c 3c | 20 6b 50 72 65 76 69 6f |rTrim <<| kPrevio|
|00004960| 75 73 52 65 63 6f 72 64 | 50 68 79 73 69 63 61 6c |usRecord|Physical|
|00004970| 53 69 7a 65 53 68 69 66 | 74 29 2c 20 6b 50 72 65 |SizeShif|t), kPre|
|00004980| 76 69 6f 75 73 52 65 63 | 6f 72 64 50 68 79 73 69 |viousRec|ordPhysi|
|00004990| 63 61 6c 53 69 7a 65 42 | 69 74 73 29 3b 0d 09 09 |calSizeB|its);...|
|000049a0| 7d 0d 09 7d 0d 09 0d 09 | 72 65 74 75 72 6e 20 6c |}..}....|return l|
|000049b0| 65 66 74 4f 76 65 72 50 | 69 65 63 65 3b 0d 7d 20 |eftOverP|iece;.} |
|000049c0| 2f 2f 20 54 47 72 6f 75 | 70 43 6f 6e 74 72 6f 6c |// TGrou|pControl|
|000049d0| 4f 62 6a 65 63 74 3a 3a | 54 72 69 6d 42 6c 6f 63 |Object::|TrimBloc|
|000049e0| 6b 0d 0d 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |k..//---|--------|
|000049f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a30| 2d 2d 2d 2d 2d 0d 2f 2f | 20 54 47 72 6f 75 70 43 |-----.//| TGroupC|
|00004a40| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 56 65 |ontrolOb|ject::Ve|
|00004a50| 72 69 66 79 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |rify.//-|--------|
|00004a60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004a90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004aa0| 2d 2d 2d 2d 2d 2d 2d 0d | 76 6f 69 64 20 54 47 72 |-------.|void TGr|
|00004ab0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|00004ac0| 3a 3a 56 65 72 69 66 79 | 28 6c 6f 6e 67 20 72 65 |::Verify|(long re|
|00004ad0| 63 6f 72 64 49 6e 64 65 | 78 2c 20 42 6f 6f 6c 65 |cordInde|x, Boole|
|00004ae0| 61 6e 20 76 65 72 69 66 | 79 53 75 62 73 65 71 75 |an verif|ySubsequ|
|00004af0| 65 6e 74 29 0d 7b 0d 09 | 6c 6f 6e 67 20 6e 65 78 |ent).{..|long nex|
|00004b00| 74 52 65 63 6f 72 64 20 | 3d 20 74 68 69 73 2d 3e |tRecord |= this->|
|00004b10| 4e 65 78 74 52 65 63 6f | 72 64 49 6e 64 65 78 28 |NextReco|rdIndex(|
|00004b20| 72 65 63 6f 72 64 49 6e | 64 65 78 29 3b 0d 09 6c |recordIn|dex);..l|
|00004b30| 6f 6e 67 20 70 72 65 76 | 69 6f 75 73 52 65 63 6f |ong prev|iousReco|
|00004b40| 72 64 20 3d 20 74 68 69 | 73 2d 3e 50 72 65 76 69 |rd = thi|s->Previ|
|00004b50| 6f 75 73 52 65 63 6f 72 | 64 49 6e 64 65 78 28 72 |ousRecor|dIndex(r|
|00004b60| 65 63 6f 72 64 49 6e 64 | 65 78 29 3b 0d 09 42 6f |ecordInd|ex);..Bo|
|00004b70| 6f 6c 65 61 6e 20 6f 75 | 72 45 6e 63 6f 64 65 64 |olean ou|rEncoded|
|00004b80| 53 69 7a 65 49 73 5a 65 | 72 6f 20 3d 20 28 74 68 |SizeIsZe|ro = (th|
|00004b90| 69 73 2d 3e 42 6c 6f 63 | 6b 45 6e 63 6f 64 65 64 |is->Bloc|kEncoded|
|00004ba0| 50 68 79 73 69 63 61 6c | 53 69 7a 65 28 72 65 63 |Physical|Size(rec|
|00004bb0| 6f 72 64 49 6e 64 65 78 | 29 20 3d 3d 20 30 29 3b |ordIndex|) == 0);|
|00004bc0| 0d 09 0d 09 2f 2f 0d 09 | 2f 2f 20 50 72 65 76 69 |....//..|// Previ|
|00004bd0| 6f 75 73 52 65 63 6f 72 | 64 20 73 68 6f 75 6c 64 |ousRecor|d should|
|00004be0| 20 6f 6e 6c 79 20 62 65 | 20 2d 31 20 61 74 20 74 | only be| -1 at t|
|00004bf0| 68 65 20 66 69 72 73 74 | 20 72 65 63 6f 72 64 20 |he first| record |
|00004c00| 69 6e 20 74 68 65 20 67 | 72 6f 75 70 0d 09 2f 2f |in the g|roup..//|
|00004c10| 0d 09 69 66 28 70 72 65 | 76 69 6f 75 73 52 65 63 |..if(pre|viousRec|
|00004c20| 6f 72 64 20 3d 3d 20 2d | 31 29 0d 09 7b 0d 09 09 |ord == -|1)..{...|
|00004c30| 69 66 28 72 65 63 6f 72 | 64 49 6e 64 65 78 20 21 |if(recor|dIndex !|
|00004c40| 3d 20 74 68 69 73 2d 3e | 46 69 72 73 74 52 65 63 |= this->|FirstRec|
|00004c50| 6f 72 64 49 6e 64 65 78 | 28 29 29 0d 09 09 09 44 |ordIndex|())....D|
|00004c60| 65 62 75 67 53 74 72 28 | 22 5c 70 52 65 63 6f 72 |ebugStr(|"\pRecor|
|00004c70| 64 20 6f 74 68 65 72 20 | 74 68 61 6e 20 74 68 65 |d other |than the|
|00004c80| 20 66 69 72 73 74 20 68 | 61 64 20 61 20 6e 69 6c | first h|ad a nil|
|00004c90| 20 70 72 65 76 69 6f 75 | 73 22 29 3b 0d 09 7d 0d | previou|s");..}.|
|00004ca0| 09 65 6c 73 65 0d 09 7b | 0d 09 09 69 66 28 74 68 |.else..{|...if(th|
|00004cb0| 69 73 2d 3e 4e 65 78 74 | 52 65 63 6f 72 64 49 6e |is->Next|RecordIn|
|00004cc0| 64 65 78 28 70 72 65 76 | 69 6f 75 73 52 65 63 6f |dex(prev|iousReco|
|00004cd0| 72 64 29 20 21 3d 20 72 | 65 63 6f 72 64 49 6e 64 |rd) != r|ecordInd|
|00004ce0| 65 78 29 0d 09 09 09 44 | 65 62 75 67 53 74 72 28 |ex)....D|ebugStr(|
|00004cf0| 22 5c 70 52 65 63 6f 72 | 64 27 73 20 70 72 65 76 |"\pRecor|d's prev|
|00004d00| 69 6f 75 73 20 6c 69 6e | 6b 20 64 6f 65 73 6e 27 |ious lin|k doesn'|
|00004d10| 74 20 70 6f 69 6e 74 20 | 62 61 63 6b 22 29 3b 0d |t point |back");.|
|00004d20| 0d 09 09 42 6f 6f 6c 65 | 61 6e 20 70 72 65 76 45 |...Boole|an prevE|
|00004d30| 6e 63 6f 64 65 64 53 69 | 7a 65 49 73 5a 65 72 6f |ncodedSi|zeIsZero|
|00004d40| 20 3d 20 28 74 68 69 73 | 2d 3e 42 6c 6f 63 6b 45 | = (this|->BlockE|
|00004d50| 6e 63 6f 64 65 64 50 68 | 79 73 69 63 61 6c 53 69 |ncodedPh|ysicalSi|
|00004d60| 7a 65 28 70 72 65 76 69 | 6f 75 73 52 65 63 6f 72 |ze(previ|ousRecor|
|00004d70| 64 29 20 3d 3d 20 30 29 | 3b 0d 09 09 69 66 28 70 |d) == 0)|;...if(p|
|00004d80| 72 65 76 45 6e 63 6f 64 | 65 64 53 69 7a 65 49 73 |revEncod|edSizeIs|
|00004d90| 5a 65 72 6f 20 21 3d 20 | 6f 75 72 45 6e 63 6f 64 |Zero != |ourEncod|
|00004da0| 65 64 53 69 7a 65 49 73 | 5a 65 72 6f 29 0d 09 09 |edSizeIs|Zero)...|
|00004db0| 09 44 65 62 75 67 53 74 | 72 28 22 5c 70 4d 69 78 |.DebugSt|r("\pMix|
|00004dc0| 65 64 20 73 69 6e 67 6c | 65 20 61 6e 64 20 6d 75 |ed singl|e and mu|
|00004dd0| 6c 74 69 70 6c 65 20 72 | 65 63 6f 72 64 20 64 61 |ltiple r|ecord da|
|00004de0| 74 61 20 62 6c 6f 63 6b | 73 20 69 6e 20 6f 6e 65 |ta block|s in one|
|00004df0| 20 67 72 6f 75 70 22 29 | 3b 0d 09 7d 0d 09 0d 09 | group")|;..}....|
|00004e00| 69 66 28 6e 65 78 74 52 | 65 63 6f 72 64 20 21 3d |if(nextR|ecord !=|
|00004e10| 20 2d 31 29 0d 09 7b 0d | 09 09 69 66 28 6e 65 78 | -1)..{.|..if(nex|
|00004e20| 74 52 65 63 6f 72 64 20 | 3e 20 28 46 69 72 73 74 |tRecord |> (First|
|00004e30| 52 65 63 6f 72 64 49 6e | 64 65 78 28 29 20 2b 20 |RecordIn|dex() + |
|00004e40| 6b 52 65 63 6f 72 64 73 | 50 65 72 47 72 6f 75 70 |kRecords|PerGroup|
|00004e50| 29 29 0d 09 09 09 44 65 | 62 75 67 53 74 72 28 22 |))....De|bugStr("|
|00004e60| 5c 70 44 61 74 61 20 72 | 65 63 6f 72 64 20 70 6f |\pData r|ecord po|
|00004e70| 69 6e 74 73 20 70 61 73 | 74 20 74 68 65 20 65 6e |ints pas|t the en|
|00004e80| 64 20 6f 66 20 61 20 72 | 65 63 6f 72 64 20 67 72 |d of a r|ecord gr|
|00004e90| 6f 75 70 22 29 3b 0d 09 | 09 65 6c 73 65 20 69 66 |oup");..|.else if|
|00004ea0| 28 28 6e 65 78 74 52 65 | 63 6f 72 64 20 3c 20 74 |((nextRe|cord < t|
|00004eb0| 68 69 73 2d 3e 46 69 72 | 73 74 52 65 63 6f 72 64 |his->Fir|stRecord|
|00004ec0| 49 6e 64 65 78 28 29 20 | 2b 20 6b 52 65 63 6f 72 |Index() |+ kRecor|
|00004ed0| 64 73 50 65 72 47 72 6f | 75 70 29 29 0d 09 09 7b |dsPerGro|up))...{|
|00004ee0| 0d 09 09 09 69 66 28 74 | 68 69 73 2d 3e 50 72 65 |....if(t|his->Pre|
|00004ef0| 76 69 6f 75 73 52 65 63 | 6f 72 64 49 6e 64 65 78 |viousRec|ordIndex|
|00004f00| 28 6e 65 78 74 52 65 63 | 6f 72 64 29 20 21 3d 20 |(nextRec|ord) != |
|00004f10| 72 65 63 6f 72 64 49 6e | 64 65 78 29 0d 09 09 09 |recordIn|dex)....|
|00004f20| 09 44 65 62 75 67 53 74 | 72 28 22 5c 70 52 65 63 |.DebugSt|r("\pRec|
|00004f30| 6f 72 64 27 73 20 6e 65 | 78 74 20 6c 69 6e 6b 20 |ord's ne|xt link |
|00004f40| 64 6f 65 73 6e 27 74 20 | 70 6f 69 6e 74 20 62 61 |doesn't |point ba|
|00004f50| 63 6b 22 29 3b 0d 09 09 | 09 65 6c 73 65 20 69 66 |ck");...|.else if|
|00004f60| 28 76 65 72 69 66 79 53 | 75 62 73 65 71 75 65 6e |(verifyS|ubsequen|
|00004f70| 74 20 3d 3d 20 74 72 75 | 65 29 0d 09 09 09 09 74 |t == tru|e).....t|
|00004f80| 68 69 73 2d 3e 56 65 72 | 69 66 79 28 6e 65 78 74 |his->Ver|ify(next|
|00004f90| 52 65 63 6f 72 64 2c 20 | 74 72 75 65 29 3b 0d 09 |Record, |true);..|
|00004fa0| 09 7d 0d 09 7d 0d 7d 20 | 2f 2f 20 54 47 72 6f 75 |.}..}.} |// TGrou|
|00004fb0| 70 43 6f 6e 74 72 6f 6c | 4f 62 6a 65 63 74 3a 3a |pControl|Object::|
|00004fc0| 56 65 72 69 66 79 0d 0d | 2f 2f 2d 2d 2d 2d 2d 2d |Verify..|//------|
|00004fd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004fe0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005000| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005010| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 2f 2f 20 54 47 |--------|--.// TG|
|00005020| 72 6f 75 70 43 6f 6e 74 | 72 6f 6c 4f 62 6a 65 63 |roupCont|rolObjec|
|00005030| 74 3a 3a 41 6c 6c 6f 63 | 61 74 65 4d 65 6d 6f 72 |t::Alloc|ateMemor|
|00005040| 79 46 6f 72 52 65 63 6f | 72 64 44 61 74 61 0d 2f |yForReco|rdData./|
|00005050| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|00005060| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005070| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005080| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005090| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000050a0| 2d 0d 76 6f 69 64 20 54 | 47 72 6f 75 70 43 6f 6e |-.void T|GroupCon|
|000050b0| 74 72 6f 6c 4f 62 6a 65 | 63 74 3a 3a 41 6c 6c 6f |trolObje|ct::Allo|
|000050c0| 63 61 74 65 4d 65 6d 6f | 72 79 46 6f 72 52 65 63 |cateMemo|ryForRec|
|000050d0| 6f 72 64 44 61 74 61 28 | 29 0d 7b 0d 09 69 66 28 |ordData(|).{..if(|
|000050e0| 66 52 65 63 6f 72 64 44 | 61 74 61 20 3d 3d 20 6e |fRecordD|ata == n|
|000050f0| 69 6c 29 0d 09 7b 0d 09 | 09 66 52 65 63 6f 72 64 |il)..{..|.fRecord|
|00005100| 44 61 74 61 20 3d 20 6e | 65 77 20 6c 6f 6e 67 5b |Data = n|ew long[|
|00005110| 6b 4c 6f 6e 67 57 6f 72 | 64 73 50 65 72 52 65 63 |kLongWor|dsPerRec|
|00005120| 6f 72 64 20 2a 20 6b 52 | 65 63 6f 72 64 73 50 65 |ord * kR|ecordsPe|
|00005130| 72 47 72 6f 75 70 5d 3b | 0d 09 09 46 61 69 6c 4e |rGroup];|...FailN|
|00005140| 69 6c 28 66 52 65 63 6f | 72 64 44 61 74 61 29 3b |il(fReco|rdData);|
|00005150| 0d 09 7d 0d 7d 20 2f 2f | 20 54 47 72 6f 75 70 43 |..}.} //| TGroupC|
|00005160| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 41 6c |ontrolOb|ject::Al|
|00005170| 6c 6f 63 61 74 65 4d 65 | 6d 6f 72 79 46 6f 72 52 |locateMe|moryForR|
|00005180| 65 63 6f 72 64 44 61 74 | 61 0d 0d 2f 2f 2d 2d 2d |ecordDat|a..//---|
|00005190| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000051d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 2f 2f |--------|-----.//|
|000051e0| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|000051f0| 6a 65 63 74 3a 3a 52 65 | 61 64 52 65 63 6f 72 64 |ject::Re|adRecord|
|00005200| 47 72 6f 75 70 46 72 6f | 6d 44 69 73 6b 0d 2f 2f |GroupFro|mDisk.//|
|00005210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005260| 0d 76 6f 69 64 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.void TG|roupCont|
|00005270| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 52 65 61 64 52 |rolObjec|t::ReadR|
|00005280| 65 63 6f 72 64 47 72 6f | 75 70 46 72 6f 6d 44 69 |ecordGro|upFromDi|
|00005290| 73 6b 28 54 41 62 73 74 | 72 61 63 74 42 61 63 6b |sk(TAbst|ractBack|
|000052a0| 69 6e 67 53 74 6f 72 65 | 2a 20 62 61 63 6b 69 6e |ingStore|* backin|
|000052b0| 67 53 74 6f 72 65 54 6f | 55 73 65 20 2f 2a 3d 20 |gStoreTo|Use /*= |
|000052c0| 6e 69 6c 2a 2f 29 0d 7b | 0d 09 52 65 71 75 69 72 |nil*/).{|..Requir|
|000052d0| 65 28 66 52 65 63 6f 72 | 64 47 72 6f 75 70 48 61 |e(fRecor|dGroupHa|
|000052e0| 73 43 68 61 6e 67 65 64 | 20 3d 3d 20 66 61 6c 73 |sChanged| == fals|
|000052f0| 65 29 3b 0d 09 69 66 28 | 66 52 65 63 6f 72 64 44 |e);..if(|fRecordD|
|00005300| 61 74 61 20 3d 3d 20 6e | 69 6c 29 0d 09 7b 0d 09 |ata == n|il)..{..|
|00005310| 09 74 68 69 73 2d 3e 41 | 6c 6c 6f 63 61 74 65 4d |.this->A|llocateM|
|00005320| 65 6d 6f 72 79 46 6f 72 | 52 65 63 6f 72 64 44 61 |emoryFor|RecordDa|
|00005330| 74 61 28 29 3b 0d 09 09 | 44 42 44 6f 63 75 6d 65 |ta();...|DBDocume|
|00005340| 6e 74 28 29 2d 3e 52 65 | 61 64 52 65 63 6f 72 64 |nt()->Re|adRecord|
|00005350| 52 61 6e 67 65 28 66 52 | 65 63 6f 72 64 44 61 74 |Range(fR|ecordDat|
|00005360| 61 2c 20 74 68 69 73 2d | 3e 46 69 72 73 74 52 65 |a, this-|>FirstRe|
|00005370| 63 6f 72 64 49 6e 64 65 | 78 28 29 20 2a 20 6b 53 |cordInde|x() * kS|
|00005380| 69 6e 67 6c 65 52 65 63 | 6f 72 64 53 69 7a 65 2c |ingleRec|ordSize,|
|00005390| 20 6b 4c 6f 6e 67 57 6f | 72 64 73 50 65 72 52 65 | kLongWo|rdsPerRe|
|000053a0| 63 6f 72 64 20 2a 20 6b | 52 65 63 6f 72 64 73 50 |cord * k|RecordsP|
|000053b0| 65 72 47 72 6f 75 70 20 | 2a 20 73 69 7a 65 6f 66 |erGroup |* sizeof|
|000053c0| 28 6c 6f 6e 67 29 2c 20 | 62 61 63 6b 69 6e 67 53 |(long), |backingS|
|000053d0| 74 6f 72 65 54 6f 55 73 | 65 29 3b 0d 09 09 66 52 |toreToUs|e);...fR|
|000053e0| 65 63 6f 72 64 47 72 6f | 75 70 48 61 73 43 68 61 |ecordGro|upHasCha|
|000053f0| 6e 67 65 64 20 3d 20 66 | 61 6c 73 65 3b 0d 09 7d |nged = f|alse;..}|
|00005400| 0d 7d 20 2f 2f 20 54 47 | 72 6f 75 70 43 6f 6e 74 |.} // TG|roupCont|
|00005410| 72 6f 6c 4f 62 6a 65 63 | 74 3a 3a 52 65 61 64 52 |rolObjec|t::ReadR|
|00005420| 65 63 6f 72 64 47 72 6f | 75 70 46 72 6f 6d 44 69 |ecordGro|upFromDi|
|00005430| 73 6b 0d 0d 2f 2f 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |sk..//--|--------|
|00005440| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005450| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005460| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005470| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005480| 2d 2d 2d 2d 2d 2d 0d 2f | 2f 20 54 47 72 6f 75 70 |------./|/ TGroup|
|00005490| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 46 |ControlO|bject::F|
|000054a0| 6c 75 73 68 43 68 61 6e | 67 65 73 54 6f 44 69 73 |lushChan|gesToDis|
|000054b0| 6b 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |k.//----|--------|
|000054c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000054d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000054e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000054f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005500| 2d 2d 2d 2d 0d 76 6f 69 | 64 20 54 47 72 6f 75 70 |----.voi|d TGroup|
|00005510| 43 6f 6e 74 72 6f 6c 4f | 62 6a 65 63 74 3a 3a 46 |ControlO|bject::F|
|00005520| 6c 75 73 68 43 68 61 6e | 67 65 73 54 6f 44 69 73 |lushChan|gesToDis|
|00005530| 6b 28 54 41 62 73 74 72 | 61 63 74 42 61 63 6b 69 |k(TAbstr|actBacki|
|00005540| 6e 67 53 74 6f 72 65 2a | 20 62 61 63 6b 69 6e 67 |ngStore*| backing|
|00005550| 53 74 6f 72 65 54 6f 55 | 73 65 20 2f 2a 3d 20 6e |StoreToU|se /*= n|
|00005560| 69 6c 2a 2f 29 0d 7b 0d | 09 69 66 28 28 66 52 65 |il*/).{.|.if((fRe|
|00005570| 63 6f 72 64 44 61 74 61 | 20 21 3d 20 6e 69 6c 29 |cordData| != nil)|
|00005580| 20 26 26 20 66 52 65 63 | 6f 72 64 47 72 6f 75 70 | && fRec|ordGroup|
|00005590| 48 61 73 43 68 61 6e 67 | 65 64 29 0d 09 09 44 42 |HasChang|ed)...DB|
|000055a0| 44 6f 63 75 6d 65 6e 74 | 28 29 2d 3e 57 72 69 74 |Document|()->Writ|
|000055b0| 65 52 65 63 6f 72 64 52 | 61 6e 67 65 28 66 52 65 |eRecordR|ange(fRe|
|000055c0| 63 6f 72 64 44 61 74 61 | 2c 20 74 68 69 73 2d 3e |cordData|, this->|
|000055d0| 46 69 72 73 74 52 65 63 | 6f 72 64 49 6e 64 65 78 |FirstRec|ordIndex|
|000055e0| 28 29 20 2a 20 6b 53 69 | 6e 67 6c 65 52 65 63 6f |() * kSi|ngleReco|
|000055f0| 72 64 53 69 7a 65 2c 20 | 6b 4c 6f 6e 67 57 6f 72 |rdSize, |kLongWor|
|00005600| 64 73 50 65 72 52 65 63 | 6f 72 64 20 2a 20 6b 52 |dsPerRec|ord * kR|
|00005610| 65 63 6f 72 64 73 50 65 | 72 47 72 6f 75 70 20 2a |ecordsPe|rGroup *|
|00005620| 20 73 69 7a 65 6f 66 28 | 6c 6f 6e 67 29 2c 20 62 | sizeof(|long), b|
|00005630| 61 63 6b 69 6e 67 53 74 | 6f 72 65 54 6f 55 73 65 |ackingSt|oreToUse|
|00005640| 29 3b 0d 09 66 52 65 63 | 6f 72 64 47 72 6f 75 70 |);..fRec|ordGroup|
|00005650| 48 61 73 43 68 61 6e 67 | 65 64 20 3d 20 66 61 6c |HasChang|ed = fal|
|00005660| 73 65 3b 0d 7d 20 2f 2f | 20 54 47 72 6f 75 70 43 |se;.} //| TGroupC|
|00005670| 6f 6e 74 72 6f 6c 4f 62 | 6a 65 63 74 3a 3a 46 6c |ontrolOb|ject::Fl|
|00005680| 75 73 68 43 68 61 6e 67 | 65 73 54 6f 44 69 73 6b |ushChang|esToDisk|
|00005690| 0d 0d 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |..//----|--------|
|000056a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000056e0| 2d 2d 2d 2d 0d 2f 2f 20 | 54 47 72 6f 75 70 43 6f |----.// |TGroupCo|
|000056f0| 6e 74 72 6f 6c 4f 62 6a | 65 63 74 3a 3a 50 75 72 |ntrolObj|ect::Pur|
|00005700| 67 65 52 65 63 6f 72 64 | 47 72 6f 75 70 46 72 6f |geRecord|GroupFro|
|00005710| 6d 4d 65 6d 6f 72 79 0d | 2f 2f 2d 2d 2d 2d 2d 2d |mMemory.|//------|
|00005720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005750| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005760| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 76 6f 69 64 20 |--------|--.void |
|00005770| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00005780| 65 63 74 3a 3a 50 75 72 | 67 65 52 65 63 6f 72 64 |ect::Pur|geRecord|
|00005790| 47 72 6f 75 70 46 72 6f | 6d 4d 65 6d 6f 72 79 28 |GroupFro|mMemory(|
|000057a0| 29 0d 7b 0d 09 2f 2f 0d | 09 2f 2f 20 4e 45 56 45 |).{..//.|.// NEVE|
|000057b0| 52 20 70 75 72 67 65 20 | 69 66 20 77 65 20 63 61 |R purge |if we ca|
|000057c0| 6e 6e 6f 74 20 66 6c 75 | 73 68 21 20 20 28 53 68 |nnot flu|sh! (Sh|
|000057d0| 6f 75 6c 64 20 68 61 76 | 65 20 61 20 62 65 74 74 |ould hav|e a bett|
|000057e0| 65 72 20 65 72 72 6f 72 | 20 6e 75 6d 62 65 72 2c |er error| number,|
|000057f0| 20 70 65 72 68 61 70 73 | 29 0d 09 2f 2f 0d 09 69 | perhaps|)..//..i|
|00005800| 66 28 74 68 69 73 2d 3e | 44 42 44 6f 63 75 6d 65 |f(this->|DBDocume|
|00005810| 6e 74 28 29 2d 3e 43 61 | 6e 53 61 76 65 44 6f 63 |nt()->Ca|nSaveDoc|
|00005820| 75 6d 65 6e 74 28 29 29 | 0d 09 09 46 61 69 6c 45 |ument())|...FailE|
|00005830| 72 72 28 2d 31 29 3b 0d | 09 0d 09 69 66 28 66 52 |rr(-1);.|...if(fR|
|00005840| 65 63 6f 72 64 47 72 6f | 75 70 48 61 73 43 68 61 |ecordGro|upHasCha|
|00005850| 6e 67 65 64 29 0d 09 09 | 74 68 69 73 2d 3e 46 6c |nged)...|this->Fl|
|00005860| 75 73 68 43 68 61 6e 67 | 65 73 54 6f 44 69 73 6b |ushChang|esToDisk|
|00005870| 28 29 3b 0d 09 64 65 6c | 65 74 65 20 5b 5d 20 66 |();..del|ete [] f|
|00005880| 52 65 63 6f 72 64 44 61 | 74 61 3b 0d 09 66 52 65 |RecordDa|ta;..fRe|
|00005890| 63 6f 72 64 44 61 74 61 | 20 3d 20 6e 69 6c 3b 0d |cordData| = nil;.|
|000058a0| 7d 20 2f 2f 20 54 47 72 | 6f 75 70 43 6f 6e 74 72 |} // TGr|oupContr|
|000058b0| 6f 6c 4f 62 6a 65 63 74 | 3a 3a 50 75 72 67 65 52 |olObject|::PurgeR|
|000058c0| 65 63 6f 72 64 47 72 6f | 75 70 46 72 6f 6d 4d 65 |ecordGro|upFromMe|
|000058d0| 6d 6f 72 79 0d 0d 2f 2f | 2d 2d 2d 2d 2d 2d 2d 2d |mory..//|--------|
|000058e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000058f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005900| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005910| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005920| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 2f 2f 20 54 47 72 6f |--------|.// TGro|
|00005930| 75 70 43 6f 6e 74 72 6f | 6c 4f 62 6a 65 63 74 3a |upContro|lObject:|
|00005940| 3a 50 75 72 67 65 49 66 | 55 6e 72 65 66 65 72 65 |:PurgeIf|Unrefere|
|00005950| 6e 63 65 64 0d 2f 2f 2d | 2d 2d 2d 2d 2d 2d 2d 2d |nced.//-|--------|
|00005960| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005990| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000059a0| 2d 2d 2d 2d 2d 2d 2d 0d | 76 6f 69 64 20 54 47 72 |-------.|void TGr|
|000059b0| 6f 75 70 43 6f 6e 74 72 | 6f 6c 4f 62 6a 65 63 74 |oupContr|olObject|
|000059c0| 3a 3a 50 75 72 67 65 49 | 66 55 6e 72 65 66 65 72 |::PurgeI|fUnrefer|
|000059d0| 65 6e 63 65 64 28 29 0d | 7b 0d 23 69 66 20 30 0d |enced().|{.#if 0.|
|000059e0| 09 42 6f 6f 6c 65 61 6e | 20 72 65 66 65 72 65 6e |.Boolean| referen|
|000059f0| 63 65 64 20 3d 20 66 61 | 6c 73 65 3b 0d 09 6c 6f |ced = fa|lse;..lo|
|00005a00| 6e 67 20 69 3b 0d 09 0d | 09 66 6f 72 28 69 3d 30 |ng i;...|.for(i=0|
|00005a10| 3b 69 3c 6b 52 65 63 6f | 72 64 73 50 65 72 47 72 |;i<kReco|rdsPerGr|
|00005a20| 6f 75 70 3b 2b 2b 69 29 | 0d 09 7b 0d 09 09 69 66 |oup;++i)|..{...if|
|00005a30| 28 28 66 52 65 63 6f 72 | 64 43 75 72 73 6f 72 73 |((fRecor|dCursors|
|00005a40| 5b 69 5d 20 21 3d 20 6e | 69 6c 29 20 26 26 20 28 |[i] != n|il) && (|
|00005a50| 66 52 65 63 6f 72 64 43 | 75 72 73 6f 72 73 5b 69 |fRecordC|ursors[i|
|00005a60| 5d 2d 3e 48 61 73 52 65 | 66 65 72 65 6e 63 65 28 |]->HasRe|ference(|
|00005a70| 29 29 29 0d 09 09 7b 0d | 09 09 09 72 65 66 65 72 |)))...{.|...refer|
|00005a80| 65 6e 63 65 64 20 3d 20 | 74 72 75 65 3b 0d 09 09 |enced = |true;...|
|00005a90| 09 62 72 65 61 6b 3b 0d | 09 09 7d 0d 09 7d 0d 09 |.break;.|..}..}..|
|00005aa0| 0d 09 69 66 28 72 65 66 | 65 72 65 6e 63 65 64 20 |..if(ref|erenced |
|00005ab0| 3d 3d 20 66 61 6c 73 65 | 29 0d 09 7b 0d 09 09 66 |== false|)..{...f|
|00005ac0| 6f 72 28 69 3d 30 3b 69 | 3c 6b 52 65 63 6f 72 64 |or(i=0;i|<kRecord|
|00005ad0| 73 50 65 72 47 72 6f 75 | 70 3b 2b 2b 69 29 0d 09 |sPerGrou|p;++i)..|
|00005ae0| 09 7b 0d 09 09 09 69 66 | 28 66 52 65 63 6f 72 64 |.{....if|(fRecord|
|00005af0| 43 75 72 73 6f 72 73 5b | 69 5d 20 21 3d 20 6e 69 |Cursors[|i] != ni|
|00005b00| 6c 29 0d 09 09 09 7b 0d | 09 09 09 09 64 65 6c 65 |l)....{.|....dele|
|00005b10| 74 65 20 66 52 65 63 6f | 72 64 43 75 72 73 6f 72 |te fReco|rdCursor|
|00005b20| 73 5b 69 5d 3b 0d 09 09 | 09 09 66 52 65 63 6f 72 |s[i];...|..fRecor|
|00005b30| 64 43 75 72 73 6f 72 73 | 5b 69 5d 20 3d 20 6e 69 |dCursors|[i] = ni|
|00005b40| 6c 3b 0d 09 09 09 7d 0d | 09 09 7d 0d 09 09 0d 09 |l;....}.|..}.....|
|00005b50| 09 49 4e 48 45 52 49 54 | 45 44 3a 3a 50 75 72 67 |.INHERIT|ED::Purg|
|00005b60| 65 49 66 55 6e 72 65 66 | 65 72 65 6e 63 65 64 28 |eIfUnref|erenced(|
|00005b70| 29 3b 0d 09 7d 0d 23 65 | 6e 64 69 66 0d 7d 20 2f |);..}.#e|ndif.} /|
|00005b80| 2f 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |/ TGroup|ControlO|
|00005b90| 62 6a 65 63 74 3a 3a 50 | 75 72 67 65 49 66 55 6e |bject::P|urgeIfUn|
|00005ba0| 72 65 66 65 72 65 6e 63 | 65 64 0d 0d 2f 2f 2d 2d |referenc|ed..//--|
|00005bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005be0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005bf0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 2f |--------|------./|
|00005c00| 2f 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |/ TGroup|ControlO|
|00005c10| 62 6a 65 63 74 3a 3a 49 | 6e 69 74 69 61 6c 69 7a |bject::I|nitializ|
|00005c20| 65 4e 65 77 47 72 6f 75 | 70 0d 2f 2f 0d 2f 2f 20 |eNewGrou|p.//.// |
|00005c30| 54 68 69 73 20 72 6f 75 | 74 69 6e 65 20 6d 61 6b |This rou|tine mak|
|00005c40| 65 73 20 61 20 62 75 6e | 63 68 20 28 36 34 29 20 |es a bun|ch (64) |
|00005c50| 6f 66 20 6e 65 77 20 64 | 61 74 61 62 61 73 65 20 |of new d|atabase |
|00005c60| 72 65 63 6f 72 64 73 2e | 20 20 4d 6f 73 74 20 28 |records.| Most (|
|00005c70| 36 33 29 20 6f 66 0d 2f | 2f 20 74 68 65 73 65 20 |63) of./|/ these |
|00005c80| 61 72 65 20 69 6d 6d 65 | 64 69 61 74 65 6c 79 20 |are imme|diately |
|00005c90| 70 75 73 68 65 64 20 6f | 6e 74 6f 20 74 68 65 20 |pushed o|nto the |
|00005ca0| 64 62 20 72 65 63 6f 72 | 64 20 66 72 65 65 20 6c |db recor|d free l|
|00005cb0| 69 73 74 2e 20 20 4f 6e | 65 20 6f 66 20 74 68 65 |ist. On|e of the|
|00005cc0| 0d 2f 2f 20 6e 65 77 20 | 72 65 63 6f 72 64 73 20 |.// new |records |
|00005cd0| 69 73 20 72 65 74 75 72 | 6e 65 64 2c 20 75 6e 6c |is retur|ned, unl|
|00005ce0| 69 6e 6b 65 64 20 61 6e | 64 20 72 65 61 64 79 20 |inked an|d ready |
|00005cf0| 74 6f 20 75 73 65 2e 0d | 2f 2f 2d 2d 2d 2d 2d 2d |to use..|//------|
|00005d00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005d40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 6c 6f 6e 67 20 |--------|--.long |
|00005d50| 54 47 72 6f 75 70 43 6f | 6e 74 72 6f 6c 4f 62 6a |TGroupCo|ntrolObj|
|00005d60| 65 63 74 3a 3a 49 6e 69 | 74 69 61 6c 69 7a 65 4e |ect::Ini|tializeN|
|00005d70| 65 77 47 72 6f 75 70 28 | 6c 6f 6e 67 20 6e 65 78 |ewGroup(|long nex|
|00005d80| 74 46 72 65 65 4e 6f 64 | 65 2c 20 6c 6f 6e 67 26 |tFreeNod|e, long&|
|00005d90| 20 6f 6e 65 46 72 65 65 | 49 6e 64 65 78 29 0d 7b | oneFree|Index).{|
|00005da0| 0d 09 74 68 69 73 2d 3e | 41 6c 6c 6f 63 61 74 65 |..this->|Allocate|
|00005db0| 4d 65 6d 6f 72 79 46 6f | 72 52 65 63 6f 72 64 44 |MemoryFo|rRecordD|
|00005dc0| 61 74 61 28 29 3b 0d 09 | 0d 09 2f 2f 0d 09 2f 2f |ata();..|..//..//|
|00005dd0| 20 4d 61 6b 65 20 6b 52 | 65 63 6f 72 64 73 50 65 | Make kR|ecordsPe|
|00005de0| 72 47 72 6f 75 70 20 66 | 72 65 65 20 44 42 20 72 |rGroup f|ree DB r|
|00005df0| 65 63 6f 72 64 73 0d 09 | 2f 2f 0d 09 66 6f 72 28 |ecords..|//..for(|
|00005e00| 6c 6f 6e 67 20 69 3d 74 | 68 69 73 2d 3e 46 69 72 |long i=t|his->Fir|
|00005e10| 73 74 52 65 63 6f 72 64 | 49 6e 64 65 78 28 29 20 |stRecord|Index() |
|00005e20| 2b 20 6b 52 65 63 6f 72 | 64 73 50 65 72 47 72 6f |+ kRecor|dsPerGro|
|00005e30| 75 70 20 2d 20 31 3b 69 | 3e 3d 20 74 68 69 73 2d |up - 1;i|>= this-|
|00005e40| 3e 46 69 72 73 74 52 65 | 63 6f 72 64 49 6e 64 65 |>FirstRe|cordInde|
|00005e50| 78 28 29 3b 2d 2d 69 29 | 0d 09 7b 0d 09 09 6c 6f |x();--i)|..{...lo|
|00005e60| 6e 67 2a 20 64 61 74 61 | 20 3d 20 74 68 69 73 2d |ng* data| = this-|
|00005e70| 3e 52 65 63 6f 72 64 44 | 61 74 61 28 69 29 3b 0d |>RecordD|ata(i);.|
|00005e80| 09 09 64 61 74 61 5b 6b | 46 72 65 65 4e 6f 64 65 |..data[k|FreeNode|
|00005e90| 49 44 42 79 74 65 5d 20 | 3d 20 6b 46 72 65 65 44 |IDByte] |= kFreeD|
|00005ea0| 42 52 65 63 6f 72 64 49 | 44 3b 0d 09 09 64 61 74 |BRecordI|D;...dat|
|00005eb0| 61 5b 6b 46 72 65 65 4e | 6f 64 65 4c 69 6e 6b 42 |a[kFreeN|odeLinkB|
|00005ec0| 79 74 65 5d 20 3d 20 6e | 65 78 74 46 72 65 65 4e |yte] = n|extFreeN|
|00005ed0| 6f 64 65 3b 0d 09 09 6e | 65 78 74 46 72 65 65 4e |ode;...n|extFreeN|
|00005ee0| 6f 64 65 20 3d 20 69 3b | 0d 09 7d 0d 09 0d 09 2f |ode = i;|..}..../|
|00005ef0| 2f 0d 09 2f 2f 20 4d 61 | 72 6b 20 74 68 65 20 66 |/..// Ma|rk the f|
|00005f00| 69 72 73 74 20 72 65 63 | 6f 72 64 20 61 73 20 6e |irst rec|ord as n|
|00005f10| 6f 74 20 62 65 69 6e 67 | 20 61 74 74 61 63 68 65 |ot being| attache|
|00005f20| 64 20 74 6f 20 74 68 65 | 20 66 72 65 65 20 6c 69 |d to the| free li|
|00005f30| 73 74 0d 09 2f 2f 0d 09 | 74 68 69 73 2d 3e 52 65 |st..//..|this->Re|
|00005f40| 63 6f 72 64 44 61 74 61 | 28 74 68 69 73 2d 3e 46 |cordData|(this->F|
|00005f50| 69 72 73 74 52 65 63 6f | 72 64 49 6e 64 65 78 28 |irstReco|rdIndex(|
|00005f60| 29 29 5b 6b 46 72 65 65 | 4e 6f 64 65 4c 69 6e 6b |))[kFree|NodeLink|
|00005f70| 42 79 74 65 5d 20 3d 20 | 6b 46 72 65 65 52 65 63 |Byte] = |kFreeRec|
|00005f80| 6f 72 64 4e 6f 74 4c 69 | 6e 6b 65 64 54 6f 54 72 |ordNotLi|nkedToTr|
|00005f90| 65 65 3b 0d 09 0d 09 2f | 2f 0d 09 2f 2f 20 54 68 |ee;..../|/..// Th|
|00005fa0| 65 20 66 69 72 73 74 20 | 72 65 63 6f 72 64 20 69 |e first |record i|
|00005fb0| 6e 20 74 68 65 20 67 72 | 6f 75 70 20 69 73 20 6e |n the gr|oup is n|
|00005fc0| 6f 74 20 6c 69 6e 6b 65 | 64 20 74 6f 20 74 68 65 |ot linke|d to the|
|00005fd0| 20 66 72 65 65 20 6c 69 | 73 74 2e 0d 09 2f 2f 20 | free li|st...// |
|00005fe0| 54 68 65 20 73 65 63 6f | 6e 64 20 72 65 63 6f 72 |The seco|nd recor|
|00005ff0| 64 20 69 6e 20 74 68 65 | 20 67 72 6f 75 70 20 69 |d in the| group i|
|00006000| 73 20 72 65 74 75 72 6e | 65 64 20 61 73 20 74 68 |s return|ed as th|
|00006010| 65 20 6e 65 77 20 66 69 | 72 73 74 20 66 72 65 65 |e new fi|rst free|
|00006020| 20 72 65 63 6f 72 64 2e | 0d 09 2f 2f 0d 09 6f 6e | record.|..//..on|
|00006030| 65 46 72 65 65 49 6e 64 | 65 78 20 3d 20 74 68 69 |eFreeInd|ex = thi|
|00006040| 73 2d 3e 46 69 72 73 74 | 52 65 63 6f 72 64 49 6e |s->First|RecordIn|
|00006050| 64 65 78 28 29 3b 0d 09 | 72 65 74 75 72 6e 20 74 |dex();..|return t|
|00006060| 68 69 73 2d 3e 46 69 72 | 73 74 52 65 63 6f 72 64 |his->Fir|stRecord|
|00006070| 49 6e 64 65 78 28 29 20 | 2b 20 31 3b 0d 7d 20 2f |Index() |+ 1;.} /|
|00006080| 2f 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |/ TGroup|ControlO|
|00006090| 62 6a 65 63 74 3a 3a 49 | 6e 69 74 69 61 6c 69 7a |bject::I|nitializ|
|000060a0| 65 4e 65 77 47 72 6f 75 | 70 0d 0d 2f 2f 2d 2d 2d |eNewGrou|p..//---|
|000060b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000060c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000060d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000060e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000060f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0d 2f 2f |--------|-----.//|
|00006100| 20 54 47 72 6f 75 70 43 | 6f 6e 74 72 6f 6c 4f 62 | TGroupC|ontrolOb|
|00006110| 6a 65 63 74 3a 3a 49 6e | 69 74 69 61 6c 69 7a 65 |ject::In|itialize|
|00006120| 4e 65 77 44 61 74 61 47 | 72 6f 75 70 0d 2f 2f 0d |NewDataG|roup.//.|
|00006130| 2f 2f 20 54 68 69 73 20 | 72 6f 75 74 69 6e 65 20 |// This |routine |
|00006140| 6d 61 6b 65 73 20 6f 6e | 65 20 6f 72 20 74 77 6f |makes on|e or two|
|00006150| 20 66 72 65 65 20 64 61 | 74 61 20 72 65 63 6f 72 | free da|ta recor|
|00006160| 64 73 2e 20 20 42 6f 74 | 68 20 61 72 65 20 72 65 |ds. Bot|h are re|
|00006170| 74 75 72 6e 65 64 20 75 | 6e 6c 69 6e 6b 65 64 0d |turned u|nlinked.|
|00006180| 2f 2f 20 74 6f 20 74 68 | 65 20 74 72 65 65 2e 20 |// to th|e tree. |
|00006190| 20 4f 6e 65 20 69 73 20 | 61 6c 77 61 79 73 20 6f | One is |always o|
|000061a0| 66 20 73 69 7a 65 20 27 | 64 65 73 69 72 65 64 45 |f size '|desiredE|
|000061b0| 6e 63 6f 64 65 64 50 68 | 79 73 69 63 61 6c 53 69 |ncodedPh|ysicalSi|
|000061c0| 7a 65 27 3b 20 74 68 65 | 20 6f 74 68 65 72 0d 2f |ze'; the| other./|
|000061d0| 2f 20 69 73 20 68 6f 77 | 65 76 65 72 20 62 69 67 |/ is how|ever big|
|000061e0| 20 69 74 20 6e 65 65 64 | 73 20 74 6f 20 62 65 20 | it need|s to be |
|000061f0| 74 6f 20 66 69 6c 6c 20 | 6f 75 74 20 74 68 65 20 |to fill |out the |
|00006200| 72 65 73 74 20 6f 66 20 | 74 68 65 20 72 65 63 6f |rest of |the reco|
|00006210| 72 64 20 67 72 6f 75 70 | 2e 0d 2f 2f 2d 2d 2d 2d |rd group|..//----|
|00006220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006250| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006260| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 6c 6f 6e |--------|----.lon|
|00006270| 67 20 54 47 72 6f 75 70 | 43 6f 6e 74 72 6f 6c 4f |g TGroup|ControlO|
|00006280| 62 6a 65 63 74 3a 3a 49 | 6e 69 74 69 61 6c 69 7a |bject::I|nitializ|
|00006290| 65 4e 65 77 44 61 74 61 | 47 72 6f 75 70 28 6c 6f |eNewData|Group(lo|
|000062a0| 6e 67 20 64 65 73 69 72 | 65 64 45 6e 63 6f 64 65 |ng desir|edEncode|
|000062b0| 64 50 68 79 73 69 63 61 | 6c 53 69 7a 65 2c 20 6c |dPhysica|lSize, l|
|000062c0| 6f 6e 67 26 20 6c 65 66 | 74 4f 76 65 72 42 6c 6f |ong& lef|tOverBlo|
|000062d0| 63 6b 29 0d 7b 0d 09 2f | 2f 0d 09 2f 2f 20 4d 61 |ck).{../|/..// Ma|
|000062e0| 6b 65 20 6f 6e 65 20 34 | 4b 20 64 61 74 61 20 72 |ke one 4|K data r|
|000062f0| 65 63 6f 72 64 0d 09 2f | 2f 0d 09 74 68 69 73 2d |ecord../|/..this-|
|00006300| 3e 41 6c 6c 6f 63 61 74 | 65 4d 65 6d 6f 72 79 46 |>Allocat|eMemoryF|
|00006310| 6f 72 52 65 63 6f 72 64 | 44 61 74 61 28 29 3b 0d |orRecord|Data();.|
|00006320| 09 6c 6f 6e 67 2a 20 64 | 61 74 61 20 3d 20 74 68 |.long* d|ata = th|
|00006330| 69 73 2d 3e 52 65 63 6f | 72 64 44 61 74 61 28 74 |is->Reco|rdData(t|
|00006340| 68 69 73 2d 3e 46 69 72 | 73 74 52 65 63 6f 72 64 |his->Fir|stRecord|
|00006350| 49 6e 64 65 78 28 29 29 | 3b 0d 09 64 61 74 61 5b |Index())|;..data[|
|00006360| 6b 46 72 65 65 4e 6f 64 | 65 49 44 42 79 74 65 5d |kFreeNod|eIDByte]|
|00006370| 20 3d 20 6b 46 72 65 65 | 44 61 74 61 52 65 63 6f | = kFree|DataReco|
|00006380| 72 64 49 44 20 2b 20 28 | 36 33 4c 20 3c 3c 20 6b |rdID + (|63L << k|
|00006390| 44 61 74 61 52 65 63 6f | 72 64 50 68 79 73 69 63 |DataReco|rdPhysic|
|000063a0| 61 6c 53 69 7a 65 53 68 | 69 66 74 29 3b 0d 09 64 |alSizeSh|ift);..d|
|000063b0| 61 74 61 5b 6b 46 72 65 | 65 4e 6f 64 65 4c 69 6e |ata[kFre|eNodeLin|
|000063c0| 6b 42 79 74 65 5d 20 3d | 20 6b 46 72 65 65 52 65 |kByte] =| kFreeRe|
|000063d0| 63 6f 72 64 4e 6f 74 4c | 69 6e 6b 65 64 54 6f 54 |cordNotL|inkedToT|
|000063e0| 72 65 65 3b 0d 09 64 61 | 74 61 5b 6b 50 72 65 76 |ree;..da|ta[kPrev|
|000063f0| 69 6f 75 73 46 72 65 65 | 4e 6f 64 65 4c 69 6e 6b |iousFree|NodeLink|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.