updf_dump

updf_dump kopiert die Streams, Storages und Properties der Streams und Storages einer UPDF-Datei in ein Directory.

bool = updf_dump(stg, ssDir)
bool = updf_dump(stg, ssDir, mode)

Returnwert

bool ist TRUE (1) wenn die Funktion erfolgreich war und sonst FALSE (0).

Parameter

stg

stg ist ein Storage-Objekt (siehe updf_create_file, updf_open_file, updf_create_storage).

ssDir

ssDir ist der Name des Verzeichnisses.

mode

Ist einer der folgenden Werte:

Wert Bedeutung
0 oder UPDF_FAIL_IF_EXIST Dies ist der Default-Wert, wenn mode nicht angegeben wird. Falls eine Datei oder ein Directory mit dem Namen ssDir existiert schlägt die Funktion fehl.
UPDF_REMOVE_DIRECTORY Das Verzeichniss bzw. die Datei wird zuvor gelöscht.
UPDF_OVERWRITE Verzeichnisse bzw. Dateien werden überschrieben.
UPDF_PROPSONLY Speichert nur die Properties des Storages stg.

Kommentar

Die Properties der Elemente werden in xml-Dateien mit der Dateinamenserweiterung ._props_ ausgegeben. Existiert z. B. der Stream „Test Stream“ wird die Datei „Test Stream._props_“ erzeugt.

<?xml version="1.0" encoding="utf-8" ?>
  <props version="1.0">
    <p n="Units" t="s">
      <v>1/s</v>
    </p>
    <p n="add_offset" t="f">
      <v>17.2</v>
    </p>
</props>

Die _props_-Dateien enthalten drei XML-Elemente <props/>, <p/> und <v/>. <p/> hat vier Attribute n (Name), t (Typ), nr (Anzahl an Zeilen), nc (Anzahl an Spalten). Folgende Typen sind vorhanden:

Wert Bedeutung
d double
f float
i8 int8. 8-Bit Integer mit Vorzeichen.
ui8 uint8
i16 int16
ui16 uint16
i32 int32
ui32 uint32
i64 int64
ui64 uint64
s utf-8-String.
b blob (binary large object) base64 kodiert.

Hinter den Bezeichnungen in der Tabelle kann noch ein „v“ für Vektor oder „m“ für Matrix stehen. Beispiele: „ui64“ (unsigned int 64 Bits) „ui64v“ (Vektor von „ui64“) „ui64m“ (Matrix von „ui64“). Bei Vektoren muss das Attribut nr vorhanden sein. Bei Matrizen muss nr und nc vorhanden sein.

Beispiel

def test_updf_dump()
{
    ssPath = GetTempPath();
    ssFile = ssPath + "test-dump.updf";
    stg = updf_create_file(ssFile);

    props = updf_prop_open(stg);
    updf_prop_set_at(props, "double", updf_propval_new(1.23));
    updf_prop_set_at(props, "blob", updf_propval_new("a\0x0b", UPDF_BLOB));
    updf_prop_close(props);

    updf_dump(stg, ssFile + "-dir", UPDF_OVERWRITE);

    updf_close_storage(stg);

    stg = updf_create_file(ssPath + "test1.updf");
    updf_gen(stg, ssFile + "-dir");
    props = updf_prop_open(stg);

    pv = updf_prop_get_at(props, "double");
    if (type(pv) == "error") {
        error();
    }
    val = updf_propval_get(pv);
    if (val != 1.23) {
        error();
    }

    pv = updf_prop_get_at(props, "blob");
    if (type(pv) == "error") {
        error();
    }
    val = updf_propval_get(pv);
    if (val != "a\0x0b") {
        error();
    }

    updf_prop_close(props);
    updf_close_storage(stg);
}

test_updf_dump();

History

Version Beschreibung
R2012.1 (5.40.1) Neues Flag UPDF_PROPSONLY.
5.6.0 Neu.

id-2043439