Commit caf0d5a7 authored by Lev Walkin's avatar Lev Walkin

proper handling of reserved identifiers

parent 6938d044
...@@ -69,9 +69,9 @@ static int emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode ...@@ -69,9 +69,9 @@ static int emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode
GEN_INCLUDE("asn_SEQUENCE_OF"); \ GEN_INCLUDE("asn_SEQUENCE_OF"); \
} while(0) } while(0)
/* MKID() without checking for reserved keywords */ /* MKID_safe() without checking for reserved keywords */
#define MKID_nc(id) asn1c_make_identifier(0, (id), 0) #define MKID(id) asn1c_make_identifier(0, (id), 0)
#define MKID(id) asn1c_make_identifier(AMI_CHECK_RESERVED, (id), 0) #define MKID_safe(id) asn1c_make_identifier(AMI_CHECK_RESERVED, (id), 0)
int int
asn1c_lang_C_type_REAL(arg_t *arg) { asn1c_lang_C_type_REAL(arg_t *arg) {
...@@ -127,7 +127,7 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) { ...@@ -127,7 +127,7 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) {
case A1TC_UNIVERVAL: case A1TC_UNIVERVAL:
OUT("\t"); OUT("\t");
out_name_chain(arg, 0); out_name_chain(arg, 0);
OUT("_%s", MKID_nc(v->Identifier)); OUT("_%s", MKID(v->Identifier));
OUT("\t= %" PRIdASN "%s\n", OUT("\t= %" PRIdASN "%s\n",
v->value->value.v_integer, v->value->value.v_integer,
(eidx+1 < el_count) ? "," : ""); (eidx+1 < el_count) ? "," : "");
...@@ -156,8 +156,7 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) { ...@@ -156,8 +156,7 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) {
REDIR(OT_STAT_DEFS); REDIR(OT_STAT_DEFS);
OUT("static asn_INTEGER_enum_map_t asn_MAP_%s_%d_value2enum[] = {\n", OUT("static asn_INTEGER_enum_map_t asn_MAP_%s_%d_value2enum[] = {\n",
MKID_nc(expr->Identifier), MKID(expr->Identifier), expr->_type_unique_index);
expr->_type_unique_index);
qsort(v2e, el_count, sizeof(v2e[0]), compar_enumMap_byValue); qsort(v2e, el_count, sizeof(v2e[0]), compar_enumMap_byValue);
for(eidx = 0; eidx < el_count; eidx++) { for(eidx = 0; eidx < el_count; eidx++) {
v2e[eidx].idx = eidx; v2e[eidx].idx = eidx;
...@@ -171,8 +170,7 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) { ...@@ -171,8 +170,7 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) {
OUT("};\n"); OUT("};\n");
OUT("static unsigned int asn_MAP_%s_%d_enum2value[] = {\n", OUT("static unsigned int asn_MAP_%s_%d_enum2value[] = {\n",
MKID_nc(expr->Identifier), MKID(expr->Identifier), expr->_type_unique_index);
expr->_type_unique_index);
qsort(v2e, el_count, sizeof(v2e[0]), compar_enumMap_byName); qsort(v2e, el_count, sizeof(v2e[0]), compar_enumMap_byName);
for(eidx = 0; eidx < el_count; eidx++) { for(eidx = 0; eidx < el_count; eidx++) {
OUT("\t%d%s\t/* %s(%" PRIdASN ") */\n", OUT("\t%d%s\t/* %s(%" PRIdASN ") */\n",
...@@ -185,15 +183,15 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) { ...@@ -185,15 +183,15 @@ asn1c_lang_C_type_common_INTEGER(arg_t *arg) {
OUT("};\n"); OUT("};\n");
OUT("static asn_INTEGER_specifics_t asn_SPC_%s_%d_specs = {\n", OUT("static asn_INTEGER_specifics_t asn_SPC_%s_%d_specs = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
INDENT(+1); INDENT(+1);
OUT("asn_MAP_%s_%d_value2enum,\t" OUT("asn_MAP_%s_%d_value2enum,\t"
"/* \"tag\" => N; sorted by tag */\n", "/* \"tag\" => N; sorted by tag */\n",
MKID_nc(expr->Identifier), MKID(expr->Identifier),
expr->_type_unique_index); expr->_type_unique_index);
OUT("asn_MAP_%s_%d_enum2value,\t" OUT("asn_MAP_%s_%d_enum2value,\t"
"/* N => \"tag\"; sorted by N */\n", "/* N => \"tag\"; sorted by N */\n",
MKID_nc(expr->Identifier), MKID(expr->Identifier),
expr->_type_unique_index); expr->_type_unique_index);
OUT("%d,\t/* Number of elements in the maps */\n", OUT("%d,\t/* Number of elements in the maps */\n",
el_count); el_count);
...@@ -224,7 +222,7 @@ asn1c_lang_C_type_SEQUENCE(arg_t *arg) { ...@@ -224,7 +222,7 @@ asn1c_lang_C_type_SEQUENCE(arg_t *arg) {
OUT(" {\n"); OUT(" {\n");
} else { } else {
OUT("typedef struct %s {\n", OUT("typedef struct %s {\n",
MKID(expr->Identifier)); MKID_safe(expr->Identifier));
} }
TQ_FOR(v, &(expr->members), next) { TQ_FOR(v, &(expr->members), next) {
...@@ -239,7 +237,10 @@ asn1c_lang_C_type_SEQUENCE(arg_t *arg) { ...@@ -239,7 +237,10 @@ asn1c_lang_C_type_SEQUENCE(arg_t *arg) {
PCTX_DEF; PCTX_DEF;
OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"", OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"",
expr->_anonymous_type ? "" : MKID(expr->Identifier), expr->_anonymous_type ? "" :
arg->embed
? MKID_safe(expr->Identifier)
: MKID(expr->Identifier),
arg->embed ? "" : "_t"); arg->embed ? "" : "_t");
return asn1c_lang_C_type_SEQUENCE_def(arg); return asn1c_lang_C_type_SEQUENCE_def(arg);
...@@ -279,7 +280,7 @@ asn1c_lang_C_type_SEQUENCE_def(arg_t *arg) { ...@@ -279,7 +280,7 @@ asn1c_lang_C_type_SEQUENCE_def(arg_t *arg) {
int comp_mode = 0; /* {root,ext=1,root,root,...} */ int comp_mode = 0; /* {root,ext=1,root,root,...} */
OUT("static asn_TYPE_member_t asn_MBR_%s_%d[] = {\n", OUT("static asn_TYPE_member_t asn_MBR_%s_%d[] = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
elements = 0; elements = 0;
INDENTED(TQ_FOR(v, &(expr->members), next) { INDENTED(TQ_FOR(v, &(expr->members), next) {
...@@ -309,13 +310,13 @@ asn1c_lang_C_type_SEQUENCE_def(arg_t *arg) { ...@@ -309,13 +310,13 @@ asn1c_lang_C_type_SEQUENCE_def(arg_t *arg) {
emit_tag2member_map(arg, tag2el, tag2el_count, 0); emit_tag2member_map(arg, tag2el, tag2el_count, 0);
OUT("static asn_SEQUENCE_specifics_t asn_SPC_%s_%d_specs = {\n", OUT("static asn_SEQUENCE_specifics_t asn_SPC_%s_%d_specs = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
INDENTED( INDENTED(
OUT("sizeof(struct "); out_name_chain(arg, 1); OUT("),\n"); OUT("sizeof(struct "); out_name_chain(arg, 1); OUT("),\n");
OUT("offsetof(struct "); out_name_chain(arg, 1); OUT(", _asn_ctx),\n"); OUT("offsetof(struct "); out_name_chain(arg, 1); OUT(", _asn_ctx),\n");
OUT("asn_MAP_%s_%d_tag2el,\n", OUT("asn_MAP_%s_%d_tag2el,\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
OUT("%d,\t/* Count of tags in the map */\n", tag2el_count); OUT("%d,\t/* Count of tags in the map */\n", tag2el_count);
OUT("%d,\t/* Start extensions */\n", OUT("%d,\t/* Start extensions */\n",
ext_start); ext_start);
...@@ -360,7 +361,7 @@ asn1c_lang_C_type_SET(arg_t *arg) { ...@@ -360,7 +361,7 @@ asn1c_lang_C_type_SET(arg_t *arg) {
INDENTED( INDENTED(
out_name_chain(arg, 0); out_name_chain(arg, 0);
OUT("_PR_"); OUT("_PR_");
id = MKID_nc(v->Identifier); id = MKID(v->Identifier);
OUT("%s,\t/* Member %s is present */\n", OUT("%s,\t/* Member %s is present */\n",
id, id) id, id)
); );
...@@ -375,8 +376,7 @@ asn1c_lang_C_type_SET(arg_t *arg) { ...@@ -375,8 +376,7 @@ asn1c_lang_C_type_SET(arg_t *arg) {
out_name_chain(arg, 1); out_name_chain(arg, 1);
OUT(" {\n"); OUT(" {\n");
} else { } else {
id = MKID(expr->Identifier); OUT("typedef struct %s {\n", MKID_safe(expr->Identifier));
OUT("typedef struct %s {\n", id);
} }
TQ_FOR(v, &(expr->members), next) { TQ_FOR(v, &(expr->members), next) {
...@@ -390,7 +390,7 @@ asn1c_lang_C_type_SET(arg_t *arg) { ...@@ -390,7 +390,7 @@ asn1c_lang_C_type_SET(arg_t *arg) {
} }
INDENTED( INDENTED(
id = MKID_nc(expr->Identifier); id = MKID(expr->Identifier);
OUT("\n"); OUT("\n");
OUT("/* Presence bitmask: ASN_SET_ISPRESENT(p%s, %s_PR_x) */\n", OUT("/* Presence bitmask: ASN_SET_ISPRESENT(p%s, %s_PR_x) */\n",
id, id); id, id);
...@@ -400,7 +400,7 @@ asn1c_lang_C_type_SET(arg_t *arg) { ...@@ -400,7 +400,7 @@ asn1c_lang_C_type_SET(arg_t *arg) {
PCTX_DEF; PCTX_DEF;
OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"", OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"",
expr->_anonymous_type ? "" : MKID(expr->Identifier), expr->_anonymous_type ? "" : MKID_safe(expr->Identifier),
arg->embed ? "" : "_t"); arg->embed ? "" : "_t");
return asn1c_lang_C_type_SET_def(arg); return asn1c_lang_C_type_SET_def(arg);
...@@ -451,7 +451,7 @@ asn1c_lang_C_type_SET_def(arg_t *arg) { ...@@ -451,7 +451,7 @@ asn1c_lang_C_type_SET_def(arg_t *arg) {
int comp_mode = 0; /* {root,ext=1,root,root,...} */ int comp_mode = 0; /* {root,ext=1,root,root,...} */
OUT("static asn_TYPE_member_t asn_MBR_%s_%d[] = {\n", OUT("static asn_TYPE_member_t asn_MBR_%s_%d[] = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
elements = 0; elements = 0;
INDENTED(TQ_FOR(v, &(expr->members), next) { INDENTED(TQ_FOR(v, &(expr->members), next) {
...@@ -486,8 +486,8 @@ asn1c_lang_C_type_SET_def(arg_t *arg) { ...@@ -486,8 +486,8 @@ asn1c_lang_C_type_SET_def(arg_t *arg) {
* Emit a map of mandatory elements. * Emit a map of mandatory elements.
*/ */
OUT("static uint8_t asn_MAP_%s_%d_mmap", OUT("static uint8_t asn_MAP_%s_%d_mmap",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
p = MKID(expr->Identifier); p = MKID_safe(expr->Identifier);
OUT("[(%d + (8 * sizeof(unsigned int)) - 1) / 8]", elements); OUT("[(%d + (8 * sizeof(unsigned int)) - 1) / 8]", elements);
OUT(" = {\n"); OUT(" = {\n");
INDENTED( INDENTED(
...@@ -517,7 +517,7 @@ asn1c_lang_C_type_SET_def(arg_t *arg) { ...@@ -517,7 +517,7 @@ asn1c_lang_C_type_SET_def(arg_t *arg) {
OUT("};\n"); OUT("};\n");
OUT("static asn_SET_specifics_t asn_SPC_%s_%d_specs = {\n", OUT("static asn_SET_specifics_t asn_SPC_%s_%d_specs = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
INDENTED( INDENTED(
OUT("sizeof(struct "); OUT("sizeof(struct ");
out_name_chain(arg, 1); out_name_chain(arg, 1);
...@@ -528,7 +528,7 @@ asn1c_lang_C_type_SET_def(arg_t *arg) { ...@@ -528,7 +528,7 @@ asn1c_lang_C_type_SET_def(arg_t *arg) {
OUT("offsetof(struct "); OUT("offsetof(struct ");
out_name_chain(arg, 1); out_name_chain(arg, 1);
OUT(", _presence_map),\n"); OUT(", _presence_map),\n");
p = MKID_nc(expr->Identifier); p = MKID(expr->Identifier);
OUT("asn_MAP_%s_%d_tag2el,\n", p, expr->_type_unique_index); OUT("asn_MAP_%s_%d_tag2el,\n", p, expr->_type_unique_index);
OUT("%d,\t/* Count of tags in the map */\n", tag2el_count); OUT("%d,\t/* Count of tags in the map */\n", tag2el_count);
if(tag2el_cxer) if(tag2el_cxer)
...@@ -569,7 +569,7 @@ asn1c_lang_C_type_SEx_OF(arg_t *arg) { ...@@ -569,7 +569,7 @@ asn1c_lang_C_type_SEx_OF(arg_t *arg) {
out_name_chain(arg, 1); out_name_chain(arg, 1);
OUT(" {\n"); OUT(" {\n");
} else { } else {
OUT("typedef struct %s {\n", MKID(expr->Identifier)); OUT("typedef struct %s {\n", MKID_safe(expr->Identifier));
} }
INDENT(+1); INDENT(+1);
...@@ -611,7 +611,7 @@ asn1c_lang_C_type_SEx_OF(arg_t *arg) { ...@@ -611,7 +611,7 @@ asn1c_lang_C_type_SEx_OF(arg_t *arg) {
PCTX_DEF; PCTX_DEF;
OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"", OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"",
expr->_anonymous_type ? "" : MKID(expr->Identifier), expr->_anonymous_type ? "" : MKID_safe(expr->Identifier),
arg->embed ? "" : "_t"); arg->embed ? "" : "_t");
/* /*
...@@ -666,7 +666,7 @@ asn1c_lang_C_type_SEx_OF_def(arg_t *arg, int seq_of) { ...@@ -666,7 +666,7 @@ asn1c_lang_C_type_SEx_OF_def(arg_t *arg, int seq_of) {
tv_mode = emit_tags_vectors(arg, expr, &tags_count, &all_tags_count); tv_mode = emit_tags_vectors(arg, expr, &tags_count, &all_tags_count);
OUT("static asn_SET_OF_specifics_t asn_SPC_%s_%d_specs = {\n", OUT("static asn_SET_OF_specifics_t asn_SPC_%s_%d_specs = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
INDENTED( INDENTED(
OUT("sizeof(struct "); OUT("sizeof(struct ");
out_name_chain(arg, 1); out_name_chain(arg, 1);
...@@ -716,7 +716,7 @@ asn1c_lang_C_type_CHOICE(arg_t *arg) { ...@@ -716,7 +716,7 @@ asn1c_lang_C_type_CHOICE(arg_t *arg) {
} }
out_name_chain(arg, 0); out_name_chain(arg, 0);
OUT("_PR_"); OUT("_PR_");
id = MKID_nc(v->Identifier); id = MKID(v->Identifier);
OUT("%s,\n", id, id); OUT("%s,\n", id, id);
} }
); );
...@@ -727,8 +727,7 @@ asn1c_lang_C_type_CHOICE(arg_t *arg) { ...@@ -727,8 +727,7 @@ asn1c_lang_C_type_CHOICE(arg_t *arg) {
if(arg->embed) { if(arg->embed) {
OUT("struct "); out_name_chain(arg, 1); OUT(" {\n"); OUT("struct "); out_name_chain(arg, 1); OUT(" {\n");
} else { } else {
id = MKID(expr->Identifier); OUT("typedef struct %s {\n", MKID_safe(expr->Identifier));
OUT("typedef struct %s {\n", id);
} }
INDENTED( INDENTED(
...@@ -746,7 +745,10 @@ asn1c_lang_C_type_CHOICE(arg_t *arg) { ...@@ -746,7 +745,10 @@ asn1c_lang_C_type_CHOICE(arg_t *arg) {
PCTX_DEF; PCTX_DEF;
OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"", OUT("} %s%s%s", (expr->marker.flags & EM_INDIRECT)?"*":"",
expr->_anonymous_type ? "" : MKID(expr->Identifier), expr->_anonymous_type ? "" :
arg->embed
? MKID_safe(expr->Identifier)
: MKID(expr->Identifier),
arg->embed ? "" : "_t"); arg->embed ? "" : "_t");
return asn1c_lang_C_type_CHOICE_def(arg); return asn1c_lang_C_type_CHOICE_def(arg);
...@@ -817,7 +819,7 @@ asn1c_lang_C_type_CHOICE_def(arg_t *arg) { ...@@ -817,7 +819,7 @@ asn1c_lang_C_type_CHOICE_def(arg_t *arg) {
emit_tag2member_map(arg, tag2el, tag2el_count, 0); emit_tag2member_map(arg, tag2el, tag2el_count, 0);
OUT("static asn_CHOICE_specifics_t asn_SPC_%s_%d_specs = {\n", OUT("static asn_CHOICE_specifics_t asn_SPC_%s_%d_specs = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
INDENTED( INDENTED(
OUT("sizeof(struct "); OUT("sizeof(struct ");
out_name_chain(arg, 1); out_name_chain(arg, 1);
...@@ -832,7 +834,7 @@ asn1c_lang_C_type_CHOICE_def(arg_t *arg) { ...@@ -832,7 +834,7 @@ asn1c_lang_C_type_CHOICE_def(arg_t *arg) {
out_name_chain(arg, 1); out_name_chain(arg, 1);
OUT(" *)0)->present),\n"); OUT(" *)0)->present),\n");
OUT("asn_MAP_%s_%d_tag2el,\n", OUT("asn_MAP_%s_%d_tag2el,\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
OUT("%d,\t/* Count of tags in the map */\n", tag2el_count); OUT("%d,\t/* Count of tags in the map */\n", tag2el_count);
OUT("%d\t/* Whether extensible */\n", OUT("%d\t/* Whether extensible */\n",
check_if_extensible(expr)); check_if_extensible(expr));
...@@ -928,7 +930,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) { ...@@ -928,7 +930,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
OUT("%s", asn1c_type_name(arg, arg->expr, tnfmt)); OUT("%s", asn1c_type_name(arg, arg->expr, tnfmt));
if(!expr->_anonymous_type) { if(!expr->_anonymous_type) {
OUT("%s", (expr->marker.flags&EM_INDIRECT)?"\t*":"\t "); OUT("%s", (expr->marker.flags&EM_INDIRECT)?"\t*":"\t ");
OUT("%s", MKID(expr->Identifier)); OUT("%s", MKID_safe(expr->Identifier));
if((expr->marker.flags & EM_DEFAULT) == EM_DEFAULT) if((expr->marker.flags & EM_DEFAULT) == EM_DEFAULT)
OUT("\t/* DEFAULT %s */", OUT("\t/* DEFAULT %s */",
asn1f_printable_value( asn1f_printable_value(
...@@ -946,7 +948,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) { ...@@ -946,7 +948,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
asn1c_type_name(arg, arg->expr, TNF_CTYPE)); asn1c_type_name(arg, arg->expr, TNF_CTYPE));
OUT("%s%s_t", OUT("%s%s_t",
(expr->marker.flags & EM_INDIRECT)?"*":" ", (expr->marker.flags & EM_INDIRECT)?"*":" ",
MKID_nc(expr->Identifier)); MKID(expr->Identifier));
} }
if((expr->expr_type == ASN_BASIC_ENUMERATED) if((expr->expr_type == ASN_BASIC_ENUMERATED)
...@@ -975,7 +977,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) { ...@@ -975,7 +977,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
type_name = asn1c_type_name(arg, expr, TNF_SAFE); type_name = asn1c_type_name(arg, expr, TNF_SAFE);
OUT("/* This type is equivalent to %s */\n", type_name); OUT("/* This type is equivalent to %s */\n", type_name);
if(HIDE_INNER_DEFS) OUT("/* "); if(HIDE_INNER_DEFS) OUT("/* ");
OUT("#define\tasn_DEF_%s\t", MKID_nc(expr->Identifier)); OUT("#define\tasn_DEF_%s\t", MKID(expr->Identifier));
type_name = asn1c_type_name(arg, expr, TNF_SAFE); type_name = asn1c_type_name(arg, expr, TNF_SAFE);
OUT("asn_DEF_%s", type_name); OUT("asn_DEF_%s", type_name);
if(HIDE_INNER_DEFS) if(HIDE_INNER_DEFS)
...@@ -1042,7 +1044,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) { ...@@ -1042,7 +1044,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
OUT(" */\n"); OUT(" */\n");
OUT("static void\n"); OUT("static void\n");
OUT("%s_%d_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {\n", OUT("%s_%d_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index); MKID(expr->Identifier), expr->_type_unique_index);
INDENT(+1); INDENT(+1);
{ {
asn1p_expr_t *terminal = asn1f_find_terminal_type_ex(arg->asn, expr); asn1p_expr_t *terminal = asn1f_find_terminal_type_ex(arg->asn, expr);
...@@ -1172,7 +1174,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) { ...@@ -1172,7 +1174,7 @@ asn1c_lang_C_type_SIMPLE_TYPE(arg_t *arg) {
REDIR(OT_FUNC_DECLS); REDIR(OT_FUNC_DECLS);
p = MKID_nc(expr->Identifier); p = MKID(expr->Identifier);
if(HIDE_INNER_DEFS) { if(HIDE_INNER_DEFS) {
OUT("/* extern asn_TYPE_descriptor_t asn_DEF_%s_%d;" OUT("/* extern asn_TYPE_descriptor_t asn_DEF_%s_%d;"
"\t// (Use -fall-defs-global to expose) */\n", "\t// (Use -fall-defs-global to expose) */\n",
...@@ -1425,7 +1427,7 @@ emit_tag2member_map(arg_t *arg, tag2el_t *tag2el, int tag2el_count, const char * ...@@ -1425,7 +1427,7 @@ emit_tag2member_map(arg_t *arg, tag2el_t *tag2el, int tag2el_count, const char *
asn1p_expr_t *expr = arg->expr; asn1p_expr_t *expr = arg->expr;
OUT("static asn_TYPE_tag2member_t asn_MAP_%s_%d_tag2el%s[] = {\n", OUT("static asn_TYPE_tag2member_t asn_MAP_%s_%d_tag2el%s[] = {\n",
MKID_nc(expr->Identifier), expr->_type_unique_index, MKID(expr->Identifier), expr->_type_unique_index,
opt_modifier?opt_modifier:""); opt_modifier?opt_modifier:"");
if(tag2el_count) { if(tag2el_count) {
int i; int i;
...@@ -1493,7 +1495,7 @@ emit_tags_vectors(arg_t *arg, asn1p_expr_t *expr, int *tags_count_r, int *all_ta ...@@ -1493,7 +1495,7 @@ emit_tags_vectors(arg_t *arg, asn1p_expr_t *expr, int *tags_count_r, int *all_ta
#define EMIT_TAGS_TABLE(name, tags, tags_count) do { \ #define EMIT_TAGS_TABLE(name, tags, tags_count) do { \
OUT("static ber_tlv_tag_t asn_DEF_%s_%d%s_tags[] = {\n",\ OUT("static ber_tlv_tag_t asn_DEF_%s_%d%s_tags[] = {\n",\
MKID_nc(expr->Identifier), \ MKID(expr->Identifier), \
expr->_type_unique_index, name); \ expr->_type_unique_index, name); \
INDENT(+1); \ INDENT(+1); \
/* Print the array of collected tags */ \ /* Print the array of collected tags */ \
...@@ -1634,7 +1636,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) { ...@@ -1634,7 +1636,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
OUT(", "); OUT(", ");
if(arg->expr->expr_type == ASN_CONSTR_CHOICE if(arg->expr->expr_type == ASN_CONSTR_CHOICE
&& (!UNNAMED_UNIONS)) OUT("choice."); && (!UNNAMED_UNIONS)) OUT("choice.");
OUT("%s),\n", MKID(expr->Identifier)); OUT("%s),\n", MKID_safe(expr->Identifier));
} }
INDENT(+1); INDENT(+1);
if(C99_MODE) OUT(".tag = "); if(C99_MODE) OUT(".tag = ");
...@@ -1667,7 +1669,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) { ...@@ -1667,7 +1669,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
if(C99_MODE) OUT(".type = "); if(C99_MODE) OUT(".type = ");
OUT("(void *)&asn_DEF_"); OUT("(void *)&asn_DEF_");
if(complex_contents) { if(complex_contents) {
OUT("%s", MKID_nc(expr->Identifier)); OUT("%s", MKID(expr->Identifier));
if(!(arg->flags & A1C_ALL_DEFS_GLOBAL)) if(!(arg->flags & A1C_ALL_DEFS_GLOBAL))
OUT("_%d", expr->_type_unique_index); OUT("_%d", expr->_type_unique_index);
} else { } else {
...@@ -1679,7 +1681,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) { ...@@ -1679,7 +1681,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
if(arg->flags & A1C_NO_CONSTRAINTS) { if(arg->flags & A1C_NO_CONSTRAINTS) {
OUT("0,\t/* No check because of -fno-constraints */\n"); OUT("0,\t/* No check because of -fno-constraints */\n");
} else { } else {
char *id = MKID_nc(expr->Identifier); char *id = MKID(expr->Identifier);
if(expr->_anonymous_type if(expr->_anonymous_type
&& !strcmp(expr->Identifier, "Member")) && !strcmp(expr->Identifier, "Member"))
id = asn1c_type_name(arg, expr, TNF_SAFE); id = asn1c_type_name(arg, expr, TNF_SAFE);
...@@ -1710,7 +1712,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) { ...@@ -1710,7 +1712,7 @@ emit_member_table(arg_t *arg, asn1p_expr_t *expr) {
if(expr->_anonymous_type && !strcmp(expr->Identifier, "Member")) if(expr->_anonymous_type && !strcmp(expr->Identifier, "Member"))
p = asn1c_type_name(arg, expr, TNF_SAFE); p = asn1c_type_name(arg, expr, TNF_SAFE);
else else
p = MKID_nc(expr->Identifier); p = MKID(expr->Identifier);
OUT("static int\n"); OUT("static int\n");
OUT("memb_%s_%d_constraint(asn_TYPE_descriptor_t *td, const void *sptr,\n", p, arg->expr->_type_unique_index); OUT("memb_%s_%d_constraint(asn_TYPE_descriptor_t *td, const void *sptr,\n", p, arg->expr->_type_unique_index);
INDENT(+1); INDENT(+1);
...@@ -1740,7 +1742,7 @@ emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode, int tags_ ...@@ -1740,7 +1742,7 @@ emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode, int tags_
if(HIDE_INNER_DEFS) if(HIDE_INNER_DEFS)
OUT("static /* Use -fall-defs-global to expose */\n"); OUT("static /* Use -fall-defs-global to expose */\n");
OUT("asn_TYPE_descriptor_t asn_DEF_%s", MKID_nc(expr->Identifier)); OUT("asn_TYPE_descriptor_t asn_DEF_%s", MKID(expr->Identifier));
if(HIDE_INNER_DEFS) OUT("_%d", expr->_type_unique_index); if(HIDE_INNER_DEFS) OUT("_%d", expr->_type_unique_index);
OUT(" = {\n"); OUT(" = {\n");
p = MKID(expr->Identifier); p = MKID(expr->Identifier);
...@@ -1774,7 +1776,7 @@ emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode, int tags_ ...@@ -1774,7 +1776,7 @@ emit_type_DEF(arg_t *arg, asn1p_expr_t *expr, enum tvm_compat tv_mode, int tags_
OUT("0,\t/* Use generic outmost tag fetcher */\n"); OUT("0,\t/* Use generic outmost tag fetcher */\n");
} }
p = MKID_nc(expr->Identifier); p = MKID(expr->Identifier);
if(tags_count) { if(tags_count) {
OUT("asn_DEF_%s_%d_tags,\n", OUT("asn_DEF_%s_%d_tags,\n",
p, expr->_type_unique_index); p, expr->_type_unique_index);
...@@ -1915,9 +1917,9 @@ out_name_chain(arg_t *arg, int check_reserved_keywords) { ...@@ -1915,9 +1917,9 @@ out_name_chain(arg_t *arg, int check_reserved_keywords) {
} }
if(check_reserved_keywords) if(check_reserved_keywords)
id = MKID(expr->Identifier); id = MKID_safe(expr->Identifier);
else else
id = MKID_nc(expr->Identifier); id = MKID(expr->Identifier);
OUT("%s", id); OUT("%s", id);
return 0; return 0;
......
...@@ -101,7 +101,7 @@ int asn1c_compiled_output(arg_t *arg, const char *fmt, ...); ...@@ -101,7 +101,7 @@ int asn1c_compiled_output(arg_t *arg, const char *fmt, ...);
REDIR(OT_FUNC_DECLS); \ REDIR(OT_FUNC_DECLS); \
OUT_NOINDENT("extern asn_TYPE_descriptor_t " \ OUT_NOINDENT("extern asn_TYPE_descriptor_t " \
"asn_DEF_%s;\n", \ "asn_DEF_%s;\n", \
MKID_nc(expr->Identifier)); \ MKID(expr->Identifier)); \
REDIR(saved_target); \ REDIR(saved_target); \
} while(0) } while(0)
......
...@@ -278,7 +278,7 @@ extern asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName; ...@@ -278,7 +278,7 @@ extern asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName;
/*** <<< CTABLES [RelativeDistinguishedName] >>> ***/ /*** <<< CTABLES [RelativeDistinguishedName] >>> ***/
static int permitted_alphabet_table_1[256] = { static int permitted_alphabet_table_0[256] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, /* ,-. */ 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0, /* ,-. */
...@@ -289,8 +289,8 @@ static int permitted_alphabet_table_1[256] = { ...@@ -289,8 +289,8 @@ static int permitted_alphabet_table_1[256] = {
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */ 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */
}; };
static int check_permitted_alphabet_1(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
int *table = permitted_alphabet_table_1; int *table = permitted_alphabet_table_0;
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -319,7 +319,7 @@ memb_IA5String_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -319,7 +319,7 @@ memb_IA5String_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_1(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
......
...@@ -9,12 +9,112 @@ typedef OCTET_STRING_t PrimitiveType_t; ...@@ -9,12 +9,112 @@ typedef OCTET_STRING_t PrimitiveType_t;
/*** <<< FUNC-DECLS [PrimitiveType] >>> ***/ /*** <<< FUNC-DECLS [PrimitiveType] >>> ***/
/* This type is equivalent to OCTET_STRING */ extern asn_TYPE_descriptor_t asn_DEF_PrimitiveType;
#define asn_DEF_PrimitiveType asn_DEF_OCTET_STRING asn_struct_free_f PrimitiveType_free;
asn_struct_print_f PrimitiveType_print;
asn_constr_check_f PrimitiveType_constraint;
ber_type_decoder_f PrimitiveType_decode_ber;
der_type_encoder_f PrimitiveType_encode_der;
xer_type_decoder_f PrimitiveType_decode_xer;
xer_type_encoder_f PrimitiveType_encode_xer;
/*** <<< CODE [PrimitiveType] >>> ***/ /*** <<< CODE [PrimitiveType] >>> ***/
/* This type is equivalent to OCTET_STRING */ int
PrimitiveType_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_OCTET_STRING.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using OCTET_STRING,
* so here we adjust the DEF accordingly.
*/
static void
PrimitiveType_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_OCTET_STRING.free_struct;
td->print_struct = asn_DEF_OCTET_STRING.print_struct;
td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
td->elements = asn_DEF_OCTET_STRING.elements;
td->elements_count = asn_DEF_OCTET_STRING.elements_count;
td->specifics = asn_DEF_OCTET_STRING.specifics;
}
void
PrimitiveType_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
PrimitiveType_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
PrimitiveType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
PrimitiveType_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
PrimitiveType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
PrimitiveType_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
PrimitiveType_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) {
PrimitiveType_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
PrimitiveType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
PrimitiveType_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
PrimitiveType_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) {
PrimitiveType_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [PrimitiveType] >>> ***/
static ber_tlv_tag_t asn_DEF_PrimitiveType_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
};
asn_TYPE_descriptor_t asn_DEF_PrimitiveType = {
"PrimitiveType",
"PrimitiveType",
PrimitiveType_free,
PrimitiveType_print,
PrimitiveType_constraint,
PrimitiveType_decode_ber,
PrimitiveType_encode_der,
PrimitiveType_decode_xer,
PrimitiveType_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_PrimitiveType_0_tags,
sizeof(asn_DEF_PrimitiveType_0_tags)
/sizeof(asn_DEF_PrimitiveType_0_tags[0]), /* 1 */
asn_DEF_PrimitiveType_0_tags, /* Same as above */
sizeof(asn_DEF_PrimitiveType_0_tags)
/sizeof(asn_DEF_PrimitiveType_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [ConstructedType] >>> ***/ /*** <<< INCLUDES [ConstructedType] >>> ***/
......
...@@ -9,12 +9,112 @@ typedef INTEGER_t Int1_t; ...@@ -9,12 +9,112 @@ typedef INTEGER_t Int1_t;
/*** <<< FUNC-DECLS [Int1] >>> ***/ /*** <<< FUNC-DECLS [Int1] >>> ***/
/* This type is equivalent to INTEGER */ extern asn_TYPE_descriptor_t asn_DEF_Int1;
#define asn_DEF_Int1 asn_DEF_INTEGER asn_struct_free_f Int1_free;
asn_struct_print_f Int1_print;
asn_constr_check_f Int1_constraint;
ber_type_decoder_f Int1_decode_ber;
der_type_encoder_f Int1_encode_der;
xer_type_decoder_f Int1_decode_xer;
xer_type_encoder_f Int1_encode_xer;
/*** <<< CODE [Int1] >>> ***/ /*** <<< CODE [Int1] >>> ***/
/* This type is equivalent to INTEGER */ int
Int1_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_INTEGER.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using INTEGER,
* so here we adjust the DEF accordingly.
*/
static void
Int1_0_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->elements = asn_DEF_INTEGER.elements;
td->elements_count = asn_DEF_INTEGER.elements_count;
td->specifics = asn_DEF_INTEGER.specifics;
}
void
Int1_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
Int1_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
Int1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Int1_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
Int1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
Int1_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
Int1_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) {
Int1_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
Int1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
Int1_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
Int1_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) {
Int1_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [Int1] >>> ***/
static ber_tlv_tag_t asn_DEF_Int1_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_Int1 = {
"Int1",
"Int1",
Int1_free,
Int1_print,
Int1_constraint,
Int1_decode_ber,
Int1_encode_der,
Int1_decode_xer,
Int1_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_Int1_0_tags,
sizeof(asn_DEF_Int1_0_tags)
/sizeof(asn_DEF_Int1_0_tags[0]), /* 1 */
asn_DEF_Int1_0_tags, /* Same as above */
sizeof(asn_DEF_Int1_0_tags)
/sizeof(asn_DEF_Int1_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [Int2] >>> ***/ /*** <<< INCLUDES [Int2] >>> ***/
...@@ -728,12 +828,112 @@ typedef IA5String_t Str1_t; ...@@ -728,12 +828,112 @@ typedef IA5String_t Str1_t;
/*** <<< FUNC-DECLS [Str1] >>> ***/ /*** <<< FUNC-DECLS [Str1] >>> ***/
/* This type is equivalent to IA5String */ extern asn_TYPE_descriptor_t asn_DEF_Str1;
#define asn_DEF_Str1 asn_DEF_IA5String asn_struct_free_f Str1_free;
asn_struct_print_f Str1_print;
asn_constr_check_f Str1_constraint;
ber_type_decoder_f Str1_decode_ber;
der_type_encoder_f Str1_encode_der;
xer_type_decoder_f Str1_decode_xer;
xer_type_encoder_f Str1_encode_xer;
/*** <<< CODE [Str1] >>> ***/ /*** <<< CODE [Str1] >>> ***/
/* This type is equivalent to IA5String */ int
Str1_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_IA5String.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using IA5String,
* so here we adjust the DEF accordingly.
*/
static void
Str1_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_IA5String.free_struct;
td->print_struct = asn_DEF_IA5String.print_struct;
td->ber_decoder = asn_DEF_IA5String.ber_decoder;
td->der_encoder = asn_DEF_IA5String.der_encoder;
td->xer_decoder = asn_DEF_IA5String.xer_decoder;
td->xer_encoder = asn_DEF_IA5String.xer_encoder;
td->elements = asn_DEF_IA5String.elements;
td->elements_count = asn_DEF_IA5String.elements_count;
td->specifics = asn_DEF_IA5String.specifics;
}
void
Str1_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
Str1_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
Str1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Str1_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
Str1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
Str1_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
Str1_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) {
Str1_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
Str1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
Str1_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
Str1_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) {
Str1_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [Str1] >>> ***/
static ber_tlv_tag_t asn_DEF_Str1_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
asn_TYPE_descriptor_t asn_DEF_Str1 = {
"Str1",
"Str1",
Str1_free,
Str1_print,
Str1_constraint,
Str1_decode_ber,
Str1_encode_der,
Str1_decode_xer,
Str1_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_Str1_0_tags,
sizeof(asn_DEF_Str1_0_tags)
/sizeof(asn_DEF_Str1_0_tags[0]), /* 1 */
asn_DEF_Str1_0_tags, /* Same as above */
sizeof(asn_DEF_Str1_0_tags)
/sizeof(asn_DEF_Str1_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [Str2] >>> ***/ /*** <<< INCLUDES [Str2] >>> ***/
...@@ -757,7 +957,7 @@ xer_type_encoder_f Str2_encode_xer; ...@@ -757,7 +957,7 @@ xer_type_encoder_f Str2_encode_xer;
/*** <<< CTABLES [Str2] >>> ***/ /*** <<< CTABLES [Str2] >>> ***/
static int check_permitted_alphabet_1(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -789,7 +989,7 @@ Str2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -789,7 +989,7 @@ Str2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
size = st->size; size = st->size;
if(((size <= 20) || (size >= 25 && size <= 30)) if(((size <= 20) || (size >= 25 && size <= 30))
&& !check_permitted_alphabet_1(sptr)) { && !check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -910,7 +1110,7 @@ xer_type_encoder_f Str3_encode_xer; ...@@ -910,7 +1110,7 @@ xer_type_encoder_f Str3_encode_xer;
/*** <<< CTABLES [Str3] >>> ***/ /*** <<< CTABLES [Str3] >>> ***/
static int permitted_alphabet_table_2[256] = { static int permitted_alphabet_table_0[256] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
...@@ -920,8 +1120,8 @@ static int permitted_alphabet_table_2[256] = { ...@@ -920,8 +1120,8 @@ static int permitted_alphabet_table_2[256] = {
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0, /* def */ 0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0, /* def */
}; };
static int check_permitted_alphabet_2(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
int *table = permitted_alphabet_table_2; int *table = permitted_alphabet_table_0;
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -953,7 +1153,7 @@ Str3_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -953,7 +1153,7 @@ Str3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
size = st->size; size = st->size;
if(((size >= 10 && size <= 20) || (size >= 25 && size <= 27)) if(((size >= 10 && size <= 20) || (size >= 25 && size <= 27))
&& !check_permitted_alphabet_2(sptr)) { && !check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1074,7 +1274,7 @@ xer_type_encoder_f Str4_encode_xer; ...@@ -1074,7 +1274,7 @@ xer_type_encoder_f Str4_encode_xer;
/*** <<< CTABLES [Str4] >>> ***/ /*** <<< CTABLES [Str4] >>> ***/
static int check_permitted_alphabet_3(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -1103,7 +1303,7 @@ Str4_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -1103,7 +1303,7 @@ Str4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_3(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1224,7 +1424,7 @@ xer_type_encoder_f PER_Visible_encode_xer; ...@@ -1224,7 +1424,7 @@ xer_type_encoder_f PER_Visible_encode_xer;
/*** <<< CTABLES [PER-Visible] >>> ***/ /*** <<< CTABLES [PER-Visible] >>> ***/
static int check_permitted_alphabet_4(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -1253,7 +1453,7 @@ PER_Visible_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -1253,7 +1453,7 @@ PER_Visible_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_4(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1374,7 +1574,7 @@ xer_type_encoder_f PER_Visible_2_encode_xer; ...@@ -1374,7 +1574,7 @@ xer_type_encoder_f PER_Visible_2_encode_xer;
/*** <<< CTABLES [PER-Visible-2] >>> ***/ /*** <<< CTABLES [PER-Visible-2] >>> ***/
static int check_permitted_alphabet_5(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -1403,7 +1603,7 @@ PER_Visible_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -1403,7 +1603,7 @@ PER_Visible_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_5(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1524,7 +1724,7 @@ xer_type_encoder_f Not_PER_Visible_1_encode_xer; ...@@ -1524,7 +1724,7 @@ xer_type_encoder_f Not_PER_Visible_1_encode_xer;
/*** <<< CTABLES [Not-PER-Visible-1] >>> ***/ /*** <<< CTABLES [Not-PER-Visible-1] >>> ***/
static int check_permitted_alphabet_6(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -1553,7 +1753,7 @@ Not_PER_Visible_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -1553,7 +1753,7 @@ Not_PER_Visible_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_6(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1674,7 +1874,7 @@ xer_type_encoder_f Not_PER_Visible_2_encode_xer; ...@@ -1674,7 +1874,7 @@ xer_type_encoder_f Not_PER_Visible_2_encode_xer;
/*** <<< CTABLES [Not-PER-Visible-2] >>> ***/ /*** <<< CTABLES [Not-PER-Visible-2] >>> ***/
static int check_permitted_alphabet_7(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -1703,7 +1903,7 @@ Not_PER_Visible_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -1703,7 +1903,7 @@ Not_PER_Visible_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_7(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1824,7 +2024,7 @@ xer_type_encoder_f Not_PER_Visible_3_encode_xer; ...@@ -1824,7 +2024,7 @@ xer_type_encoder_f Not_PER_Visible_3_encode_xer;
/*** <<< CTABLES [Not-PER-Visible-3] >>> ***/ /*** <<< CTABLES [Not-PER-Visible-3] >>> ***/
static int check_permitted_alphabet_8(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -1853,7 +2053,7 @@ Not_PER_Visible_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -1853,7 +2053,7 @@ Not_PER_Visible_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_8(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -1974,7 +2174,7 @@ xer_type_encoder_f SIZE_but_not_FROM_encode_xer; ...@@ -1974,7 +2174,7 @@ xer_type_encoder_f SIZE_but_not_FROM_encode_xer;
/*** <<< CTABLES [SIZE-but-not-FROM] >>> ***/ /*** <<< CTABLES [SIZE-but-not-FROM] >>> ***/
static int check_permitted_alphabet_9(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -2006,7 +2206,7 @@ SIZE_but_not_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -2006,7 +2206,7 @@ SIZE_but_not_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
size = st->size; size = st->size;
if((size >= 1 && size <= 4) if((size >= 1 && size <= 4)
&& !check_permitted_alphabet_9(sptr)) { && !check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -2127,7 +2327,7 @@ xer_type_encoder_f SIZE_and_FROM_encode_xer; ...@@ -2127,7 +2327,7 @@ xer_type_encoder_f SIZE_and_FROM_encode_xer;
/*** <<< CTABLES [SIZE-and-FROM] >>> ***/ /*** <<< CTABLES [SIZE-and-FROM] >>> ***/
static int check_permitted_alphabet_10(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -2159,7 +2359,7 @@ SIZE_and_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -2159,7 +2359,7 @@ SIZE_and_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
size = st->size; size = st->size;
if((size >= 1 && size <= 4) if((size >= 1 && size <= 4)
&& !check_permitted_alphabet_10(sptr)) { && !check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -2280,7 +2480,7 @@ xer_type_encoder_f Neither_SIZE_nor_FROM_encode_xer; ...@@ -2280,7 +2480,7 @@ xer_type_encoder_f Neither_SIZE_nor_FROM_encode_xer;
/*** <<< CTABLES [Neither-SIZE-nor-FROM] >>> ***/ /*** <<< CTABLES [Neither-SIZE-nor-FROM] >>> ***/
static int check_permitted_alphabet_11(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
/* The underlying type is IA5String */ /* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr; const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -2309,7 +2509,7 @@ Neither_SIZE_nor_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -2309,7 +2509,7 @@ Neither_SIZE_nor_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_11(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -2430,7 +2630,7 @@ xer_type_encoder_f Utf8_4_encode_xer; ...@@ -2430,7 +2630,7 @@ xer_type_encoder_f Utf8_4_encode_xer;
/*** <<< CTABLES [Utf8-4] >>> ***/ /*** <<< CTABLES [Utf8-4] >>> ***/
static int check_permitted_alphabet_12(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
if(UTF8String_length((const UTF8String_t *)sptr) < 0) if(UTF8String_length((const UTF8String_t *)sptr) < 0)
return -1; /* Alphabet (sic!) test failed. */ return -1; /* Alphabet (sic!) test failed. */
...@@ -2453,7 +2653,7 @@ Utf8_4_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -2453,7 +2653,7 @@ Utf8_4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if(!check_permitted_alphabet_12(sptr)) { if(!check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -2574,7 +2774,7 @@ xer_type_encoder_f Utf8_3_encode_xer; ...@@ -2574,7 +2774,7 @@ xer_type_encoder_f Utf8_3_encode_xer;
/*** <<< CTABLES [Utf8-3] >>> ***/ /*** <<< CTABLES [Utf8-3] >>> ***/
static int permitted_alphabet_table_13[128] = { static int permitted_alphabet_table_0[128] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
...@@ -2585,8 +2785,8 @@ static int permitted_alphabet_table_13[128] = { ...@@ -2585,8 +2785,8 @@ static int permitted_alphabet_table_13[128] = {
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */ 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */
}; };
static int check_permitted_alphabet_13(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
int *table = permitted_alphabet_table_13; int *table = permitted_alphabet_table_0;
/* The underlying type is UTF8String */ /* The underlying type is UTF8String */
const UTF8String_t *st = (const UTF8String_t *)sptr; const UTF8String_t *st = (const UTF8String_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -2625,7 +2825,7 @@ Utf8_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -2625,7 +2825,7 @@ Utf8_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
} }
if((size >= 1 && size <= 2) if((size >= 1 && size <= 2)
&& !check_permitted_alphabet_13(sptr)) { && !check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
...@@ -2877,12 +3077,112 @@ typedef UTF8String_t Utf8_1_t; ...@@ -2877,12 +3077,112 @@ typedef UTF8String_t Utf8_1_t;
/*** <<< FUNC-DECLS [Utf8-1] >>> ***/ /*** <<< FUNC-DECLS [Utf8-1] >>> ***/
/* This type is equivalent to UTF8String */ extern asn_TYPE_descriptor_t asn_DEF_Utf8_1;
#define asn_DEF_Utf8_1 asn_DEF_UTF8String asn_struct_free_f Utf8_1_free;
asn_struct_print_f Utf8_1_print;
asn_constr_check_f Utf8_1_constraint;
ber_type_decoder_f Utf8_1_decode_ber;
der_type_encoder_f Utf8_1_encode_der;
xer_type_decoder_f Utf8_1_decode_xer;
xer_type_encoder_f Utf8_1_encode_xer;
/*** <<< CODE [Utf8-1] >>> ***/ /*** <<< CODE [Utf8-1] >>> ***/
/* This type is equivalent to UTF8String */ int
Utf8_1_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_UTF8String.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using UTF8String,
* so here we adjust the DEF accordingly.
*/
static void
Utf8_1_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_UTF8String.free_struct;
td->print_struct = asn_DEF_UTF8String.print_struct;
td->ber_decoder = asn_DEF_UTF8String.ber_decoder;
td->der_encoder = asn_DEF_UTF8String.der_encoder;
td->xer_decoder = asn_DEF_UTF8String.xer_decoder;
td->xer_encoder = asn_DEF_UTF8String.xer_encoder;
td->elements = asn_DEF_UTF8String.elements;
td->elements_count = asn_DEF_UTF8String.elements_count;
td->specifics = asn_DEF_UTF8String.specifics;
}
void
Utf8_1_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
Utf8_1_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
Utf8_1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Utf8_1_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
Utf8_1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
Utf8_1_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
Utf8_1_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) {
Utf8_1_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
Utf8_1_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
Utf8_1_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
Utf8_1_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) {
Utf8_1_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [Utf8-1] >>> ***/
static ber_tlv_tag_t asn_DEF_Utf8_1_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (12 << 2))
};
asn_TYPE_descriptor_t asn_DEF_Utf8_1 = {
"Utf8-1",
"Utf8-1",
Utf8_1_free,
Utf8_1_print,
Utf8_1_constraint,
Utf8_1_decode_ber,
Utf8_1_encode_der,
Utf8_1_decode_xer,
Utf8_1_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_Utf8_1_0_tags,
sizeof(asn_DEF_Utf8_1_0_tags)
/sizeof(asn_DEF_Utf8_1_0_tags[0]), /* 1 */
asn_DEF_Utf8_1_0_tags, /* Same as above */
sizeof(asn_DEF_Utf8_1_0_tags)
/sizeof(asn_DEF_Utf8_1_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [VisibleIdentifier] >>> ***/ /*** <<< INCLUDES [VisibleIdentifier] >>> ***/
...@@ -2895,12 +3195,159 @@ typedef Identifier_t VisibleIdentifier_t; ...@@ -2895,12 +3195,159 @@ typedef Identifier_t VisibleIdentifier_t;
/*** <<< FUNC-DECLS [VisibleIdentifier] >>> ***/ /*** <<< FUNC-DECLS [VisibleIdentifier] >>> ***/
/* This type is equivalent to Identifier */ extern asn_TYPE_descriptor_t asn_DEF_VisibleIdentifier;
#define asn_DEF_VisibleIdentifier asn_DEF_Identifier asn_struct_free_f VisibleIdentifier_free;
asn_struct_print_f VisibleIdentifier_print;
asn_constr_check_f VisibleIdentifier_constraint;
ber_type_decoder_f VisibleIdentifier_decode_ber;
der_type_encoder_f VisibleIdentifier_encode_der;
xer_type_decoder_f VisibleIdentifier_decode_xer;
xer_type_encoder_f VisibleIdentifier_encode_xer;
/*** <<< CTABLES [VisibleIdentifier] >>> ***/
static int permitted_alphabet_table_0[256] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, /* $ */
1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789 */
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ABCDEFGHIJKLMNO */
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ _ */
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* abcdefghijklmno */
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */
};
static int check_permitted_alphabet_0(const void *sptr) {
int *table = permitted_alphabet_table_0;
/* The underlying type is VisibleString */
const VisibleString_t *st = (const VisibleString_t *)sptr;
const uint8_t *ch = st->buf;
const uint8_t *end = ch + st->size;
for(; ch < end; ch++) {
uint8_t cv = *ch;
if(!table[cv]) return -1;
}
return 0;
}
/*** <<< CODE [VisibleIdentifier] >>> ***/ /*** <<< CODE [VisibleIdentifier] >>> ***/
/* This type is equivalent to Identifier */ int
VisibleIdentifier_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_consume_bytes_f *app_errlog, void *app_key) {
const Identifier_t *st = (const Identifier_t *)sptr;
size_t size;
if(!sptr) {
_ASN_ERRLOG(app_errlog, app_key,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
size = st->size;
if((size >= 1 && size <= 32)
&& !check_permitted_alphabet_0(st)) {
/* 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 Identifier,
* so here we adjust the DEF accordingly.
*/
static void
VisibleIdentifier_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_Identifier.free_struct;
td->print_struct = asn_DEF_Identifier.print_struct;
td->ber_decoder = asn_DEF_Identifier.ber_decoder;
td->der_encoder = asn_DEF_Identifier.der_encoder;
td->xer_decoder = asn_DEF_Identifier.xer_decoder;
td->xer_encoder = asn_DEF_Identifier.xer_encoder;
td->elements = asn_DEF_Identifier.elements;
td->elements_count = asn_DEF_Identifier.elements_count;
td->specifics = asn_DEF_Identifier.specifics;
}
void
VisibleIdentifier_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
VisibleIdentifier_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
VisibleIdentifier_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
VisibleIdentifier_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
VisibleIdentifier_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
VisibleIdentifier_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
VisibleIdentifier_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) {
VisibleIdentifier_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
VisibleIdentifier_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
VisibleIdentifier_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
VisibleIdentifier_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) {
VisibleIdentifier_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [VisibleIdentifier] >>> ***/
static ber_tlv_tag_t asn_DEF_VisibleIdentifier_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (26 << 2))
};
asn_TYPE_descriptor_t asn_DEF_VisibleIdentifier = {
"VisibleIdentifier",
"VisibleIdentifier",
VisibleIdentifier_free,
VisibleIdentifier_print,
VisibleIdentifier_constraint,
VisibleIdentifier_decode_ber,
VisibleIdentifier_encode_der,
VisibleIdentifier_decode_xer,
VisibleIdentifier_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_VisibleIdentifier_0_tags,
sizeof(asn_DEF_VisibleIdentifier_0_tags)
/sizeof(asn_DEF_VisibleIdentifier_0_tags[0]), /* 1 */
asn_DEF_VisibleIdentifier_0_tags, /* Same as above */
sizeof(asn_DEF_VisibleIdentifier_0_tags)
/sizeof(asn_DEF_VisibleIdentifier_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [Identifier] >>> ***/ /*** <<< INCLUDES [Identifier] >>> ***/
...@@ -2924,7 +3371,7 @@ xer_type_encoder_f Identifier_encode_xer; ...@@ -2924,7 +3371,7 @@ xer_type_encoder_f Identifier_encode_xer;
/*** <<< CTABLES [Identifier] >>> ***/ /*** <<< CTABLES [Identifier] >>> ***/
static int permitted_alphabet_table_15[256] = { static int permitted_alphabet_table_0[256] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* */
0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, /* $ */ 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0, /* $ */
...@@ -2935,8 +3382,8 @@ static int permitted_alphabet_table_15[256] = { ...@@ -2935,8 +3382,8 @@ static int permitted_alphabet_table_15[256] = {
1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */ 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz */
}; };
static int check_permitted_alphabet_15(const void *sptr) { static int check_permitted_alphabet_0(const void *sptr) {
int *table = permitted_alphabet_table_15; int *table = permitted_alphabet_table_0;
/* The underlying type is VisibleString */ /* The underlying type is VisibleString */
const VisibleString_t *st = (const VisibleString_t *)sptr; const VisibleString_t *st = (const VisibleString_t *)sptr;
const uint8_t *ch = st->buf; const uint8_t *ch = st->buf;
...@@ -2968,7 +3415,7 @@ Identifier_constraint(asn_TYPE_descriptor_t *td, const void *sptr, ...@@ -2968,7 +3415,7 @@ Identifier_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
size = st->size; size = st->size;
if((size >= 1 && size <= 32) if((size >= 1 && size <= 32)
&& !check_permitted_alphabet_15(sptr)) { && !check_permitted_alphabet_0(st)) {
/* Constraint check succeeded */ /* Constraint check succeeded */
return 0; return 0;
} else { } else {
......
...@@ -629,12 +629,112 @@ typedef REAL_t T6_t; ...@@ -629,12 +629,112 @@ typedef REAL_t T6_t;
/*** <<< FUNC-DECLS [T6] >>> ***/ /*** <<< FUNC-DECLS [T6] >>> ***/
/* This type is equivalent to REAL */ extern asn_TYPE_descriptor_t asn_DEF_T6;
#define asn_DEF_T6 asn_DEF_REAL asn_struct_free_f T6_free;
asn_struct_print_f T6_print;
asn_constr_check_f T6_constraint;
ber_type_decoder_f T6_decode_ber;
der_type_encoder_f T6_encode_der;
xer_type_decoder_f T6_decode_xer;
xer_type_encoder_f T6_encode_xer;
/*** <<< CODE [T6] >>> ***/ /*** <<< CODE [T6] >>> ***/
/* This type is equivalent to REAL */ int
T6_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_REAL.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using REAL,
* so here we adjust the DEF accordingly.
*/
static void
T6_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_REAL.free_struct;
td->print_struct = asn_DEF_REAL.print_struct;
td->ber_decoder = asn_DEF_REAL.ber_decoder;
td->der_encoder = asn_DEF_REAL.der_encoder;
td->xer_decoder = asn_DEF_REAL.xer_decoder;
td->xer_encoder = asn_DEF_REAL.xer_encoder;
td->elements = asn_DEF_REAL.elements;
td->elements_count = asn_DEF_REAL.elements_count;
td->specifics = asn_DEF_REAL.specifics;
}
void
T6_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
T6_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
T6_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
T6_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
T6_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
T6_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
T6_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) {
T6_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
T6_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
T6_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
T6_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) {
T6_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [T6] >>> ***/
static ber_tlv_tag_t asn_DEF_T6_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
};
asn_TYPE_descriptor_t asn_DEF_T6 = {
"T6",
"T6",
T6_free,
T6_print,
T6_constraint,
T6_decode_ber,
T6_encode_der,
T6_decode_xer,
T6_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_T6_0_tags,
sizeof(asn_DEF_T6_0_tags)
/sizeof(asn_DEF_T6_0_tags[0]), /* 1 */
asn_DEF_T6_0_tags, /* Same as above */
sizeof(asn_DEF_T6_0_tags)
/sizeof(asn_DEF_T6_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [T] >>> ***/ /*** <<< INCLUDES [T] >>> ***/
......
...@@ -629,12 +629,112 @@ typedef double T6_t; ...@@ -629,12 +629,112 @@ typedef double T6_t;
/*** <<< FUNC-DECLS [T6] >>> ***/ /*** <<< FUNC-DECLS [T6] >>> ***/
/* This type is equivalent to NativeReal */ extern asn_TYPE_descriptor_t asn_DEF_T6;
#define asn_DEF_T6 asn_DEF_NativeReal asn_struct_free_f T6_free;
asn_struct_print_f T6_print;
asn_constr_check_f T6_constraint;
ber_type_decoder_f T6_decode_ber;
der_type_encoder_f T6_encode_der;
xer_type_decoder_f T6_decode_xer;
xer_type_encoder_f T6_encode_xer;
/*** <<< CODE [T6] >>> ***/ /*** <<< CODE [T6] >>> ***/
/* This type is equivalent to NativeReal */ int
T6_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_NativeReal.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using NativeReal,
* so here we adjust the DEF accordingly.
*/
static void
T6_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeReal.free_struct;
td->print_struct = asn_DEF_NativeReal.print_struct;
td->ber_decoder = asn_DEF_NativeReal.ber_decoder;
td->der_encoder = asn_DEF_NativeReal.der_encoder;
td->xer_decoder = asn_DEF_NativeReal.xer_decoder;
td->xer_encoder = asn_DEF_NativeReal.xer_encoder;
td->elements = asn_DEF_NativeReal.elements;
td->elements_count = asn_DEF_NativeReal.elements_count;
td->specifics = asn_DEF_NativeReal.specifics;
}
void
T6_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
T6_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
T6_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
T6_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
T6_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
T6_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
T6_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) {
T6_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
T6_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
T6_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
T6_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) {
T6_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [T6] >>> ***/
static ber_tlv_tag_t asn_DEF_T6_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
};
asn_TYPE_descriptor_t asn_DEF_T6 = {
"T6",
"T6",
T6_free,
T6_print,
T6_constraint,
T6_decode_ber,
T6_encode_der,
T6_decode_xer,
T6_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_T6_0_tags,
sizeof(asn_DEF_T6_0_tags)
/sizeof(asn_DEF_T6_0_tags[0]), /* 1 */
asn_DEF_T6_0_tags, /* Same as above */
sizeof(asn_DEF_T6_0_tags)
/sizeof(asn_DEF_T6_0_tags[0]), /* 1 */
0, 0, /* No members */
0 /* No specifics */
};
/*** <<< INCLUDES [T] >>> ***/ /*** <<< INCLUDES [T] >>> ***/
......
...@@ -12,10 +12,10 @@ ModuleTestCircularReferences ...@@ -12,10 +12,10 @@ ModuleTestCircularReferences
BEGIN BEGIN
Type ::= SEQUENCE { Type ::= SEQUENCE {
data SEQUENCE OF Epyt data SEQUENCE OF EpytRef
} }
-- EpytRef ::= Epyt EpytRef ::= Epyt
Epyt ::= SEQUENCE { Epyt ::= SEQUENCE {
stype SET OF Type, stype SET OF Type,
......
...@@ -29,7 +29,7 @@ extern asn_TYPE_descriptor_t asn_DEF_Type; ...@@ -29,7 +29,7 @@ extern asn_TYPE_descriptor_t asn_DEF_Type;
/*** <<< POST-INCLUDE [Type] >>> ***/ /*** <<< POST-INCLUDE [Type] >>> ***/
#include <Epyt.h> #include <EpytRef.h>
/*** <<< STAT-DEFS [Type] >>> ***/ /*** <<< STAT-DEFS [Type] >>> ***/
...@@ -37,7 +37,7 @@ static asn_TYPE_member_t asn_MBR_data_2[] = { ...@@ -37,7 +37,7 @@ static asn_TYPE_member_t asn_MBR_data_2[] = {
{ ATF_NOFLAGS, 0, 0, { ATF_NOFLAGS, 0, 0,
.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
.tag_mode = 0, .tag_mode = 0,
.type = (void *)&asn_DEF_Epyt, .type = (void *)&asn_DEF_EpytRef,
.memb_constraints = 0, /* Defer constraints checking to the member type */ .memb_constraints = 0, /* Defer constraints checking to the member type */
.name = "" .name = ""
}, },
...@@ -119,6 +119,124 @@ asn_TYPE_descriptor_t asn_DEF_Type = { ...@@ -119,6 +119,124 @@ asn_TYPE_descriptor_t asn_DEF_Type = {
}; };
/*** <<< INCLUDES [EpytRef] >>> ***/
#include <Epyt.h>
/*** <<< TYPE-DECLS [EpytRef] >>> ***/
typedef Epyt_t EpytRef_t;
/*** <<< FUNC-DECLS [EpytRef] >>> ***/
extern asn_TYPE_descriptor_t asn_DEF_EpytRef;
asn_struct_free_f EpytRef_free;
asn_struct_print_f EpytRef_print;
asn_constr_check_f EpytRef_constraint;
ber_type_decoder_f EpytRef_decode_ber;
der_type_encoder_f EpytRef_encode_der;
xer_type_decoder_f EpytRef_decode_xer;
xer_type_encoder_f EpytRef_encode_xer;
/*** <<< CODE [EpytRef] >>> ***/
int
EpytRef_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_Epyt.check_constraints;
return td->check_constraints(td, sptr, app_errlog, app_key);
}
/*
* This type is implemented using Epyt,
* so here we adjust the DEF accordingly.
*/
static void
EpytRef_0_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_Epyt.free_struct;
td->print_struct = asn_DEF_Epyt.print_struct;
td->ber_decoder = asn_DEF_Epyt.ber_decoder;
td->der_encoder = asn_DEF_Epyt.der_encoder;
td->xer_decoder = asn_DEF_Epyt.xer_decoder;
td->xer_encoder = asn_DEF_Epyt.xer_encoder;
td->elements = asn_DEF_Epyt.elements;
td->elements_count = asn_DEF_Epyt.elements_count;
td->specifics = asn_DEF_Epyt.specifics;
}
void
EpytRef_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
EpytRef_0_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
EpytRef_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
EpytRef_0_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
EpytRef_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, void *bufptr, size_t size, int tag_mode) {
EpytRef_0_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
EpytRef_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) {
EpytRef_0_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
EpytRef_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, void *bufptr, size_t size) {
EpytRef_0_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
EpytRef_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) {
EpytRef_0_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
/*** <<< STAT-DEFS [EpytRef] >>> ***/
static ber_tlv_tag_t asn_DEF_EpytRef_0_tags[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_TYPE_descriptor_t asn_DEF_EpytRef = {
"EpytRef",
"EpytRef",
EpytRef_free,
EpytRef_print,
EpytRef_constraint,
EpytRef_decode_ber,
EpytRef_encode_der,
EpytRef_decode_xer,
EpytRef_encode_xer,
0, /* Use generic outmost tag fetcher */
asn_DEF_EpytRef_0_tags,
sizeof(asn_DEF_EpytRef_0_tags)
/sizeof(asn_DEF_EpytRef_0_tags[0]), /* 1 */
asn_DEF_EpytRef_0_tags, /* Same as above */
sizeof(asn_DEF_EpytRef_0_tags)
/sizeof(asn_DEF_EpytRef_0_tags[0]), /* 1 */
0, 0, /* Defined elsewhere */
0 /* No specifics */
};
/*** <<< INCLUDES [Epyt] >>> ***/ /*** <<< INCLUDES [Epyt] >>> ***/
#include <asn_SET_OF.h> #include <asn_SET_OF.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment