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

#ifndef	_RANAP_RANAP_PDU_H_
#define	_RANAP_RANAP_PDU_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RANAP_InitiatingMessage.h"
#include "RANAP_SuccessfulOutcome.h"
#include "RANAP_UnsuccessfulOutcome.h"
#include "RANAP_Outcome.h"
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RANAP_RANAP_PDU_PR {
	RANAP_RANAP_PDU_PR_NOTHING,	/* No components present */
	RANAP_RANAP_PDU_PR_initiatingMessage,
	RANAP_RANAP_PDU_PR_successfulOutcome,
	RANAP_RANAP_PDU_PR_unsuccessfulOutcome,
	RANAP_RANAP_PDU_PR_outcome,
	/* Extensions may appear below */
	
} RANAP_RANAP_PDU_PR;

/* RANAP_RANAP-PDU */
typedef struct RANAP_RANAP_PDU {
	RANAP_RANAP_PDU_PR present;
	union RANAP_RANAP_PDU_u {
		RANAP_InitiatingMessage_t	 initiatingMessage;
		RANAP_SuccessfulOutcome_t	 successfulOutcome;
		RANAP_UnsuccessfulOutcome_t	 unsuccessfulOutcome;
		RANAP_Outcome_t	 outcome;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANAP_RANAP_PDU_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RANAP_RANAP_PDU;

#ifdef __cplusplus
}
#endif

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