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

