File: reference-libobs-util-deque.rst

package info (click to toggle)
obs-studio 30.2.3%2Bdfsg-3.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 47,928 kB
  • sloc: ansic: 202,137; cpp: 112,403; makefile: 868; python: 599; sh: 275; javascript: 19
file content (160 lines) | stat: -rw-r--r-- 3,941 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Double-Ended Queue
==================

A double-ended queue (deque) that will automatically increase in size as necessary
as data is pushed to the front or back.

.. code:: cpp

   #include <util/deque.h>

.. versionadded:: 30.1


Deque Structure (struct deque)
--------------------------------------------

.. struct:: deque
.. member:: void   *deque.data
.. member:: size_t deque.size
.. member:: size_t deque.start_pos
.. member:: size_t deque.end_pos
.. member:: size_t deque.capacity


Deque Inline Functions
--------------------------------

.. function:: void deque_init(struct deque *dq)

   Initializes a deque (just zeroes out the entire structure).

   :param dq: The deque

---------------------

.. function:: void deque_free(struct deque *dq)

   Frees a deque.

   :param dq: The deque

---------------------

.. function:: void deque_reserve(struct deque *dq, size_t capacity)

   Reserves a specific amount of buffer space to ensure minimum
   upsizing.

   :param dq:       The deque
   :param capacity: The new capacity, in bytes

---------------------

.. function:: void deque_upsize(struct deque *dq, size_t size)

   Sets the current active (not just reserved) size.  Any new data is
   zeroed.

   :param dq:       The deque
   :param size:     The new size, in bytes

---------------------

.. function:: void deque_place(struct deque *dq, size_t position, const void *data, size_t size)

   Places data at a specific positional index (relative to the starting
   point) within the deque.

   :param dq:       The deque
   :param position: Positional index relative to starting point
   :param data:     Data to insert
   :param size:     Size of data to insert

---------------------

.. function:: void deque_push_back(struct deque *dq, const void *data, size_t size)

   Pushes data to the end of the deque.

   :param dq:       The deque
   :param data:     Data
   :param size:     Size of data

---------------------

.. function:: void deque_push_front(struct deque *dq, const void *data, size_t size)

   Pushes data to the front of the deque.

   :param dq:       The deque
   :param data:     Data
   :param size:     Size of data

---------------------

.. function:: void deque_push_back_zero(struct deque *dq, size_t size)

   Pushes zeroed data to the end of the deque.

   :param dq:       The deque
   :param size:     Size

---------------------

.. function:: void deque_push_front_zero(struct deque *dq, size_t size)

   Pushes zeroed data to the front of the deque.

   :param dq:       The deque
   :param size:     Size

---------------------

.. function:: void deque_peek_front(struct deque *dq, void *data, size_t size)

   Peeks data at the front of the deque.

   :param dq:       The deque
   :param data:     Buffer to store data in
   :param size:     Size of data to retrieve

---------------------

.. function:: void deque_peek_back(struct deque *dq, void *data, size_t size)

   Peeks data at the back of the deque.

   :param dq:       The deque
   :param data:     Buffer to store data in
   :param size:     Size of data to retrieve

---------------------

.. function:: void deque_pop_front(struct deque *dq, void *data, size_t size)

   Pops data from the front of the deque.

   :param dq:       The deque
   :param data:     Buffer to store data in, or *NULL*
   :param size:     Size of data to retrieve

---------------------

.. function:: void deque_pop_back(struct deque *dq, void *data, size_t size)

   Pops data from the back of the deque.

   :param dq:       The deque
   :param data:     Buffer to store data in, or *NULL*
   :param size:     Size of data to retrieve

---------------------

.. function:: void *deque_data(struct deque *dq, size_t idx)

   Gets a direct pointer to data at a specific positional index within
   the deque, relative to the starting point.

   :param dq:       The deque
   :param idx:      Byte index relative to the starting point