LFD-Binärformat-Parser (Lyx File Data): Lyx-natives Binärformat für strukturierte Daten lesen. LFD ist ein typisiertes, kompaktes Binärformat — ähnlich MessagePack, aber speziell für Lyx-Datentypen optimiert.
→ std.lfd_factory · Standard Library
Header: "LFD\x01" (4 Bytes, Magic + Version)
Body: Sequenz typisierter Felder (Tag + Länge + Daten)
Footer: Checksumme (4 Bytes, CRC32)
import std.lfd_parser;
// LFD-Datei öffnen
var p: LfdParser := LfdParserOpen("daten.lfd");
if (p = nil) {
log_error("LFD-Datei nicht gefunden");
return;
}
// Felder sequenziell lesen
while (LfdParserHasNext(p)) {
var tag: int64 := LfdParserNextTag(p);
if (tag = LFD_TAG_INT64) {
var n: int64 := LfdParserReadInt64(p);
ProcessInt(n);
}
if (tag = LFD_TAG_STRING) {
var s: pchar := LfdParserReadString(p);
ProcessString(s);
}
if (tag = LFD_TAG_FLOAT) {
var f: f64 := LfdParserReadFloat(p);
ProcessFloat(f);
}
}
LfdParserClose(p);
| Konstante | Typ |
|---|---|
LFD_TAG_INT64 | 64-Bit-Integer |
LFD_TAG_FLOAT | 64-Bit-Float |
LFD_TAG_STRING | UTF-8-String |
LFD_TAG_BOOL | Boolean |
LFD_TAG_BYTES | Rohe Bytes |
LFD_TAG_LIST_BEGIN | Listen-Start |
LFD_TAG_LIST_END | Listen-Ende |
LFD_TAG_MAP_BEGIN | Map-Start |
LFD_TAG_MAP_END | Map-Ende |
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
LfdParserOpen(path: pchar): LfdParser | pub | Öffnet LFD-Datei; gibt nil bei Fehler zurück |
LfdParserFromBuffer(data: pchar, len: int64): LfdParser | pub | Parst LFD aus Speicherpuffer |
LfdParserHasNext(p: LfdParser): bool | pub | Gibt true zurück wenn weitere Felder folgen |
LfdParserNextTag(p: LfdParser): int64 | pub | Liest nächsten Tag-Wert |
LfdParserReadInt64(p: LfdParser): int64 | pub | Liest Int64-Wert (nach LFD_TAG_INT64) |
LfdParserReadFloat(p: LfdParser): f64 | pub | Liest Float-Wert (nach LFD_TAG_FLOAT) |
LfdParserReadString(p: LfdParser): pchar | pub | Liest String-Wert (nach LFD_TAG_STRING) |
LfdParserReadBool(p: LfdParser): bool | pub | Liest Bool-Wert (nach LFD_TAG_BOOL) |
LfdParserReadBytes(p: LfdParser, outLen: *int64): pchar | pub | Liest Byte-Array (nach LFD_TAG_BYTES) |
LfdParserSkip(p: LfdParser): void | pub | Überspringt aktuelles Feld |
LfdParserClose(p: LfdParser): void | pub | Schließt Parser und gibt Ressourcen frei |
Letzte Aktualisierung: 2026-05-22