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

#ifndef	_PrivateIE_ID_H_
#define	_PrivateIE_ID_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeInteger.h>
#include <OBJECT_IDENTIFIER.h>
#include <constr_CHOICE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum PrivateIE_ID_PR {
	PrivateIE_ID_PR_NOTHING,	/* No components present */
	PrivateIE_ID_PR_local,
	PrivateIE_ID_PR_global
} PrivateIE_ID_PR;

/* PrivateIE-ID */
typedef struct PrivateIE_ID {
	PrivateIE_ID_PR present;
	union PrivateIE_ID_u {
		long	 local;
		OBJECT_IDENTIFIER_t	 global;
	} choice;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PrivateIE_ID_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID;

#ifdef __cplusplus
}
#endif

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