VSF Documented
vsf_dynstack.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __VSF_DYNSTACK_H__
19#define __VSF_DYNSTACK_H__
20
21/*============================ INCLUDES ======================================*/
23
24#if VSF_USE_DYNSTACK == ENABLED
25
26#include "../dynarr/vsf_dynarr.h"
27
28#if defined(__VSF_DYNSTACK_CLASS_IMPLEMENT)
29# define __VSF_CLASS_IMPLEMENT__
30# undef __VSF_DYNSTACK_CLASS_IMPLEMENT
31#elif defined(__VSF_DYNSTACK_CLASS_INHERIT__)
32# define __VSF_CLASS_INHERIT__
33# undef __VSF_DYNSTACK_CLASS_INHERIT__
34#endif
35
36#include "utilities/ooc_class.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/*============================ MACROS ========================================*/
43/*============================ TYPES =========================================*/
44
46 public_member(
47 implement(vsf_dynarr_t)
48 uint32_t sp;
49 )
50};
51
52/*============================ GLOBAL VARIABLES ==============================*/
53/*============================ PROTOTYPES ====================================*/
54
56extern void vsf_dynstack_reset(vsf_dynstack_t *stack);
57extern void vsf_dynstack_fini(vsf_dynstack_t *stack);
59extern void * vsf_dynstack_pop(vsf_dynstack_t *stack, uint_fast16_t num);
60extern vsf_err_t vsf_dynstack_push(vsf_dynstack_t *stack, void *item, uint_fast16_t num);
61extern vsf_err_t vsf_dynstack_push_ext(vsf_dynstack_t *stack, void *ptr, uint_fast32_t len);
62extern vsf_err_t vsf_dynstack_pop_ext(vsf_dynstack_t *stack, void *ptr, uint_fast32_t len);
63
64#ifdef __cplusplus
65}
66#endif
67
68#endif // VSF_USE_DYNSTACK
69#endif // __VSF_DYNSTACK_H__
vsf_err_t
Definition __type.h:42
Definition vsf_dynarr.h:44
Definition vsf_dynstack.h:45
#define vsf_class(__name)
Definition ooc_class.h:48
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
unsigned short uint_fast16_t
Definition stdint.h:25
vsf_err_t vsf_dynstack_push(vsf_dynstack_t *stack, void *item, uint_fast16_t num)
Definition vsf_dynstack.c:72
void vsf_dynstack_fini(vsf_dynstack_t *stack)
Definition vsf_dynstack.c:49
void vsf_dynstack_reset(vsf_dynstack_t *stack)
Definition vsf_dynstack.c:43
vsf_err_t vsf_dynstack_pop_ext(vsf_dynstack_t *stack, void *ptr, uint_fast32_t len)
Definition vsf_dynstack.c:108
vsf_err_t vsf_dynstack_push_ext(vsf_dynstack_t *stack, void *ptr, uint_fast32_t len)
Definition vsf_dynstack.c:92
vsf_err_t vsf_dynstack_init(vsf_dynstack_t *stack)
Definition vsf_dynstack.c:37
void * vsf_dynstack_get(vsf_dynstack_t *stack, uint_fast32_t offset)
Definition vsf_dynstack.c:54
void * vsf_dynstack_pop(vsf_dynstack_t *stack, uint_fast16_t num)
Definition vsf_dynstack.c:62
uint64_t offset
Definition vsf_memfs.h:49