Tutorial
Baumstrukturen in FreeBASIC
von ThePuppetMaster | Seite 6 von 7 |
Nachdem wir die Funktion zum Erstellen und Anhängen neuer Elemente geschrieben haben, brauchen wir eine Overload Funktion, die übergebene Parameter entsprechend anpasst und der LL_Add Funktion übergibt.
Function Element_Add(ByRef V_List_F as Element_Type Ptr, ByRef V_List_L as Element_Type Ptr, V_Root as Element_Type Ptr, V_Parent as Element_Type Ptr, V_Data as String) as Element_Type Ptr
Return LL_Add(V_List_F, V_List_L, V_Root, V_Parent, 1, StrPtr(V_Data), Len(V_Data))
End Function
Diese Funktion speichert einen String in einem neu erzeugten Element ab. Es sind noch weitere Overloads möglich z.B. für UByte, UShort, UInteger, ...
Function Element_Add(ByRef V_List_F as Element_Type Ptr, ByRef V_List_L as Element_Type Ptr, V_Root as Element_Type Ptr, V_Parent as Element_Type Ptr, V_Data as UByte) as Element_Type Ptr
Return LL_Add(V_List_F, V_List_L, V_Root, V_Parent, 2, @V_Data, SizeOf(V_Data))
End Function
Function Element_Add(ByRef V_List_F as Element_Type Ptr, ByRef V_List_L as Element_Type Ptr, V_Root as Element_Type Ptr, V_Parent as Element_Type Ptr, V_Data as UShort) as Element_Type Ptr
Return LL_Add(V_List_F, V_List_L, V_Root, V_Parent, 3, @V_Data, SizeOf(V_Data))
End Function
'...
Wie man sieht, sind nicht viele Änderungen nötig. Das spart vor allem Quellcode ein, nachteilig sind aber die Geschwindigkeitseinbußen. Jeder Funktionsaufruf benötigt etwas Zeit, um sich aufzubauen und alle Parameter zurecht zu stellen. Das gleiche gilt für das Beenden einer Funktion. Die übergebenen Daten müssen wieder gelöscht und der Speicher für die Funktion aufgeräumt werden usw. Dies kostet zwar Zeit, ist jedoch beim hier betriebenem Aufwand durchaus legitim, zumal wir sowieso Zeit sparen durch Verwendung der Linked List.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|
|