blob: c5a6c0832ee18970ecb074fcb4394081246ea90d [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001ResizeRingBuffer()
2
3FUNKTION:
4 protected struct std_ringbuffer buf RingBufferPut(
5 struct std_ringbuffer buf,
6 int size);
7
8DEFINIERT IN:
9 /std/util/ringbuffer.c
10 /sys/util/ringbuffer.h
11
12ARGUMENTE:
13 buf - Ringpuffer, dessen Groesse geaendert werden soll
14 size - neue Groesse (int)
15
16BESCHREIBUNG:
17 Diese Funktion erstellt einen neuen Ringpuffer der Groesse <size>, welcher
18 den gleichen Modus hat wie <buf> und die gleichen Daten enthaelt.
19 Ist der neue Puffer kleiner als <buf>, so kommt es hierbei zu
20 Datenverlust.
21 <buf> wird nicht veraendert. Ist die Groesse von <buf> gleich der
22 neuen gewuenschten Groesse, wird letztendlich der Ringpuffer kopiert.
23 Je nach Groesse von <buf> und Wert von <size> kann dies eine teure
24 Angelegenheit sein.
25
26RUeCKGABEWERT:
27 Der neue Ringpuffer mit Groesse <size>.
28
29BEISPIELE:
30 // Ringpuffer anlegen:
31 struct std_ringbuffer buffer = CreateRingBuffer(5, MODE_FIFO);
32 // 5 Werte reinschreiben:
33 foreach(int i: 5) RingBufferPut(buffer, i);
34 // Groesse aendern
35 buffer = ResizeRingBuffer(buffer, 10);
36 // Daten als Array ermitteln:
37 mixed array = RingBufferGet(buffer);
38 // array enthaelt: ({0,0,0,0,0,0,1,2,3,4})
39
40SIEHE AUCH:
41 RingBufferGet(), RingBufferPut(), CreateRingBuffer()
42
4323.05.2008, Zesstra
44