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


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_InformationTransferType_PR {
	RANAP_InformationTransferType_PR_NOTHING,	/* No components present */
	RANAP_InformationTransferType_PR_rNCTraceInformation,
	/* Extensions may appear below */
	
} RANAP_InformationTransferType_PR;

/* RANAP_InformationTransferType */
typedef struct RANAP_InformationTransferType {
	RANAP_InformationTransferType_PR present;
	union RANAP_InformationTransferType_u {
		RANAP_RNCTraceInformation_t	 rNCTraceInformation;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_InformationTransferType_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_InformationTransferType;

#ifdef __cplusplus
}
#endif

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