Generate code to test for types.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1843 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
57
lib/asn1/gen_maybe.c
Normal file
57
lib/asn1/gen_maybe.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include "asn1_locl.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
void
|
||||
generate_type_maybe (Symbol *s)
|
||||
{
|
||||
fprintf (headerfile,
|
||||
"int maybe_%s(unsigned char *, int);\n",
|
||||
s->gen_name);
|
||||
|
||||
fprintf (codefile, "int\n"
|
||||
"maybe_%s(unsigned char *p, int len)\n"
|
||||
"{\n ",
|
||||
s->gen_name);
|
||||
|
||||
switch (s->type->type) {
|
||||
case TInteger:
|
||||
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
|
||||
"PRIM, UT_Integer) >= 0;\n");
|
||||
break;
|
||||
case TOctetString:
|
||||
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
|
||||
"PRIM, UT_OctetString) >= 0;\n");
|
||||
break;
|
||||
case TGeneralizedTime:
|
||||
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
|
||||
"PRIM, UT_GeneralizedTime) >= 0;\n");
|
||||
break;
|
||||
case TGeneralString:
|
||||
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
|
||||
"PRIM, UT_GeneralString) >= 0;\n");
|
||||
break;
|
||||
case TBitString:
|
||||
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
|
||||
"PRIM, UT_BitString) >= 0;\n");
|
||||
break;
|
||||
|
||||
case TSequence:
|
||||
case TSequenceOf:
|
||||
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
|
||||
"CONS, UT_Sequence) >= 0;\n");
|
||||
break;
|
||||
case TApplication:
|
||||
fprintf (codefile, "return der_match_tag (p, len, APPL, "
|
||||
"CONS, %d) >= 0;\n", s->type->application);
|
||||
break;
|
||||
case TType:
|
||||
fprintf (codefile, "return maybe_%s(p, len) >= 0;\n",
|
||||
s->type->symbol->gen_name);
|
||||
break;
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
fprintf (codefile, "}\n\n");
|
||||
}
|
||||
|
Reference in New Issue
Block a user