blob: d2fe3659cc9ed707f296981faa28325733187a4d [file] [log] [blame]
Lev Walkinad0d6372017-08-08 02:02:42 -07001/*
2 * Run-time support for Information Object Classes.
3 * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
Lev Walkin086ee9a2017-08-08 02:05:55 -07004 * Redistribution and modifications are permitted subject to BSD license.
Lev Walkinad0d6372017-08-08 02:02:42 -07005 */
6#ifndef ASN_IOC_H
7#define ASN_IOC_H
8
9#include <asn_system.h> /* Platform-specific types */
10
11#ifdef __cplusplus
12extern "C" {
13#endif
14
15struct asn_TYPE_descriptor_s;
16struct asn_ioc_cell_s;
17
18/*
19 * X.681, #13
20 */
Lev Walkin6aae7c62017-08-10 17:58:48 -070021typedef struct asn_ioc_set_s {
Lev Walkinad0d6372017-08-08 02:02:42 -070022 size_t rows_count;
23 size_t columns_count;
Lev Walkin6aae7c62017-08-10 17:58:48 -070024 const struct asn_ioc_cell_s *rows;
Lev Walkinad0d6372017-08-08 02:02:42 -070025} asn_ioc_set_t;
26
27
28typedef struct asn_ioc_cell_s {
29 const char *field_name; /* Is equal to corresponding column_name */
30 enum {
31 aioc__value,
32 aioc__type,
33 aioc__open_type,
34 } cell_kind;
35 struct asn_TYPE_descriptor_s *type_descriptor;
36 const void *value_sptr;
37 struct {
38 size_t types_count;
39 struct {
40 unsigned choice_position;
41 } *types;
42 } open_type;
Lev Walkin6aae7c62017-08-10 17:58:48 -070043} asn_ioc_cell_t;
Lev Walkinad0d6372017-08-08 02:02:42 -070044
45
46#ifdef __cplusplus
47}
48#endif
49
50#endif /* ASN_IOC_H */