mirror of https://gerrit.osmocom.org/asn1c
parsing support for CONSTRAINED BY
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@826 59561ff5-6e30-0410-9f3c-9617f08c8826
This commit is contained in:
parent
3990f89355
commit
6611addbc2
|
@ -5,6 +5,7 @@
|
|||
* More RFC variations supported in crfc2asn1.pl.
|
||||
* Refined string values compatibility. (Test cases 77, 78).
|
||||
* Support for ContainedSubtype constraints. (Test case 16).
|
||||
* Parsing support for CONSTRAINED BY. (Test case 79).
|
||||
|
||||
0.9.12: 2005-Mar-10
|
||||
|
||||
|
|
6
TODO
6
TODO
|
@ -10,9 +10,9 @@ which is already completed. Also see #3.2.
|
|||
|
||||
2. MEDIUM:
|
||||
|
||||
2.1 Support for DEFAULT encoding and decoding, at least in INTEGER/ENUMERATED types.
|
||||
2.2 Support for EXTERNAL, EMBEDDED-PDV and CHARACTER STRING types.
|
||||
2.1 Support for EXTERNAL, EMBEDDED-PDV and CHARACTER STRING types.
|
||||
Requires something from 1.2 (Information Object Classes).
|
||||
|
||||
3. MINOR:
|
||||
|
||||
3.1 Parsing of CONSTRAINED BY clauses
|
||||
3.1 Support for DEFAULT encoding and decoding, at least in INTEGER/ENUMERATED types.
|
||||
|
|
|
@ -77,6 +77,8 @@ asn1constraint_compatible(asn1p_expr_type_e expr_type,
|
|||
default: break;
|
||||
}
|
||||
return 0;
|
||||
case ACT_CT_CTDBY:
|
||||
return 1;
|
||||
case ACT_CA_SET:
|
||||
case ACT_CA_CRC:
|
||||
case ACT_CA_CSV:
|
||||
|
|
|
@ -137,6 +137,8 @@ asn1p_constraint_type2str(enum asn1p_constraint_type_e type) {
|
|||
return "SingleTypeConstraint";
|
||||
case ACT_CT_WCOMPS:
|
||||
return "MultipleTypeConstraints";
|
||||
case ACT_CT_CTDBY:
|
||||
return "UserDefinedConstraint";
|
||||
case ACT_CA_SET:
|
||||
return "SET";
|
||||
case ACT_CA_CRC:
|
||||
|
|
|
@ -25,6 +25,7 @@ typedef struct asn1p_constraint_s {
|
|||
ACT_CT_FROM, /* FROM constraint type */
|
||||
ACT_CT_WCOMP, /* WITH COMPONENT */
|
||||
ACT_CT_WCOMPS, /* WITH COMPONENTS */
|
||||
ACT_CT_CTDBY, /* CONSTRAINED BY */
|
||||
/*
|
||||
* Arrays of constraints.
|
||||
*/
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -269,7 +269,7 @@ CHOICE return TOK_CHOICE;
|
|||
CLASS return TOK_CLASS;
|
||||
COMPONENT return TOK_COMPONENT;
|
||||
COMPONENTS return TOK_COMPONENTS;
|
||||
CONSRAINED return TOK_CONSTRAINED;
|
||||
CONSTRAINED return TOK_CONSTRAINED;
|
||||
CONTAINING return TOK_CONTAINING;
|
||||
DEFAULT return TOK_DEFAULT;
|
||||
DEFINED {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1388,12 +1388,11 @@ DefinedValue:
|
|||
|
||||
Opaque:
|
||||
TOK_opaque {
|
||||
$$.len = $1.len + 2;
|
||||
$$.len = $1.len + 1;
|
||||
$$.buf = malloc($$.len + 1);
|
||||
checkmem($$.buf);
|
||||
$$.buf[0] = '{';
|
||||
$$.buf[1] = ' ';
|
||||
memcpy($$.buf + 2, $1.buf, $1.len);
|
||||
memcpy($$.buf + 1, $1.buf, $1.len);
|
||||
$$.buf[$$.len] = '\0';
|
||||
free($1.buf);
|
||||
}
|
||||
|
@ -1623,6 +1622,15 @@ ConstraintSubtypeElement:
|
|||
| WithComponents {
|
||||
$$ = $1;
|
||||
}
|
||||
| TOK_CONSTRAINED TOK_BY '{'
|
||||
{ asn1p_lexer_hack_push_opaque_state(); } Opaque /* '}' */ {
|
||||
$$ = asn1p_constraint_new(yylineno);
|
||||
checkmem($$);
|
||||
$$->type = ACT_CT_CTDBY;
|
||||
$$->value = asn1p_value_frombuf($5.buf, $5.len, 0);
|
||||
checkmem($$->value);
|
||||
$$->value->type = ATV_UNPARSED;
|
||||
}
|
||||
;
|
||||
|
||||
ConstraintRangeSpec:
|
||||
|
|
|
@ -322,6 +322,11 @@ asn1print_constraint(asn1p_constraint_t *ct, enum asn1print_flags flags) {
|
|||
case ACT_CT_WCOMP:
|
||||
case ACT_CT_WCOMPS:
|
||||
printf("???");
|
||||
case ACT_CT_CTDBY:
|
||||
printf("CONSTRAINED BY ");
|
||||
assert(ct->value->type == ATV_UNPARSED);
|
||||
fwrite(ct->value->value.string.buf,
|
||||
1, ct->value->value.string.size, stdout);
|
||||
break;
|
||||
case ACT_CA_SET: symno++;
|
||||
case ACT_CA_CRC: symno++;
|
||||
|
|
|
@ -22,7 +22,7 @@ EXTENSION-ATTRIBUTE ::= CLASS {
|
|||
} WITH SYNTAX {&Type IDENTIFIED BY &id}
|
||||
|
||||
|
||||
terminal-type EXTENSION-ATTRIBUTE ::= { TerminalType IDENTIFIED BY 23}
|
||||
terminal-type EXTENSION-ATTRIBUTE ::= {TerminalType IDENTIFIED BY 23}
|
||||
|
||||
ExtensionAttribute ::= SEQUENCE {
|
||||
extension-attribute-type [0] IMPLICIT EXTENSION-ATTRIBUTE.&id ({ExtensionAttributeTable}),
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
-- OK: Everything is fine
|
||||
|
||||
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
|
||||
-- .spelio.software.asn1c.test (9363.1.5.1)
|
||||
-- .79
|
||||
|
||||
ModuleTestConstrainedBy
|
||||
{ iso org(3) dod(6) internet(1) private(4) enterprise(1)
|
||||
spelio(9363) software(1) asn1c(5) test(1) 79 }
|
||||
DEFINITIONS ::=
|
||||
BEGIN
|
||||
|
||||
Type ::= SEQUENCE {
|
||||
int INTEGER,
|
||||
...
|
||||
} (CONSTRAINED BY { -- nothing -- })
|
||||
|
||||
END
|
Loading…
Reference in New Issue