CreateRingBuffer()
******************


FUNKTION
========

   protected struct std_ringbuffer CreateRingBuffer(int size, int newmode);


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

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


ARGUMENTE
=========

   size    - Groesse des neuen Ringpuffers (int)
   newmode - Ausgabemodus beim Abrufen des Puffers (int):
             MODE_FIFO: First-in-First-Out
             MODE_LIFO: Last-in-First-Out


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

   Diese Funktion erstellt einen neuen, leeren Ringpuffer der Groesse <size>
   und liefert ihn zurueck. Die Daten des Puffers werden spaeter gemaess
   <newmode> so gespeichert, dass bei der Ausgabe des Puffers mittels
   RingBufferGet() die entweder die neuesten Daten zuerst (MODE_LIFO) oder
   die aeltesten Daten zuerst (MODE_FIFO) geliefert werden.


RUeCKGABEWERT
=============

   Der neue Ringpuffer. Dieser wird in einer Struct std_ringbuffer
   gespeichert. Er ist in einer Variable 'mixed' oder in einer mittels
   'struct std_ringbuffer' angelegten Variable speicherbar.


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

   Der gelieferte Ringpuffer sollte nicht per Hand verarbeitet oder
   genaendert werden, sondern nur ueber die Verwaltungsfunktionen aus
   /std/util/ringbuffer.c.


BEISPIELE
=========

   // Variable anlegen:
   struct std_ringbuffer buffer;
   // _oder_: mixed buffer;
   // neuen Puffer mit max. 50 Elementen anlegen, der bei der Abfrage die
   // aeltesten Daten zuerst zurueckliefert:
   buffer = CreateRingBuffer(50, MODE_FIFO);


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

   RingBufferPut(), RingBufferGet(), ResizeRingBuffer()

23.05.2008, Zesstra
