pull extensions for aliased types

This commit is contained in:
Lev Walkin 2017-08-28 00:21:38 -07:00
parent 0c54f3d05d
commit 135d7dd4e1
4 changed files with 41 additions and 7 deletions

View File

@ -2338,7 +2338,7 @@ emit_member_OER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
etype = expr_get_type(arg, expr);
if((arg->flags & A1C_GEN_OER)
&& (expr->constraints || etype == ASN_BASIC_ENUMERATED
&& (expr->combined_constraints || etype == ASN_BASIC_ENUMERATED
|| etype == ASN_CONSTR_CHOICE)) {
/* Fall through */
} else {
@ -2393,7 +2393,7 @@ emit_member_PER_constraints(arg_t *arg, asn1p_expr_t *expr, const char *pfx) {
etype = expr_get_type(arg, expr);
if((arg->flags & A1C_GEN_PER)
&& (expr->constraints
&& (expr->combined_constraints
|| etype == ASN_BASIC_ENUMERATED
|| etype == ASN_CONSTR_CHOICE)
) {
@ -3249,7 +3249,7 @@ do { \
}
if(arg->flags & A1C_GEN_OER) {
if(expr->constraints
if(expr->combined_constraints
|| expr->expr_type == ASN_BASIC_ENUMERATED
|| expr->expr_type == ASN_CONSTR_CHOICE) {
OUT("&asn_OER_type_%s_constr_%d,\n",
@ -3262,7 +3262,7 @@ do { \
}
if(arg->flags & A1C_GEN_PER) {
if(expr->constraints
if(expr->combined_constraints
|| expr->expr_type == ASN_BASIC_ENUMERATED
|| expr->expr_type == ASN_CONSTR_CHOICE) {
OUT("&asn_PER_type_%s_constr_%d,\n",

View File

@ -134,6 +134,12 @@ Alias_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
* so here we adjust the DEF accordingly.
*/
/*** <<< CTDEFS [Alias] >>> ***/
static asn_oer_constraints_t asn_OER_type_Alias_constr_1 GCC_NOTUSED = {
{ 2, 1 } /* (0..65535) */,
-1};
/*** <<< STAT-DEFS [Alias] >>> ***/
static const ber_tlv_tag_t asn_DEF_Alias_tags_1[] = {
@ -150,7 +156,7 @@ asn_TYPE_descriptor_t asn_DEF_Alias = {
asn_DEF_Alias_tags_1, /* Same as above */
sizeof(asn_DEF_Alias_tags_1)
/sizeof(asn_DEF_Alias_tags_1[0]), /* 1 */
0, /* No OER visible constraints */
&asn_OER_type_Alias_constr_1,
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */

View File

@ -94,6 +94,7 @@ typedef Short_t Alias_t;
/*** <<< FUNC-DECLS [Alias] >>> ***/
extern asn_per_constraints_t asn_PER_type_Alias_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_Alias;
asn_struct_free_f Alias_free;
asn_struct_print_f Alias_print;
@ -137,6 +138,14 @@ Alias_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
* so here we adjust the DEF accordingly.
*/
/*** <<< CTDEFS [Alias] >>> ***/
asn_per_constraints_t asn_PER_type_Alias_constr_1 GCC_NOTUSED = {
{ APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */,
{ APC_UNCONSTRAINED, -1, -1, 0, 0 },
0, 0 /* No PER value map */
};
/*** <<< STAT-DEFS [Alias] >>> ***/
static const ber_tlv_tag_t asn_DEF_Alias_tags_1[] = {
@ -154,7 +163,7 @@ asn_TYPE_descriptor_t asn_DEF_Alias = {
sizeof(asn_DEF_Alias_tags_1)
/sizeof(asn_DEF_Alias_tags_1[0]), /* 1 */
0, /* No OER visible constraints */
0, /* No PER visible constraints */
&asn_PER_type_Alias_constr_1,
0, 0, /* No members */
0 /* No specifics */
};

View File

@ -2095,11 +2095,30 @@ VisibleIdentifier_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
}
}
static int asn_PER_MAP_VisibleIdentifier_1_v2c(unsigned int value) {
if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
return -1;
return permitted_alphabet_table_1[value] - 1;
}
static int asn_PER_MAP_VisibleIdentifier_1_c2v(unsigned int code) {
if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
return -1;
return permitted_alphabet_code2value_1[code];
}
/*
* This type is implemented using Identifier,
* so here we adjust the DEF accordingly.
*/
/*** <<< CTDEFS [VisibleIdentifier] >>> ***/
static asn_per_constraints_t asn_PER_type_VisibleIdentifier_constr_1 GCC_NOTUSED = {
{ APC_CONSTRAINED, 6, 6, 36, 122 } /* (36..122) */,
{ APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */,
asn_PER_MAP_VisibleIdentifier_1_v2c, /* Value to PER code map */
asn_PER_MAP_VisibleIdentifier_1_c2v /* PER code to value map */
};
/*** <<< STAT-DEFS [VisibleIdentifier] >>> ***/
static const ber_tlv_tag_t asn_DEF_VisibleIdentifier_tags_1[] = {
@ -2117,7 +2136,7 @@ asn_TYPE_descriptor_t asn_DEF_VisibleIdentifier = {
sizeof(asn_DEF_VisibleIdentifier_tags_1)
/sizeof(asn_DEF_VisibleIdentifier_tags_1[0]), /* 1 */
0, /* No OER visible constraints */
0, /* No PER visible constraints */
&asn_PER_type_VisibleIdentifier_constr_1,
0, 0, /* No members */
0 /* No specifics */
};