From 29ad55320f2e8907583c346a99fe6f0f90541cc5 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Fri, 6 Jun 1997 19:32:15 +0000 Subject: [PATCH] Generate code to test for types. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1843 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/gen_maybe.c | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 lib/asn1/gen_maybe.c diff --git a/lib/asn1/gen_maybe.c b/lib/asn1/gen_maybe.c new file mode 100644 index 000000000..46e4e4a63 --- /dev/null +++ b/lib/asn1/gen_maybe.c @@ -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"); +} +