
/*** <<< INCLUDES [T] >>> ***/

#include <INTEGER.h>

/*** <<< DEPS [T] >>> ***/

typedef enum T {
	T_a	= 1,
	T_b	= 2
} e_T;

/*** <<< TYPE-DECLS [T] >>> ***/

typedef INTEGER_t	 T_t;

/*** <<< FUNC-DECLS [T] >>> ***/

extern asn_TYPE_descriptor_t asn_DEF_T;
asn_struct_free_f T_free;
asn_struct_print_f T_print;
asn_constr_check_f T_constraint;
ber_type_decoder_f T_decode_ber;
der_type_encoder_f T_encode_der;
xer_type_decoder_f T_decode_xer;
xer_type_encoder_f T_encode_xer;

/*** <<< CODE [T] >>> ***/

/*
 * This type is implemented using INTEGER,
 * so here we adjust the DEF accordingly.
 */

/*** <<< STAT-DEFS [T] >>> ***/

static const ber_tlv_tag_t asn_DEF_T_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_T = {
	"T",
	"T",
	&asn_OP_INTEGER,
	asn_DEF_T_tags_1,
	sizeof(asn_DEF_T_tags_1)
		/sizeof(asn_DEF_T_tags_1[0]), /* 1 */
	asn_DEF_T_tags_1,	/* Same as above */
	sizeof(asn_DEF_T_tags_1)
		/sizeof(asn_DEF_T_tags_1[0]), /* 1 */
	{ 0, 0, INTEGER_constraint },
	0, 0,	/* Defined elsewhere */
	0	/* No specifics */
};

