Inhaltsverzeichnis

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.

std.lfd_factory · 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