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


#include "asn_application.h"

/* Including external dependencies */
#include "CompositeAvailableCapacity.h"
#include "constr_SEQUENCE.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Forward declarations */
struct ProtocolExtensionContainer;

/* CompositeAvailableCapacityGroup */
typedef struct CompositeAvailableCapacityGroup {
	CompositeAvailableCapacity_t	 dL_CompositeAvailableCapacity;
	CompositeAvailableCapacity_t	 uL_CompositeAvailableCapacity;
	struct ProtocolExtensionContainer	*iE_Extensions;	/* OPTIONAL */
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompositeAvailableCapacityGroup_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup;

#ifdef __cplusplus
}
#endif

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