/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "X2AP-15-4-0.asn1"
 * 	`asn1c -D ./asn1_n1 -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_SpecialSubframePatterns_H_
#define	_SpecialSubframePatterns_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeEnumerated.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum SpecialSubframePatterns {
	SpecialSubframePatterns_ssp0	= 0,
	SpecialSubframePatterns_ssp1	= 1,
	SpecialSubframePatterns_ssp2	= 2,
	SpecialSubframePatterns_ssp3	= 3,
	SpecialSubframePatterns_ssp4	= 4,
	SpecialSubframePatterns_ssp5	= 5,
	SpecialSubframePatterns_ssp6	= 6,
	SpecialSubframePatterns_ssp7	= 7,
	SpecialSubframePatterns_ssp8	= 8
	/*
	 * Enumeration is extensible
	 */
} e_SpecialSubframePatterns;

/* SpecialSubframePatterns */
typedef long	 SpecialSubframePatterns_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_SpecialSubframePatterns_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframePatterns;
extern const asn_INTEGER_specifics_t asn_SPC_SpecialSubframePatterns_specs_1;
asn_struct_free_f SpecialSubframePatterns_free;
asn_struct_print_f SpecialSubframePatterns_print;
asn_constr_check_f SpecialSubframePatterns_constraint;
ber_type_decoder_f SpecialSubframePatterns_decode_ber;
der_type_encoder_f SpecialSubframePatterns_encode_der;
xer_type_decoder_f SpecialSubframePatterns_decode_xer;
xer_type_encoder_f SpecialSubframePatterns_encode_xer;
oer_type_decoder_f SpecialSubframePatterns_decode_oer;
oer_type_encoder_f SpecialSubframePatterns_encode_oer;
per_type_decoder_f SpecialSubframePatterns_decode_uper;
per_type_encoder_f SpecialSubframePatterns_encode_uper;
per_type_decoder_f SpecialSubframePatterns_decode_aper;
per_type_encoder_f SpecialSubframePatterns_encode_aper;

#ifdef __cplusplus
}
#endif

#endif	/* _SpecialSubframePatterns_H_ */
#include <asn_internal.h>
