Some notes of the format of DL files:



DL file format:

All offsets are relative to the start of the section they are in.
All fileds are uint32 (4 bytes) unless otherwise specified.  All other fields are aligned on 4 bytes boundries.

Header Section
	Magic
	File Format Version Number
	Auth Section Offset
	Schema Section Offset

Auth Section
	Auth Info Size
	Auth Info Data

Schema Section					# This section is always read entirely into memory
	Schema Section Size (uint32)
	Tables
		Table Count (uint32)
		Table Offset 0			# Relative to start of Schema Section
		Table Offset 1
		...
		Table Offset N

# Information about parsing modules is read directly from the meta tables
Table Section
	Table Section Size
	Table ID (uint32)
	Records Count				# Number of Records in record section.
	Record 0 Offset				# Relative to start of Table Section.
	Index SubSection Offset		# Relative to start of Table Section
	Head of Free List			# Table Section relative first free
								# recordNumber slot (with bit 0 set)
								# Or 0 if there are no free records
	Record Number Count			# Start of range of unused record numbers
	Record 0 offset				# Relative to start of Table Section.
	Record 1 offset
	Record 2 freelist			# If Bit zero is set this is Table Section
								# relative offset to next free recordNumber
								# 0 indicates the last free record slot.
	...
	Record n offset
	Record
		Record Size			# Rounded up to nearest mulitple of 4
		Record Number
		Creation File Version
		Record Version
		Data Size
		SemanticInformation
		Attribute 0 Offset
		Attribute 1 Offset
		Attribute 2 Offset
		...
		Attribute m Offset
		Data
			Data	
		Attribute 0
			Size
			Data
		Attribute 1
			Value
		...
		Attribute m
			Value Count
				Value 0
				Value 1
				...
				Value p
	Record
	...
	Record
	Index SubSection
		Index SubSection Size
		Index TOC			# This is part of the Schema
			Record Type
			Attribute Type
			Index Offset
		Index 1
			Index Size
			Index Offsets
				Index Offset Count
				Index Data 1 Offset
				Index Data 2 Offset
				...
				Index Data m OFFSET
			Index Data
				Index Data 1
					Record Offset
					Attribute Size
					Attribute Data
				Index Data 2
				...
				Index Data N			
		Index 2
		...
		Index n

Version Section		# Maintained by AtomicFile code
	4 byte version number

old Schema Section				# This section is always read entirely into memory
	Schema Section Size (uint32)
	Releations
		Relation Count (uint32)
        Relation
            Relation ID (uint32)
            Record Section Offset
            Relation Name Size
            Relation Name Data
			Attributes
                Attribute Count (uint32)
                Attribute
                    Releation ID (uint32)
                    Attribute ID (uint32)
                    Attribute Format (uint32)
                    Attribute Name Format (uint32)
                    Attribute Name Size
                    Attribute Name Data
                    Attribute Name ID Size
                    Attribute Name ID Data
                    ParsingModule
                        Parsion Module Present (bool)
                        Module ID (GUID)
                        SSID (uint32)
                        SubService Type (uint32)
                        Addin Version Major (uint32)
                        Addin Version Minor (uint32)
                Attribute
                ...
                Attribute
            Indexes
                Index Count (uint32)
                Index
                    Relation ID (uint32)
                    Index ID (uint32)
                    Index Type (uint32)
                    Indexed Data Location (uint32)
                    Index Attribute Count (uint32)
                        Attribute ID (uint32)
                        Attribute ID (uint32)
                        ...
                        Attribute ID (uint32)
                Index
                ...
                Index
        Relation
        ...
        Relation

