/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-IEs"
 * 	found in "../../asn1/hnbap/HNBAP-IEs.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_NeighbourIdentity_H_
#define	_NeighbourIdentity_H_


#include <asn_application.h>

/* Including external dependencies */
#include "HNB-RNL-Identity.h"
#include "CellIdentity.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum NeighbourIdentity_PR {
	NeighbourIdentity_PR_NOTHING,	/* No components present */
	NeighbourIdentity_PR_hNB_RNL_Identity,
	NeighbourIdentity_PR_cell_ID,
	/* Extensions may appear below */
	
} NeighbourIdentity_PR;

/* NeighbourIdentity */
typedef struct NeighbourIdentity {
	NeighbourIdentity_PR present;
	union NeighbourIdentity_u {
		HNB_RNL_Identity_t	 hNB_RNL_Identity;
		CellIdentity_t	 cell_ID;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NeighbourIdentity_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_NeighbourIdentity;

#ifdef __cplusplus
}
#endif

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