]> git.stg.codes - stg.git/blob - libs/smux/include/stg/ANY.h
Public interfaces: part 4
[stg.git] / libs / smux / include / stg / ANY.h
1 /*-
2  * Copyright (c) 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
3  * Redistribution and modifications are permitted subject to BSD license.
4  */
5 #ifndef ASN_TYPE_ANY_H
6 #define ASN_TYPE_ANY_H
7
8 #include <OCTET_STRING.h>       /* Implemented via OCTET STRING type */
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 typedef struct ANY {
15         uint8_t *buf;   /* BER-encoded ANY contents */
16         int size;       /* Size of the above buffer */
17
18         asn_struct_ctx_t _asn_ctx;      /* Parsing across buffer boundaries */
19 } ANY_t;
20
21 extern asn_TYPE_descriptor_t asn_DEF_ANY;
22
23 asn_struct_free_f ANY_free;
24 asn_struct_print_f ANY_print;
25 ber_type_decoder_f ANY_decode_ber;
26 der_type_encoder_f ANY_encode_der;
27 xer_type_encoder_f ANY_encode_xer;
28
29 /******************************
30  * Handy conversion routines. *
31  ******************************/
32
33 /* Convert another ASN.1 type into the ANY. This implies DER encoding. */
34 int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr);
35 ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr);
36
37 /* Convert the contents of the ANY type into the specified type. */
38 int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr);
39
40 #define ANY_fromBuf(s, buf, size)       OCTET_STRING_fromBuf((s), (buf), (size))
41 #define ANY_new_fromBuf(buf, size)      OCTET_STRING_new_fromBuf(       \
42                                                 &asn_DEF_ANY, (buf), (size))
43
44 #ifdef __cplusplus
45 }
46 #endif
47
48 #endif  /* ASN_TYPE_ANY_H */