+static int ir_Term (IrExpArg *iea,
+ Z_Term *p, const char *name, int argi)
+{
+ static IrExpChoice arm [] = {
+ { "general", Z_Term_general,
+ ir_octet },
+ { "numeric", Z_Term_numeric,
+ ir_integer },
+ { "characterString", Z_Term_characterString,
+ ir_InternationalString },
+ { "oid", Z_Term_oid,
+ ir_oid },
+ { "dateTime", Z_Term_dateTime,
+ ir_GeneralizedTime },
+ { "external", Z_Term_external,
+ ir_External },
+ { "null", Z_Term_null,
+ ir_null },
+ { NULL, 0, NULL }};
+
+ if (!ir_match_start (name, p, iea, ++argi))
+ return TCL_OK;
+
+ ir_choice (iea, arm, &p->which, p->u.general, argi);
+ return ir_match_end (name, iea, argi);
+}