/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-IEs"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#ifndef	_AdditionalSpecialSubframePatterns_H_
#define	_AdditionalSpecialSubframePatterns_H_


#include "asn_application.h"

/* Including external dependencies */
#include "NativeEnumerated.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum AdditionalSpecialSubframePatterns {
	AdditionalSpecialSubframePatterns_ssp0	= 0,
	AdditionalSpecialSubframePatterns_ssp1	= 1,
	AdditionalSpecialSubframePatterns_ssp2	= 2,
	AdditionalSpecialSubframePatterns_ssp3	= 3,
	AdditionalSpecialSubframePatterns_ssp4	= 4,
	AdditionalSpecialSubframePatterns_ssp5	= 5,
	AdditionalSpecialSubframePatterns_ssp6	= 6,
	AdditionalSpecialSubframePatterns_ssp7	= 7,
	AdditionalSpecialSubframePatterns_ssp8	= 8,
	AdditionalSpecialSubframePatterns_ssp9	= 9
	/*
	 * Enumeration is extensible
	 */
} e_AdditionalSpecialSubframePatterns;

/* AdditionalSpecialSubframePatterns */
typedef long	 AdditionalSpecialSubframePatterns_t;

/* Implementation */
extern asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatterns_constr_1;
extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatterns;
extern const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatterns_specs_1;
asn_struct_free_f AdditionalSpecialSubframePatterns_free;
asn_struct_print_f AdditionalSpecialSubframePatterns_print;
asn_constr_check_f AdditionalSpecialSubframePatterns_constraint;
ber_type_decoder_f AdditionalSpecialSubframePatterns_decode_ber;
der_type_encoder_f AdditionalSpecialSubframePatterns_encode_der;
xer_type_decoder_f AdditionalSpecialSubframePatterns_decode_xer;
xer_type_encoder_f AdditionalSpecialSubframePatterns_encode_xer;
per_type_decoder_f AdditionalSpecialSubframePatterns_decode_uper;
per_type_encoder_f AdditionalSpecialSubframePatterns_encode_uper;
per_type_decoder_f AdditionalSpecialSubframePatterns_decode_aper;
per_type_encoder_f AdditionalSpecialSubframePatterns_encode_aper;

#ifdef __cplusplus
}
#endif

#endif	/* _AdditionalSpecialSubframePatterns_H_ */
#include "asn_internal.h"
