Absender: Frank Menzel
Datum: Sa, 25.10.2008 18:37:18
In-reply-to:
<10346885-2E5E-4B13-B43D-5D4D339A0C58@xxxxxxxxxxxxxxx>
Hi Timo, wenn ich das richtig verstanden habe, wird einfach der Indexwert geholt und gemerkt, ab dem der neue Stack sozusagen losgeht. Dann kommen die diversen Push's und irgendwann auch die Pop's und wenn der gemerkte Indexwert erreicht wird, ist dieser Stack sozusagen leer. Das sollte doch mit dem Fifo genauso klappen. Ich hole zuerst den Indexwert und packe mit Push (bzw. _queue) die Daten hinten drauf. Bei dequeue müsste doch immer der Wert des Arrays an der Stelle des gemerkten Indexwertes zurückgegeben werden, bis der eigentliche Arrayzähler diesen Indexwert unterschreitet. Oder habe ich einen Denkfehler ? Andererseits könnte man bei dem Beispiel der Pfadplanung und dem danach gestarteten Stackfahrverhalten die Sache umdrehen. Also nicht mittels Fifo rausholen und hinten reinschieben, sondern vorn reinschieben und hinten einfach rausholen, also das Stackfahrverhalten ganz normal ohne fifo-Entnahme starten. Also entnehmen mittels pos_store_pop_until. Müßte nicht eigentlich auch ein pos_store_clear_until her ? Und um noch mal beim Beispiel der Pfadplanung zu bleiben, müsste man auch den gemerkten Indexwert aus der Pfadplanung, also dem Wert ab dem die abzufahrenden Punkte losgehen, dem folgenden Stackfahrverhalten übermitteln können. Denn für diese beiden Verhalten ist ja der Stack identisch. Wird irgendwie doch alles komplexer als gedacht. Erst mal danke soweit. Gruß, Frank -----Ursprüngliche Nachricht----- Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx [mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo Sandmann Gesendet: Samstag, 25. Oktober 2008 14:05 An: Entwicklung rund um den c't-bot Betreff: Re: [ct-bot] area - Stack- Pfadplanung Hallo Frank, Am 24.10.2008 um 22:20 schrieb Timo Sandmann: > ich habe das in pos_store.c mal schnell eingebaut. > pos_store_pop_until() kann man einen Stackpointer übergeben (den man > vorher mit pos_store_get_sp() geholt hat), bis zu dem dann > pos_store_pop() aufgerufen wird. Analog funktioniert das ganze bei > pos_store_dequeue_until(). das war etwas voreilig, für FIFO funktioniert die Idee so nicht, sondern nur für die Stack-Variante. Das bringt dir aber nichts, weil du im angesprochenen Fall eine FIFO brauchst, obwohl noch alte Stackdaten im Array sind. :-/ Ich hatte den Fall alte FIFO-Daten im Array und neuen Stack drauf angenommen, wofür der Code auch funktioniert, aber die Umkehrung klappt natürlich so nicht, sorry. pos_store_dequeue_until() entfällt somit. Da brauchen wir doch irgendwie eine andere Lösung... Grüße, Timo _______________________________________________ ct-bot-entwickler Mailingliste ct-bot-entwickler@xxxxxxxxxxxxxxxxx http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler