include
etsi_its_vam_ts_coding
asn_SET_OF.h
Go to the documentation of this file.
1
/*-
2
* Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
3
* Redistribution and modifications are permitted subject to BSD license.
4
*/
5
#ifndef ASN_SET_OF_H
6
#define ASN_SET_OF_H
7
8
#ifdef __cplusplus
9
#define A_SET_OF(type) \
10
struct { \
11
type **array; \
12
int count;
/* Meaningful size */
\
13
int size;
/* Allocated size */
\
14
void (*free)(decltype(*array)); \
15
}
16
#else
/* C */
17
#define A_SET_OF(type) \
18
struct { \
19
type **array; \
20
int count;
/* Meaningful size */
\
21
int size;
/* Allocated size */
\
22
void (*free)(type *); \
23
}
24
#endif
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
30
#define ASN_SET_ADD(headptr, ptr) \
31
asn_set_add((headptr), (ptr))
32
33
/*******************************************
34
* Implementation of the SET OF structure.
35
*/
36
37
/*
38
* Add another structure into the set by its pointer.
39
* RETURN VALUES:
40
* 0 for success and -1/errno for failure.
41
*/
42
int
asn_set_add
(
void
*asn_set_of_x,
void
*ptr);
43
44
/*
45
* Delete the element from the set by its number (base 0).
46
* This is a constant-time operation. The order of elements before the
47
* deleted ones is guaranteed, the order of elements after the deleted
48
* one is NOT guaranteed.
49
* If _do_free is given AND the (*free) is initialized, the element
50
* will be freed using the custom (*free) function as well.
51
*/
52
void
asn_set_del
(
void
*asn_set_of_x,
int
number,
int
_do_free);
53
54
/*
55
* Empty the contents of the set. Will free the elements, if (*free) is given.
56
* Will NOT free the set itself.
57
*/
58
void
asn_set_empty
(
void
*asn_set_of_x);
59
60
/*
61
* Cope with different conversions requirements to/from void in C and C++.
62
* This is mostly useful for support library.
63
*/
64
typedef
A_SET_OF
(
void
) asn_anonymous_set_;
65
#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr))
66
#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr))
67
68
#ifdef __cplusplus
69
}
70
#endif
71
72
#endif
/* ASN_SET_OF_H */
asn_set_del
void asn_set_del(void *asn_set_of_x, int number, int _do_free)
Definition:
asn_SET_OF.c:43
A_SET_OF
#define A_SET_OF(type)
Definition:
asn_SET_OF.h:17
asn_set_empty
void asn_set_empty(void *asn_set_of_x)
Definition:
asn_SET_OF.c:71
asn_set_add
int asn_set_add(void *asn_set_of_x, void *ptr)
Definition:
asn_SET_OF.c:13
etsi_its_vam_ts_coding
Author(s): Jean-Pierre Busch
, Guido Küppers
, Lennart Reiher
autogenerated on Sun May 18 2025 02:30:55