/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "SABP-IEs"
 * 	found in "../../asn1/sabp/SABP-IEs.asn"
 */

#ifndef	_SABP_Number_Of_Broadcasts_Completed_Info_H_
#define	_SABP_Number_Of_Broadcasts_Completed_Info_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeEnumerated.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum SABP_Number_Of_Broadcasts_Completed_Info {
	SABP_Number_Of_Broadcasts_Completed_Info_overflow	= 0,
	SABP_Number_Of_Broadcasts_Completed_Info_unknown	= 1
	/*
	 * Enumeration is extensible
	 */
} e_SABP_Number_Of_Broadcasts_Completed_Info;

/* SABP_Number-Of-Broadcasts-Completed-Info */
typedef long	 SABP_Number_Of_Broadcasts_Completed_Info_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SABP_Number_Of_Broadcasts_Completed_Info;
asn_struct_free_f SABP_Number_Of_Broadcasts_Completed_Info_free;
asn_struct_print_f SABP_Number_Of_Broadcasts_Completed_Info_print;
asn_constr_check_f SABP_Number_Of_Broadcasts_Completed_Info_constraint;
ber_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_ber;
der_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_der;
xer_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_xer;
xer_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_xer;
per_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_uper;
per_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_uper;
per_type_decoder_f SABP_Number_Of_Broadcasts_Completed_Info_decode_aper;
per_type_encoder_f SABP_Number_Of_Broadcasts_Completed_Info_encode_aper;

#ifdef __cplusplus
}
#endif

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