Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Havar
asn1c
Commits
171487e6
Commit
171487e6
authored
Mar 21, 2006
by
Lev Walkin
Browse files
some more parameterization
parent
0c0bca6b
Changes
28
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
171487e6
...
...
@@ -6,6 +6,7 @@
(Severity: medim; Security impact: none)
* Refactored Information Object Classes parsing.
* Refactored Parameterization support.
* [typedef enum foo {}] foo_e; is now e_foo, see #1287989
0.9.20: 2006-Mar-06
...
...
libasn1compiler/asn1c_C.c
View file @
171487e6
...
...
@@ -158,9 +158,9 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) {
return
-
1
;
}
}
OUT
(
"} "
);
OUT
(
"}
e_
"
);
out_name_chain
(
arg
,
ONC_noflags
);
OUT
(
"
_e
;
\n
"
);
OUT
(
";
\n
"
);
assert
(
eidx
==
el_count
);
}
...
...
@@ -259,9 +259,9 @@ asn1c_lang_C_type_BIT_STRING(arg_t *arg) {
v
->
value
->
value
.
v_integer
,
(
eidx
<
el_count
)
?
","
:
""
);
}
OUT
(
"} "
);
OUT
(
"}
e_
"
);
out_name_chain
(
arg
,
ONC_noflags
);
OUT
(
"
_e
;
\n
"
);
OUT
(
";
\n
"
);
assert
(
eidx
==
el_count
);
}
...
...
tests/103-reference-SE.asn1
View file @
171487e6
...
...
@@ -3,11 +3,11 @@
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .10
2
-- .10
3
ModuleReference
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 10
2
}
spelio(9363) software(1) asn1c(5) test(1) 10
3
}
DEFINITIONS ::=
BEGIN
IMPORTS Type FROM ModuleReference;
...
...
tests/104-param-1-OK.asn1
View file @
171487e6
...
...
@@ -5,7 +5,7 @@
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .104
ModuleParametrization1
ModuleParamet
e
rization1
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 104 }
DEFINITIONS ::=
...
...
tests/104-param-1-OK.asn1.-EFprint-class-matrix
View file @
171487e6
ModuleParametrization1 { iso org(3) dod(6) internet(1) private(4)
ModuleParamet
e
rization1 { iso org(3) dod(6) internet(1) private(4)
enterprise(1) spelio(9363) software(1) asn1c(5) test(1) 104 }
DEFINITIONS ::=
BEGIN
...
...
tests/105-param-2-OK.asn1
View file @
171487e6
...
...
@@ -5,7 +5,7 @@
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .105
ModuleParametrization2
ModuleParamet
e
rization2
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 105 }
DEFINITIONS ::=
...
...
tests/106-param-constr-OK.asn1
View file @
171487e6
...
...
@@ -5,7 +5,7 @@
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .106
ModuleParametrizationWithConstraints
ModuleParamet
e
rizationWithConstraints
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 106 }
DEFINITIONS ::=
...
...
tests/107-param-constr-2-OK.asn1
View file @
171487e6
...
...
@@ -5,7 +5,7 @@
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .107
ModuleParametrizationWithConstraints2
ModuleParamet
e
rizationWithConstraints2
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 107 }
DEFINITIONS ::=
...
...
tests/108-param-constr-3-OK.asn1
0 → 100644
View file @
171487e6
-- OK: Everything is fine
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .108
ModuleParameterizationWithConstraints3
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 108 }
DEFINITIONS ::=
BEGIN
MinMax {Type, INTEGER:low-bound} ::= Type (low-bound..MAX)
ThreePlus ::= MinMax {INTEGER, 3}
END
tests/108-param-constr-3-OK.asn1.-P
0 → 100644
View file @
171487e6
/*** <<< INCLUDES [MinMax] >>> ***/
#include <INTEGER.h>
/*** <<< TYPE-DECLS [MinMax] >>> ***/
typedef INTEGER_t MinMax_16P0_t;
/*** <<< FUNC-DECLS [MinMax] >>> ***/
extern asn_TYPE_descriptor_t asn_DEF_MinMax_16P0;
asn_struct_free_f MinMax_16P0_free;
asn_struct_print_f MinMax_16P0_print;
asn_constr_check_f MinMax_16P0_constraint;
ber_type_decoder_f MinMax_16P0_decode_ber;
der_type_encoder_f MinMax_16P0_encode_der;
xer_type_decoder_f MinMax_16P0_decode_xer;
xer_type_encoder_f MinMax_16P0_encode_xer;
/*** <<< CODE [MinMax] >>> ***/
int
MinMax_16P0_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_consume_bytes_f *app_errlog, void *app_key) {
const INTEGER_t *st = (const INTEGER_t *)sptr;
long value;
if(!sptr) {
_ASN_ERRLOG(app_errlog, app_key,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
if(asn_INTEGER2long(st, &value)) {
_ASN_ERRLOG(app_errlog, app_key,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
if((value >= 3)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_ERRLOG(app_errlog, app_key,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using INTEGER,
* so here we adjust the DEF accordingly.
*/
static void
MinMax_16P0_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_INTEGER.free_struct;
td->print_struct = asn_DEF_INTEGER.print_struct;
td->ber_decoder = asn_DEF_INTEGER.ber_decoder;
td->der_encoder = asn_DEF_INTEGER.der_encoder;
td->xer_decoder = asn_DEF_INTEGER.xer_decoder;
td->xer_encoder = asn_DEF_INTEGER.xer_encoder;
td->uper_decoder = asn_DEF_INTEGER.uper_decoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_INTEGER.per_constraints;
td->elements = asn_DEF_INTEGER.elements;
td->elements_count = asn_DEF_INTEGER.elements_count;
td->specifics = asn_DEF_INTEGER.specifics;
}
void
MinMax_16P0_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
MinMax_16P0_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
MinMax_16P0_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
MinMax_16P0_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
MinMax_16P0_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
MinMax_16P0_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
MinMax_16P0_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
MinMax_16P0_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
MinMax_16P0_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
MinMax_16P0_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
MinMax_16P0_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
MinMax_16P0_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [MinMax] >>> ***/
static ber_tlv_tag_t asn_DEF_MinMax_16P0_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_MinMax_16P0 = {
"MinMax",
"MinMax",
MinMax_16P0_free,
MinMax_16P0_print,
MinMax_16P0_constraint,
MinMax_16P0_decode_ber,
MinMax_16P0_encode_der,
MinMax_16P0_decode_xer,
MinMax_16P0_encode_xer,
0, /* No PER decoder, -gen-PER to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_MinMax_16P0_tags_1,
sizeof(asn_DEF_MinMax_16P0_tags_1)
/sizeof(asn_DEF_MinMax_16P0_tags_1[0]), /* 1 */
asn_DEF_MinMax_16P0_tags_1, /* Same as above */
sizeof(asn_DEF_MinMax_16P0_tags_1)
/sizeof(asn_DEF_MinMax_16P0_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [ThreePlus] >>> ***/
#include <MinMax.h>
/*** <<< TYPE-DECLS [ThreePlus] >>> ***/
typedef MinMax_16P0_t ThreePlus_t;
/*** <<< FUNC-DECLS [ThreePlus] >>> ***/
extern asn_TYPE_descriptor_t asn_DEF_ThreePlus;
asn_struct_free_f ThreePlus_free;
asn_struct_print_f ThreePlus_print;
asn_constr_check_f ThreePlus_constraint;
ber_type_decoder_f ThreePlus_decode_ber;
der_type_encoder_f ThreePlus_encode_der;
xer_type_decoder_f ThreePlus_decode_xer;
xer_type_encoder_f ThreePlus_encode_xer;
/*** <<< CODE [ThreePlus] >>> ***/
int
ThreePlus_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_consume_bytes_f *app_errlog, void *app_key) {
const MinMax_16P0_t *st = (const MinMax_16P0_t *)sptr;
long value;
if(!sptr) {
_ASN_ERRLOG(app_errlog, app_key,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
if(asn_INTEGER2long(st, &value)) {
_ASN_ERRLOG(app_errlog, app_key,
"%s: value too large (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
if((value >= 3)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_ERRLOG(app_errlog, app_key,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using MinMax_16P0,
* so here we adjust the DEF accordingly.
*/
static void
ThreePlus_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_MinMax_16P0.free_struct;
td->print_struct = asn_DEF_MinMax_16P0.print_struct;
td->ber_decoder = asn_DEF_MinMax_16P0.ber_decoder;
td->der_encoder = asn_DEF_MinMax_16P0.der_encoder;
td->xer_decoder = asn_DEF_MinMax_16P0.xer_decoder;
td->xer_encoder = asn_DEF_MinMax_16P0.xer_encoder;
td->uper_decoder = asn_DEF_MinMax_16P0.uper_decoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_MinMax_16P0.per_constraints;
td->elements = asn_DEF_MinMax_16P0.elements;
td->elements_count = asn_DEF_MinMax_16P0.elements_count;
td->specifics = asn_DEF_MinMax_16P0.specifics;
}
void
ThreePlus_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ThreePlus_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ThreePlus_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ThreePlus_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ThreePlus_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
ThreePlus_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ThreePlus_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
ThreePlus_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ThreePlus_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
ThreePlus_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ThreePlus_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
ThreePlus_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [ThreePlus] >>> ***/
static ber_tlv_tag_t asn_DEF_ThreePlus_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ThreePlus = {
"ThreePlus",
"ThreePlus",
ThreePlus_free,
ThreePlus_print,
ThreePlus_constraint,
ThreePlus_decode_ber,
ThreePlus_encode_der,
ThreePlus_decode_xer,
ThreePlus_encode_xer,
0, /* No PER decoder, -gen-PER to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ThreePlus_tags_1,
sizeof(asn_DEF_ThreePlus_tags_1)
/sizeof(asn_DEF_ThreePlus_tags_1[0]), /* 1 */
asn_DEF_ThreePlus_tags_1, /* Same as above */
sizeof(asn_DEF_ThreePlus_tags_1)
/sizeof(asn_DEF_ThreePlus_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};
tests/110-param-3-OK.asn1
0 → 100644
View file @
171487e6
-- OK: Everything is fine
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .110
ModuleParameterization3
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 110 }
DEFINITIONS ::=
BEGIN
Flag{Color} ::= SEQUENCE {
field Color DEFAULT blue
}
IntegerColorFlag ::= Flag{INTEGER{ red(0), green(1), blue(5) }}
EnumeratedColorFlag ::= Flag{ENUMERATED{ red(3), green, blue }}
END
tests/110-param-3-OK.asn1.-P
0 → 100644
View file @
171487e6
/*** <<< INCLUDES [Flag] >>> ***/
#include <INTEGER.h>
#include <constr_SEQUENCE.h>
#include <ENUMERATED.h>
/*** <<< DEPS [Flag] >>> ***/
typedef enum field {
field_red = 0,
field_green = 1,
field_blue = 5
} e_field;
typedef enum field {
field_red = 3,
field_green = 4,
field_blue = 5
} e_field;
/*** <<< TYPE-DECLS [Flag] >>> ***/
typedef struct Flag_16P0 {
INTEGER_t *field /* DEFAULT 5 */;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} Flag_16P0_t;
typedef struct Flag_16P1 {
ENUMERATED_t *field /* DEFAULT 5 */;
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} Flag_16P1_t;
/*** <<< FUNC-DECLS [Flag] >>> ***/
extern asn_TYPE_descriptor_t asn_DEF_Flag_16P0;
/* extern asn_TYPE_descriptor_t asn_DEF_field_7; // (Use -fall-defs-global to expose) */
extern asn_TYPE_descriptor_t asn_DEF_Flag_16P1;
/*** <<< CODE [Flag] >>> ***/
static int
field_7_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_consume_bytes_f *app_errlog, void *app_key) {
/* Replace with underlying type checker */
td->check_constraints = asn_DEF_ENUMERATED.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using ENUMERATED,
* so here we adjust the DEF accordingly.
*/
static void
field_7_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_ENUMERATED.free_struct;
td->print_struct = asn_DEF_ENUMERATED.print_struct;
td->ber_decoder = asn_DEF_ENUMERATED.ber_decoder;
td->der_encoder = asn_DEF_ENUMERATED.der_encoder;
td->xer_decoder = asn_DEF_ENUMERATED.xer_decoder;
td->xer_encoder = asn_DEF_ENUMERATED.xer_encoder;
td->uper_decoder = asn_DEF_ENUMERATED.uper_decoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_ENUMERATED.per_constraints;
td->elements = asn_DEF_ENUMERATED.elements;
td->elements_count = asn_DEF_ENUMERATED.elements_count;
/* td->specifics = asn_DEF_ENUMERATED.specifics; // Defined explicitly */
}
static void
field_7_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
field_7_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
static int
field_7_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
field_7_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
static asn_dec_rval_t
field_7_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
field_7_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
static asn_enc_rval_t
field_7_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
field_7_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
static asn_dec_rval_t
field_7_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
field_7_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
static asn_enc_rval_t
field_7_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
field_7_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [Flag] >>> ***/
static int asn_DFL_2_set_5(void **sptr) {
INTEGER_t *st = *sptr;
if(!st) {
st = (*sptr = CALLOC(1, sizeof(*st)));
if(!st) return -1;
}
/* Install default value 5 */
return asn_long2INTEGER(st, 5);
}
static asn_TYPE_member_t asn_MBR_Flag_16P0_1[] = {
{ ATF_POINTER, 1, offsetof(struct Flag_16P0, field),
.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
.tag_mode = 0,
.type = &asn_DEF_INTEGER,
.memb_constraints = 0, /* Defer constraints checking to the member type */
.per_constraints = 0, /* PER is not compiled, use -gen-PER */
.default_value = asn_DFL_2_set_5, /* DEFAULT 5 */
.name = "field"
},
};
static ber_tlv_tag_t asn_DEF_Flag_16P0_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static asn_TYPE_tag2member_t asn_MAP_Flag_16P0_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* field at 18 */
};
static asn_SEQUENCE_specifics_t asn_SPC_Flag_16P0_specs_1 = {
sizeof(struct Flag_16P0),
offsetof(struct Flag_16P0, _asn_ctx),
asn_MAP_Flag_16P0_tag2el_1,
1, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
-1, /* Start extensions */
-1 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_Flag_16P0 = {
"Flag",
"Flag",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, /* No PER decoder, -gen-PER to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_Flag_16P0_tags_1,
sizeof(asn_DEF_Flag_16P0_tags_1)
/sizeof(asn_DEF_Flag_16P0_tags_1[0]), /* 1 */
asn_DEF_Flag_16P0_tags_1, /* Same as above */
sizeof(asn_DEF_Flag_16P0_tags_1)
/sizeof(asn_DEF_Flag_16P0_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_Flag_16P0_1,
1, /* Elements count */
&asn_SPC_Flag_16P0_specs_1 /* Additional specs */
};
static int asn_DFL_7_set_5(void **sptr) {
ENUMERATED_t *st = *sptr;
if(!st) {
st = (*sptr = CALLOC(1, sizeof(*st)));
if(!st) return -1;
}
/* Install default value 5 */
return asn_long2INTEGER(st, 5);
}
static asn_INTEGER_enum_map_t asn_MAP_field_value2enum_7[] = {
{ 3, 3, "red" },
{ 4, 5, "green" },
{ 5, 4, "blue" }
};
static unsigned int asn_MAP_field_enum2value_7[] = {
2, /* blue(5) */
1, /* green(4) */
0 /* red(3) */
};
static asn_INTEGER_specifics_t asn_SPC_field_specs_7 = {
asn_MAP_field_value2enum_7, /* "tag" => N; sorted by tag */
asn_MAP_field_enum2value_7, /* N => "tag"; sorted by N */
3, /* Number of elements in the maps */
0, /* Enumeration is not extensible */
1 /* Strict enumeration */
};
static ber_tlv_tag_t asn_DEF_field_tags_7[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
static /* Use -fall-defs-global to expose */
asn_TYPE_descriptor_t asn_DEF_field_7 = {
"field",
"field",
field_7_free,