/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "RANAP-IEs"
 * 	found in "../../asn1/ranap/RANAP-IEs.asn"
 */

#ifndef	_RANAP_SourceCellID_H_
#define	_RANAP_SourceCellID_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/ranap/RANAP_SourceUTRANCellID.h>
#include <osmocom/ranap/RANAP_CGI.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_SourceCellID_PR {
	RANAP_SourceCellID_PR_NOTHING,	/* No components present */
	RANAP_SourceCellID_PR_sourceUTRANCellID,
	RANAP_SourceCellID_PR_sourceGERANCellID,
	/* Extensions may appear below */
	
} RANAP_SourceCellID_PR;

/* RANAP_SourceCellID */
typedef struct RANAP_SourceCellID {
	RANAP_SourceCellID_PR present;
	union RANAP_SourceCellID_u {
		RANAP_SourceUTRANCellID_t	 sourceUTRANCellID;
		RANAP_CGI_t	 sourceGERANCellID;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_SourceCellID_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_SourceCellID;

#ifdef __cplusplus
}
#endif

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