
RingBufferGet()
***************


FUNKTION
========

   protected mixed RingBufferGet(struct std_ringbuffer buf);


DEFINIERT IN
============

   /std/util/ringbuffer.c
   /sys/util/ringbuffer.h


ARGUMENTE
=========

   buf - Ringpuffer, welcher ausgeben werden soll


BESCHREIBUNG
============

   Diese Funktion liefert die Daten des Ringpuffers in Form eines Arrays
   zurueck, welches dann weiterverarbeitet werden kann.
   Die Reihenfolge der Daten ist entsprechend des beim Anlegen des
   Ringpuffers angebenen Modes:
   MODE_FIFO: aelteste Daten zuerst
   MODE_LIFO: neueste Daten zuerst


BEMERKUNGEN
===========

   Aenderungen am Array beeinflussen die Daten des Ringpuffers nicht. Aber:
   Hierbei werden die Daten nicht tief kopiert. D.h. enthaelt der Ringpuffer
   Referenzen auf weitere Daten, zeigen der Ringpuffer und das hier
   gelieferte Array auf die gleichen Daten.


BEISPIELE
=========

   // Ringpuffer anlegen:
   struct std_ringbuffer buffer = CreateRingBuffer(10, MODE_FIFO);
   // 15 Werte reinschreiben:
   foreach(int i: 15) RingBufferPut(buffer, i);
   // Werte abrufen:
   mixed array=RingBufferGet(buffer);
   // array enthaelt nun:
   // ({5,6,7,8,9,10,11,12,13,14})


SIEHE AUCH
==========

   CreateRingBuffer(), RingBufferPut(), ResizeRingBuffer()

23.05.2008, Zesstra
