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


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_Shared-Network-Information.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_ProvidedData_PR {
	RANAP_ProvidedData_PR_NOTHING,	/* No components present */
	RANAP_ProvidedData_PR_shared_network_information,
	/* Extensions may appear below */
	
} RANAP_ProvidedData_PR;

/* RANAP_ProvidedData */
typedef struct RANAP_ProvidedData {
	RANAP_ProvidedData_PR present;
	union RANAP_ProvidedData_u {
		RANAP_Shared_Network_Information_t	 shared_network_information;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_ProvidedData_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_ProvidedData;

#ifdef __cplusplus
}
#endif

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