/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-PDU-Contents"
 * 	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	_ServedCellsToModify_H_
#define	_ServedCellsToModify_H_


#include "asn_application.h"

/* Including external dependencies */
#include "asn_SEQUENCE_OF.h"
#include "constr_SEQUENCE_OF.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct ServedCellsToModify_Item;

/* ServedCellsToModify */
typedef struct ServedCellsToModify {
	A_SEQUENCE_OF(struct ServedCellsToModify_Item) list;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedCellsToModify_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify;

#ifdef __cplusplus
}
#endif

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