reference-libobs-util-deque.rst 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. Double-Ended Queue
  2. ==================
  3. A double-ended queue (deque) that will automatically increase in size as necessary
  4. as data is pushed to the front or back.
  5. .. code:: cpp
  6. #include <util/deque.h>
  7. .. versionadded:: 30.1
  8. Deque Structure (struct deque)
  9. --------------------------------------------
  10. .. struct:: deque
  11. .. member:: void *deque.data
  12. .. member:: size_t deque.size
  13. .. member:: size_t deque.start_pos
  14. .. member:: size_t deque.end_pos
  15. .. member:: size_t deque.capacity
  16. Deque Inline Functions
  17. --------------------------------
  18. .. function:: void deque_init(struct deque *dq)
  19. Initializes a deque (just zeroes out the entire structure).
  20. :param dq: The deque
  21. ---------------------
  22. .. function:: void deque_free(struct deque *dq)
  23. Frees a deque.
  24. :param dq: The deque
  25. ---------------------
  26. .. function:: void deque_reserve(struct deque *dq, size_t capacity)
  27. Reserves a specific amount of buffer space to ensure minimum
  28. upsizing.
  29. :param dq: The deque
  30. :param capacity: The new capacity, in bytes
  31. ---------------------
  32. .. function:: void deque_upsize(struct deque *dq, size_t size)
  33. Sets the current active (not just reserved) size. Any new data is
  34. zeroed.
  35. :param dq: The deque
  36. :param size: The new size, in bytes
  37. ---------------------
  38. .. function:: void deque_place(struct deque *dq, size_t position, const void *data, size_t size)
  39. Places data at a specific positional index (relative to the starting
  40. point) within the deque.
  41. :param dq: The deque
  42. :param position: Positional index relative to starting point
  43. :param data: Data to insert
  44. :param size: Size of data to insert
  45. ---------------------
  46. .. function:: void deque_push_back(struct deque *dq, const void *data, size_t size)
  47. Pushes data to the end of the deque.
  48. :param dq: The deque
  49. :param data: Data
  50. :param size: Size of data
  51. ---------------------
  52. .. function:: void deque_push_front(struct deque *dq, const void *data, size_t size)
  53. Pushes data to the front of the deque.
  54. :param dq: The deque
  55. :param data: Data
  56. :param size: Size of data
  57. ---------------------
  58. .. function:: void deque_push_back_zero(struct deque *dq, size_t size)
  59. Pushes zeroed data to the end of the deque.
  60. :param dq: The deque
  61. :param size: Size
  62. ---------------------
  63. .. function:: void deque_push_front_zero(struct deque *dq, size_t size)
  64. Pushes zeroed data to the front of the deque.
  65. :param dq: The deque
  66. :param size: Size
  67. ---------------------
  68. .. function:: void deque_peek_front(struct deque *dq, void *data, size_t size)
  69. Peeks data at the front of the deque.
  70. :param dq: The deque
  71. :param data: Buffer to store data in
  72. :param size: Size of data to retrieve
  73. ---------------------
  74. .. function:: void deque_peek_back(struct deque *dq, void *data, size_t size)
  75. Peeks data at the back of the deque.
  76. :param dq: The deque
  77. :param data: Buffer to store data in
  78. :param size: Size of data to retrieve
  79. ---------------------
  80. .. function:: void deque_pop_front(struct deque *dq, void *data, size_t size)
  81. Pops data from the front of the deque.
  82. :param dq: The deque
  83. :param data: Buffer to store data in, or *NULL*
  84. :param size: Size of data to retrieve
  85. ---------------------
  86. .. function:: void deque_pop_back(struct deque *dq, void *data, size_t size)
  87. Pops data from the back of the deque.
  88. :param dq: The deque
  89. :param data: Buffer to store data in, or *NULL*
  90. :param size: Size of data to retrieve
  91. ---------------------
  92. .. function:: void *deque_data(struct deque *dq, size_t idx)
  93. Gets a direct pointer to data at a specific positional index within
  94. the deque, relative to the starting point.
  95. :param dq: The deque
  96. :param idx: Byte index relative to the starting point