Graphviz 12.0.1~dev.20240715.2254
Loading...
Searching...
No Matches
stack.h
Go to the documentation of this file.
1
4
5#pragma once
6
7#include <assert.h>
8#include <cgraph/list.h>
9#include <stdbool.h>
10
11DEFINE_LIST(gv_stack, void *)
12
13static inline size_t stack_size(const gv_stack_t *stack) {
14 return gv_stack_size(stack);
15}
16
17static inline bool stack_is_empty(const gv_stack_t *stack) {
18 return gv_stack_is_empty(stack);
19}
20
21static inline void stack_push(gv_stack_t *stack, void *item) {
22 gv_stack_push(stack, item);
23}
24
25static inline void *stack_top(gv_stack_t *stack) {
26
27 assert(stack != NULL);
28 assert(!stack_is_empty(stack) && "access to top of an empty stack");
29
30 return gv_stack_get(stack, gv_stack_size(stack) - 1);
31}
32
33static inline void *stack_pop(gv_stack_t *stack) { return gv_stack_pop(stack); }
34
35static inline void stack_reset(gv_stack_t *stack) { gv_stack_free(stack); }
node NULL
Definition grammar.y:149
#define DEFINE_LIST(name, type)
Definition list.h:26
static void stack_push(gv_stack_t *stack, void *item)
Definition stack.h:21
static size_t stack_size(const gv_stack_t *stack)
Definition stack.h:13
static void * stack_pop(gv_stack_t *stack)
Definition stack.h:33
static void * stack_top(gv_stack_t *stack)
Definition stack.h:25
static void stack_reset(gv_stack_t *stack)
Definition stack.h:35
static bool stack_is_empty(const gv_stack_t *stack)
Definition stack.h:17
Definition utils.c:748