DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > Nodes in Strukturen | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2002-09-08, 10:55 h StefanHaegele Posts: 281 User |
Hallo, ich habe eine Frage zu Strukturen, welche über Nodes in einer Liste gesammelt werden. Ist es notwendig, dass die Nodes-Struktur am Anfang der Struktur ist ( wie bei allen AmigaOS-Strukturen ) oder kann die Nodes-Struktur auch am Ende oder an einer beliebigen Position innerhalb der Struktur sein ? Meiner Meinung nach ja, aber ich bin mir nicht so sicher. Funktionieren tuts auf jeden Fall. Aber evtl. gibt es ja "Nebenwirkungen" wenn die Nodes-Struktur nicht an erster Stelle steht. Danke Stefan [ - Answer - Quote - Direct link - ] |
2002-09-08, 11:28 h Kronos Posts: 1168 User |
Wenn du die Node am Anfang stehen hast kannst du einfach deine Struktur an Exec-Funktionen wie AddHead() übergeben (mittels typecast), wenn sie in der Mitte stehen musst du jeweils erst die Addresse der Node ermitteln. Wenn du jetzt deine Liste "abklapperts" oder mittels FindName() eine bestimmte Structur suchts, erhälts du immer erst einen Pointer auf Node, und um an die Startaddresse deiner Struktur zu kommen musst du erst noch einen Offset abziehen. Bei Node am Anfang reicht wieder ein einfacher Typecast. Ist einfach die deutlich saubere Methode. MfG Kronos -- Only the good die young all the evil seem to live forever [ - Answer - Quote - Direct link - ] |
2002-09-08, 11:30 h thomas Posts: 7718 User |
Bei AmigaOS-Strukturen ist die Node immer am Anfang, weil dann der Pointer auf die Struktur direkt an die List-Funktionen (wie AddHead, AddTail etc.) übergeben werden kann. Wenn die Node in der Mitte ist, muß erst mit dem Offset herumgerechnet werden. Da sich diese Funktionen aber nur für die Node interessieren, gibt es keine Nebenwirkungen. Wenn du nicht mit den List-Funktionen arbeiten möchtest, brauchst du gar keine Node. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Answer - Quote - Direct link - ] |
2002-09-09, 12:33 h Michi Posts: 17 User |
Hallo Stefan, wie bereits oben erwähnt, macht es für Library-Funktionen wie AddHead oder FindName sehr wohl Sinn, die Nodes an den Beginn einer Funktion zu platzieren. Du kannst das aber auch allgemeiner betrachten: Willst Du eine eigene Funktion schreiben, die mit Listen und Nodes arbeitet und Du übergibst den Pointer auf verschiedenste verkettete Strukturen, dann bist Du angewiesen, dass Deine Node IMMER an demselben Ort steht. Denn sobald Deine unterschiedlichen Strukturen verschiedene Bytegrössen aufweisen, hast Du Probleme mit Deiner Variante. FindName zB. macht genau davon Gebrauch: Es ist eine Funktion die mit Nodes arbeitet. Du übergibst den Zeiger auf Deine Struktur. FindName selbst hat nun keine Ahnung welche Daten Deine eigene Struktur aufweist, wie gross sie ist usw. Das einzige was FindName weiss, ist: 'Meine Nodestruktur befindet sich am Anfang der Struktur.' Auch wenn Du von solchen Systemfunktionen keinen Gebrauch machst, empfehle ich der Übersicht halber, diese Regelung einzuhalten. Gruss Michi [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Nodes in Strukturen | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |