/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "E2SM-gNB-X2-IEs"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#ifndef	_ActionParameter_Item_H_
#define	_ActionParameter_Item_H_


#include "asn_application.h"

/* Including external dependencies */
#include "ActionParameter-ID.h"
#include "ActionParameter-Value.h"
#include "constr_SEQUENCE.h"

#ifdef __cplusplus
extern "C" {
#endif

/* ActionParameter-Item */
typedef struct ActionParameter_Item {
	ActionParameter_ID_t	 actionParameter_ID;
	ActionParameter_Value_t	 actionParameter_Value;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ActionParameter_Item_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_Item;
extern asn_SEQUENCE_specifics_t asn_SPC_ActionParameter_Item_specs_1;
extern asn_TYPE_member_t asn_MBR_ActionParameter_Item_1[2];

#ifdef __cplusplus
}
#endif

#endif	/* _ActionParameter_Item_H_ */
#include "asn_internal.h"
