/*
 * 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	_UL_HighInterferenceIndicationInfo_H_
#define	_UL_HighInterferenceIndicationInfo_H_


#include "asn_application.h"

/* Including external dependencies */
#include "asn_SEQUENCE_OF.h"
#include "constr_SEQUENCE_OF.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct UL_HighInterferenceIndicationInfo_Item;

/* UL-HighInterferenceIndicationInfo */
typedef struct UL_HighInterferenceIndicationInfo {
	A_SEQUENCE_OF(struct UL_HighInterferenceIndicationInfo_Item) list;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UL_HighInterferenceIndicationInfo_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo;
extern asn_SET_OF_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_specs_1;
extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_1[1];
extern asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1;

#ifdef __cplusplus
}
#endif

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