123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- { Copyright (C) <2010> <Andrew Haines> itolitlstypes.pas
- This library is free software; you can redistribute it and/or modify it
- under the terms of the GNU Library General Public License as published by
- the Free Software Foundation; either version 2 of the License, or (at your
- option) any later version.
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
- for more details.
- You should have received a copy of the GNU Library General Public License
- along with this library; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- }
- {
- See the file COPYING.modifiedLGPL, included in this distribution,
- for details about the copyright.
- }
- unit ITOLITLSTypes;
- {$mode objfpc}{$H+}
- {$PACKRECORDS C}
- interface
- uses ChmBase;
- type
- TSig = array[0..3] of char;
- TITOLITLSHeader = record
- Sig: Array [0..1] of TSig; // ITLO/ITLS
- Version: DWord; // = 1
- HeaderSectionTableOffset: DWord;
- HeaderSectionEntryCount: DWord;
- PostHeaderTableSize: DWord;
- GUID: TGuid; // {0A9007C1-4076-11D3-8789-0000F8105754}
- end;
- TITOLITLSHeaderSectionEntry = record
- OffSet: QWord; // From Start of ITLO/ITLS
- Length: QWord;
- end;
- TChunkDirInfo = record
- TopAOLIChunkIndex: QWord; // -1 if none
- FirstAOLLChunkIndex,
- LastAOLLChunkIndex: QWord;
- Unknown0: QWord; // 0
- ChunkSize: DWord; // = $2000 if list $200 if Index
- QuickRefDensity: DWord; // = 2
- Unknown1: DWord; // = 0
- DirDepth: DWord; // 1 there is no index, 2 if there is one level of AOLI 3 if two index levels etc
- Unknown2: QWord; // 0
- DirEntryCount: QWord; // Number Of Directory Entries
- end;
- TITSFHeaderV4= record
- ITSFsig: array [0..3] of char;
- Version: LongWord;
- HeaderLength: LongWord;
- Unknown_1: LongWord;
- Section0Offset: QWord;
- TimeStamp: LongWord; //bigendian
- LanguageID: LongWord;
- end;
- TCAOLRec = record
- Sig: TSig; // CAOL
- Version: DWord; // 2
- CAOLSize: DWord; // includes ITSF section = $50
- CompilerID: array [0..1] of char; // = "HH"
- Unknown: Word; // 0
- Unknown1: DWord; // $43ED or 0
- DirChunkSize: DWord; // $2000
- DirIndexChunkSize: DWord; // $200
- Unknown2, // $100000
- Unknown3: DWord;// $20000
- Unknown4,
- Unknown5,
- Unknown6: DWord; // = 0
- ITSFHeader: TITSFHeaderV4;
- end;
- TITOLITLSPostHeader = record
- Version: DWord; // 2
- CAOLOffset: DWord; // usually $98 (is from start of PostHeader)
- ListChunkInfo,
- IndexChunkInfo: TChunkDirInfo;
- Unknown3: DWord; // = $100000
- Unknown4: Dword; // = $20000
- Unknown5: QWord; // 0
- end;
- THeaderSection0 = TITSPHeaderPrefix;
- TIFCMRec = record
- SIG: TSig; // = IFCM
- Version: DWord; // = 1
- ChunkSize: DWord; // = $2000
- UnKnown: DWord; // = $100000
- Unknown1: DWord; // = -1
- Unknown2: DWord; // = -1
- ChunkCount: Dword;//
- Unknown3: DWord; // = 0
- end;
- TAOLLChunkHeader = record
- Sig: TSig; // = AOLL
- QuickRefSize: DWord;
- ChunkIndex: QWord; // must be correct in the order written
- PrevChunkIndex: QWord;
- NextChunkIndex: QWord;
- FirstEntryIndex: QWord;
- Unknown0, // = 1
- Unknown1: DWord;// = 0
- // entries
- end;
- TAOLIChunkHeader = record
- Sig: TSig; // = AOLI
- QuickRefSize: DWord;// Length of quickref area at end of directory chunk
- ChunkIndex: QWord;// Directory chunk number
- // entries
- end;
- const
- ITOLITLSGuid: TGuid = '{0A9007C1-4076-11D3-8789-0000F8105754}';
- type
- TLZXv3ControlData = record
- Sig: TSig;
- Version: DWord;
- ResetInterval: Dword;
- WindowSize: DWord;
- CacheSize: Dword;
- Unknown1,
- Unknown2: DWord; // 0
- end;
- TLZXv3ResetTable = record
- Version: Dword;
- EntryCount: DWord;
- EntrySize: DWord;
- EntryStart: DWord;
- UnCompressedSize,
- CompressedSize: QWord;
- BlockSize: QWord; // $8000
- end;
- implementation
- end.
|