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

#ifndef	_ErrorSeverity_H_
#define	_ErrorSeverity_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ErrorSeverity {
	ErrorSeverity_minor	= 1,
	ErrorSeverity_major	= 2,
	ErrorSeverity_fatal	= 3
	/*
	 * Enumeration is extensible
	 */
} e_ErrorSeverity;

/* ErrorSeverity */
typedef long	 ErrorSeverity_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ErrorSeverity;
asn_struct_free_f ErrorSeverity_free;
asn_struct_print_f ErrorSeverity_print;
asn_constr_check_f ErrorSeverity_constraint;
ber_type_decoder_f ErrorSeverity_decode_ber;
der_type_encoder_f ErrorSeverity_encode_der;
xer_type_decoder_f ErrorSeverity_decode_xer;
xer_type_encoder_f ErrorSeverity_encode_xer;

#ifdef __cplusplus
}
#endif

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