/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2AP-PDU-Contents"
 * 	found in "E2AP-PDU-Contents-v01.00.asn"
 * 	`asn1c -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#ifndef	_RICaction_Admitted_Item_H_
#define	_RICaction_Admitted_Item_H_


#include <asn_application.h>

/* Including external dependencies */
#include "RICactionID.h"
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* RICaction-Admitted-Item */
typedef struct RICaction_Admitted_Item {
	RICactionID_t	 ricActionID;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICaction_Admitted_Item_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[1];

#ifdef __cplusplus
}
#endif

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