====== std.lfd_parser ====== 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. → [[lyx_-_programmiersprache:units:lfd_factory|std.lfd_factory]] · [[lyx_-_programmiersprache:units|Standard Library]] ---- ===== LFD-Dateistruktur ===== Header: "LFD\x01" (4 Bytes, Magic + Version) Body: Sequenz typisierter Felder (Tag + Länge + Daten) Footer: Checksumme (4 Bytes, CRC32) ---- ===== Verwendung ===== 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); ---- ===== Tag-Konstanten ===== ^ 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 | ---- ===== Funktionen ===== ^ 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