/*
 * This file is automatically generated by ./expr-h.pl
 * DO NOT EDIT MANUALLY, fix the ./expr-h.pl instead if necessary.
 */
#ifndef	ASN1_PARSER_EXPR_STR_H
#define	ASN1_PARSER_EXPR_STR_H

#include <assert.h>

#ifndef	__GNUC__
#define	__attribute__(x)	/* unused */
#endif

static char *asn1p_expr_type2str[] __attribute__ ((unused)) = {
	[ ASN_CONSTR_SEQUENCE ]	 = "SEQUENCE",
	[ ASN_CONSTR_CHOICE ]	 = "CHOICE",
	[ ASN_CONSTR_SET ]	 = "SET",
	[ ASN_CONSTR_SEQUENCE_OF ]	 = "SEQUENCE OF",
	[ ASN_CONSTR_SET_OF ]	 = "SET OF",
	[ ASN_CONSTR_OPEN_TYPE ]	 = "OPEN TYPE",
	[ ASN_TYPE_ANY ]	 = "ANY",
	[ ASN_BASIC_BOOLEAN ]	 = "BOOLEAN",
	[ ASN_BASIC_NULL ]	 = "NULL",
	[ ASN_BASIC_INTEGER ]	 = "INTEGER",
	[ ASN_BASIC_REAL ]	 = "REAL",
	[ ASN_BASIC_ENUMERATED ]	 = "ENUMERATED",
	[ ASN_BASIC_BIT_STRING ]	 = "BIT STRING",
	[ ASN_BASIC_OCTET_STRING ]	 = "OCTET STRING",
	[ ASN_BASIC_OBJECT_IDENTIFIER ]	 = "OBJECT IDENTIFIER",
	[ ASN_BASIC_RELATIVE_OID ]	 = "RELATIVE-OID",
	[ ASN_BASIC_EXTERNAL ]	 = "EXTERNAL",
	[ ASN_BASIC_EMBEDDED_PDV ]	 = "EMBEDDED PDV",
	[ ASN_BASIC_CHARACTER_STRING ]	 = "CHARACTER STRING",
	[ ASN_BASIC_UTCTime ]	 = "UTCTime",
	[ ASN_BASIC_GeneralizedTime ]	 = "GeneralizedTime",
	[ ASN_STRING_IA5String ]	 = "IA5String",
	[ ASN_STRING_PrintableString ]	 = "PrintableString",
	[ ASN_STRING_VisibleString ]	 = "VisibleString",
	[ ASN_STRING_ISO646String ]	 = "ISO646String",
	[ ASN_STRING_NumericString ]	 = "NumericString",
	[ ASN_STRING_UniversalString ]	 = "UniversalString",
	[ ASN_STRING_BMPString ]	 = "BMPString",
	[ ASN_STRING_UTF8String ]	 = "UTF8String",
	[ ASN_STRING_GeneralString ]	 = "GeneralString",
	[ ASN_STRING_GraphicString ]	 = "GraphicString",
	[ ASN_STRING_TeletexString ]	 = "TeletexString",
	[ ASN_STRING_T61String ]	 = "T61String",
	[ ASN_STRING_VideotexString ]	 = "VideotexString",
	[ ASN_STRING_ObjectDescriptor ]	 = "ObjectDescriptor",
};

/*
 * Convert the ASN.1 expression type back into the string representation.
 */
#define ASN_EXPR_TYPE2STR(type) _asn1p_expr_type2string(type)

static inline char * __attribute__((unused))
_asn1p_expr_type2string(asn1p_expr_type_e type) {
    assert((signed int)type >= 0);
    if(type < sizeof(asn1p_expr_type2str)/sizeof(asn1p_expr_type2str[0]))
        return asn1p_expr_type2str[type];
    return NULL;
}

#endif	/* ASN1_PARSER_EXPR_STR_H */
