 29ad55320f
			
		
	
	29ad55320f
	
	
	
		
			
			git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1843 ec53bebd-3082-4978-b11e-865c3cabbd6b
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #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");
 | |
| }
 | |
| 
 |