aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1parser
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2004-09-15 11:59:30 +0000
committerLev Walkin <vlm@lionet.info>2004-09-15 11:59:30 +0000
commit5498f2d63a5b7e27b0ca86a1fd61db113c69f948 (patch)
treefb1ad573f7d0c84943f68ddf059aab07eb7c374c /libasn1parser
parent0204fa632237e2cd55c8f8e13dd5406fc41c4bdd (diff)
extended marker
Diffstat (limited to 'libasn1parser')
-rw-r--r--libasn1parser/asn1p_expr.c5
-rw-r--r--libasn1parser/asn1p_expr.h13
2 files changed, 12 insertions, 6 deletions
diff --git a/libasn1parser/asn1p_expr.c b/libasn1parser/asn1p_expr.c
index 755196f3..c3c31f2c 100644
--- a/libasn1parser/asn1p_expr.c
+++ b/libasn1parser/asn1p_expr.c
@@ -46,7 +46,7 @@ asn1p_expr_clone(asn1p_expr_t *expr, int skip_extensions) {
CLCOPY(meta_type);
CLCOPY(expr_type);
CLCOPY(tag);
- CLCOPY(marker); /* OPTIONAL/DEFAULT */
+ CLCOPY(marker.flags); /* OPTIONAL/DEFAULT */
CLCOPY(module);
CLCOPY(_mark);
@@ -62,6 +62,7 @@ asn1p_expr_clone(asn1p_expr_t *expr, int skip_extensions) {
CLCLONE(combined_constraints, asn1p_constraint_clone);
CLCLONE(params, asn1p_paramlist_clone);
CLCLONE(value, asn1p_value_clone);
+ CLCLONE(marker.default_value, asn1p_value_clone);
CLCLONE(with_syntax, asn1p_wsyntx_clone);
/*
@@ -128,6 +129,8 @@ asn1p_expr_free(asn1p_expr_t *expr) {
asn1p_paramlist_free(expr->params);
if(expr->value)
asn1p_value_free(expr->value);
+ if(expr->marker.default_value)
+ asn1p_value_free(expr->marker.default_value);
if(expr->with_syntax)
asn1p_wsyntx_free(expr->with_syntax);
diff --git a/libasn1parser/asn1p_expr.h b/libasn1parser/asn1p_expr.h
index 2c284ff0..4cdcd41f 100644
--- a/libasn1parser/asn1p_expr.h
+++ b/libasn1parser/asn1p_expr.h
@@ -173,11 +173,14 @@ typedef struct asn1p_expr_s {
asn1_integer_t tag_value;
} tag;
- enum asn1p_expr_marker_e {
- EM_NOMARK,
- EM_INDIRECT = 0x01, /* 0001: Represent as pointer */
- EM_OPTIONAL = 0x03, /* 0011: Optional member */
- EM_DEFAULT = 0x07, /* 0111: FIXME: store the value */
+ struct asn1p_expr_marker_s {
+ enum asn1p_expr_marker_e {
+ EM_NOMARK,
+ EM_INDIRECT = 0x01, /* 0001: Represent as pointer */
+ EM_OPTIONAL = 0x03, /* 0011: Optional member */
+ EM_DEFAULT = 0x07, /* 0111: default_value */
+ } flags;
+ asn1p_value_t *default_value; /* For EM_DEFAULT case */
} marker;
int unique; /* UNIQUE */