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


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_LAI.h"
#include "RANAP_RAI.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_PagingAreaID_PR {
	RANAP_PagingAreaID_PR_NOTHING,	/* No components present */
	RANAP_PagingAreaID_PR_lAI,
	RANAP_PagingAreaID_PR_rAI,
	/* Extensions may appear below */
	
} RANAP_PagingAreaID_PR;

/* RANAP_PagingAreaID */
typedef struct RANAP_PagingAreaID {
	RANAP_PagingAreaID_PR present;
	union RANAP_PagingAreaID_u {
		RANAP_LAI_t	 lAI;
		RANAP_RAI_t	 rAI;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_PagingAreaID_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_PagingAreaID;

#ifdef __cplusplus
}
#endif

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