/*
 * 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 "RANAP_SourceUTRANCellID.h"
#include "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>
