/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "HNBAP-IEs"
 * 	found in "../../asn1/hnbap/HNBAP-IEs.asn"
 * 	`asn1c -gen-PER`
 */

#ifndef	_AccessResult_H_
#define	_AccessResult_H_


#include <asn_application.h>

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

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum AccessResult {
	AccessResult_allowed	= 0,
	AccessResult_notAllowed	= 1
	/*
	 * Enumeration is extensible
	 */
} e_AccessResult;

/* AccessResult */
typedef long	 AccessResult_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_AccessResult;
asn_struct_free_f AccessResult_free;
asn_struct_print_f AccessResult_print;
asn_constr_check_f AccessResult_constraint;
ber_type_decoder_f AccessResult_decode_ber;
der_type_encoder_f AccessResult_encode_der;
xer_type_decoder_f AccessResult_decode_xer;
xer_type_encoder_f AccessResult_encode_xer;
per_type_decoder_f AccessResult_decode_uper;
per_type_encoder_f AccessResult_encode_uper;
per_type_decoder_f AccessResult_decode_aper;
per_type_encoder_f AccessResult_encode_aper;

#ifdef __cplusplus
}
#endif

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