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


#include <asn_application.h>

/* Including external dependencies */
#include "UTRANCellID.h"
#include "CGI.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum MacroCellID_PR {
	MacroCellID_PR_NOTHING,	/* No components present */
	MacroCellID_PR_uTRANCellID,
	MacroCellID_PR_gERANCellID,
	/* Extensions may appear below */
	
} MacroCellID_PR;

/* MacroCellID */
typedef struct MacroCellID {
	MacroCellID_PR present;
	union MacroCellID_u {
		UTRANCellID_t	 uTRANCellID;
		CGI_t	 gERANCellID;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MacroCellID_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_MacroCellID;

#ifdef __cplusplus
}
#endif

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