ChaosClone - Befehlsreferenz
Source | Das Quellobjekt, welches geklont werden soll. |
Das geklonte Objekt
Beschreibung
Klont ein nahezu beliebiges Objekt.
Ausnahmen sind nur Felder mit Pointern sowie Arrays of Arrays (-> object[][])
Wenn ein Objektfeld mit 'clone' gekennzeichnet wird wird auch das Feld geklont, ansonsten eine Referenz kopiert.
Wenn ein Feld komplett ignoriert werden soll kann dies mit 'noclone' markiert werden.
source | Das Quellobjekt welches nach Target geklont wird |
target | das ZielObjekt welches die Infos von Source erhält |
das kombinierte Objekt
Beschreibung
CombineObject kann Objekte miteinander verschmelzen. Dabei bestimmen die Metadaten des Objektes welche Daten von Source und welche von Target übernommen werden:
{keep} das Feld wird von Target beibehalten
{clone} das Feld wird von Source nach Target geklont
{} Das Feld wird von Source nach Target referenzkopiert.
Wenn man Arrays an CombineObject übergibt werden sie verschmolzen (in der reihenfolge Source-Target), falls sie ab von der ersten Dimension gleich dimensioniert sind.
Beispiel: bla[3,4] und blub[5,4] könnte man verschmelzen.
bla[3,4] und blub[3,6] hingegen nicht- hier wird Null zurückgegeben.
url | Entweder ein String mit dem Dateinamen oder ein TStream |
obj | ein mit new obj erstelltes leeres Objekt welches befüllt wird oder eine vorbefüllte Schablone - siehe TChaosClone.KeepMode() |
das eingeladene Objekt
Beschreibung
LoadUDObject lädt ein zuvor gespeichertes Objekt wieder ein. Dabei werden die Felder des Objektes anhand der Metadaten behandelt, automatisch eigene LadeRoutinen aufgerufen oder auch eine Initmethode angesprungen.
Siehe bei TChaosClone.SetSaveTags(), TChaosClone.SetSaveMethodTags(), TChaosClone.ResetMode() und TChaosClone.KeepMode() um mehr über die Optionen zu erfahren.
url | String mit Filename oder TStream |
obj | das zu speichernde Objekt |
-
BeschreibungSpeichert ein Objekt anhand seiner Metadaten. Siehe TChaosClone.SetSaveTags(), TChaosClone.SetSaveMethodTags() und TChaosClone.ResetMode() für Details.
mode | Keepmodus: true oder false |
keep | MetaTag für keep-Felder |
clone | MetaTag für Clone-Felder |
noclone | MetaTag für NoClone-Felder |
-
Beschreibung
Der KeepMode bestimmt ob das an LoadUDObject() übergebene Objekt komplett überschrieben oder mit den eingelesenen Daten kombiniert wird. Standard ist false, d.h. komplettes Überschreiben.
Die MetaTags bestimmen bei welchen Schlüsselwörtern eine bestimmte Operation ausgelöst wird. So ist es möglich in der MetaData verschiedene Tags zu definieren und so das Kopierverhalten an die Situation anzupassen.
-
Beschreibung
Löscht die interne Referenzliste.
Dies geschieht je nach TChaosClone.ResetMode() automatisch.
mode | Referenzliste automatisch löschen: true, beibehalten: false |
-
BeschreibungDies legt fest ob ChaosClone die Referenzen zwischen den Lade-/Speichervorgängen vergisst. Standard ist true. Ausnahmen sind möglich, erfordern aber eine feste Lade- und Speicherreihenfolge.
save | MetaTag für LadeSpeichermethode |
loadurl | MetaTag für externe Lademethode |
init | MetaTag für Initmethode |
-
Beschreibung
Diese Tags bestimmen welche Schlüsselwörter folgende Operationen auslösen:
save: Der getaggte Type hat eine Load()- und eine Save()-Methode. Diese Methode nimmt als Parameter ein url:object entgegen und öffnet diese url. Bei der LadeMethode wird das Objekt mit der Info überschrieben, es gibt keine Rückgabe.
Das Nutzen dieses Tags hebelt das laden per ChaosClone aus - das Objekt wird ausschliesslich über diese Methoden geladen (diese können Chaosclone aber selbst aufrufen).
loadurl: Das Field mit diesem Tag wird mittels einer load-Methode des Objects in dem Field befüllt. Diese öffnet eine externe Datei, der Pfad wir über ein vorher einzulesendes Feld bestimmt. Der normale Ladevorgang wird ansonsten nicht beeinträchtigt.
Beispiel: {loadurlpath} besorgt sich den Pfad aus 'path'.
init: Der Type wird normal eingeladen und anschliessend wird eine im Type implementierte init-Methode aufgerufen.
save | MetaTag für Save |
nosave | MetaTag für NoSave |
wholesave | MetaTag für WholeSave |
-
Beschreibung
Diese MetaTags bestimmen das Lade- und Speicherverhalten:
save: Das Objektfeld wird gespeichert.
nosave: Das Objektfeld wird nicht gespeichert.
wholesave: Das Objektfeld und alle in ihm enthaltenen Subdaten werden gespeichert.