ResizeRingBuffer()

FUNKTION:
    protected struct std_ringbuffer buf RingBufferPut(
                                                   struct std_ringbuffer buf, 
                                                   int size);

DEFINIERT IN:
    /std/util/ringbuffer.c
    /sys/util/ringbuffer.h
    
ARGUMENTE:
    buf  - Ringpuffer, dessen Groesse geaendert werden soll
    size - neue Groesse (int) 

BESCHREIBUNG:
    Diese Funktion erstellt einen neuen Ringpuffer der Groesse <size>, welcher
    den gleichen Modus hat wie <buf> und die gleichen Daten enthaelt.
    Ist der neue Puffer kleiner als <buf>, so kommt es hierbei zu
    Datenverlust.
    <buf> wird nicht veraendert. Ist die Groesse von <buf> gleich der
    neuen gewuenschten Groesse, wird letztendlich der Ringpuffer kopiert. 
    Je nach Groesse von <buf> und Wert von <size> kann dies eine teure
    Angelegenheit sein.

RUeCKGABEWERT:
    Der neue Ringpuffer mit Groesse <size>.

BEISPIELE:
    // Ringpuffer anlegen:
    struct std_ringbuffer buffer = CreateRingBuffer(5, MODE_FIFO);
    // 5 Werte reinschreiben:
    foreach(int i: 5) RingBufferPut(buffer, i);
    // Groesse aendern
    buffer = ResizeRingBuffer(buffer, 10);
    // Daten als Array ermitteln:
    mixed array = RingBufferGet(buffer);
    // array enthaelt: ({0,0,0,0,0,0,1,2,3,4})

SIEHE AUCH:
    RingBufferGet(), RingBufferPut(), CreateRingBuffer()

23.05.2008, Zesstra

