# This file contains dependency information for the asn1c compiler's skeletons.
# Feel free to edit this file.
# The format is like this:
# 	<filename> <dependent-file> ...
#
# $Id$
#

ANY.h ANY.c
BMPString.h BMPString.c
BOOLEAN.h BOOLEAN.c
ENUMERATED.h ENUMERATED.c INTEGER.h
GeneralString.h GeneralString.c
GeneralizedTime.h GeneralizedTime.c
GraphicString.h GraphicString.c
IA5String.h IA5String.c
INTEGER.h INTEGER.c
ISO646String.h ISO646String.c
NULL.h NULL.c BOOLEAN.h
NativeEnumerated.h NativeEnumerated.c NativeInteger.h
NativeInteger.h NativeInteger.c INTEGER.h
NativeReal.h NativeReal.c REAL.h
NumericString.h NumericString.c
OBJECT_IDENTIFIER.h OBJECT_IDENTIFIER.c INTEGER.h
ObjectDescriptor.h ObjectDescriptor.c GraphicString.h
PrintableString.h PrintableString.c
REAL.h REAL.c INTEGER.h
RELATIVE-OID.h RELATIVE-OID.c OBJECT_IDENTIFIER.h
T61String.h T61String.c
TeletexString.h TeletexString.c	
UTCTime.h UTCTime.c GeneralizedTime.h
UTF8String.h UTF8String.c
UniversalString.h UniversalString.c
VideotexString.h VideotexString.c
VisibleString.h VisibleString.c
asn_SEQUENCE_OF.h asn_SEQUENCE_OF.c asn_SET_OF.h
asn_SET_OF.h asn_SET_OF.c
constr_CHOICE.h constr_CHOICE.c
constr_SEQUENCE.h constr_SEQUENCE.c
constr_SEQUENCE_OF.h constr_SEQUENCE_OF.c asn_SEQUENCE_OF.h constr_SET_OF.h
constr_SET.h constr_SET.c
constr_SET_OF.h constr_SET_OF.c asn_SET_OF.h

COMMON-FILES:	# This is a special section
asn_application.h
asn_internal.h
asn_codecs.h
asn_system.h			# Platform-dependent types
OCTET_STRING.h OCTET_STRING.c	# This one is used too widely
BIT_STRING.h BIT_STRING.c	# This one is necessary for the above one
asn_codecs_prim.c asn_codecs_prim.h	# enc/decoders for primitive types
ber_tlv_length.h ber_tlv_length.c	# BER TLV L (length)
ber_tlv_tag.h ber_tlv_tag.c	# BER TLV T (tag)
ber_decoder.h ber_decoder.c	# BER decoder support code
der_encoder.h der_encoder.c	# DER encoder support code
constr_TYPE.h constr_TYPE.c	# Description of a type
constraints.h constraints.c	# Subtype constraints support
xer_support.h xer_support.c	# XML parsing
xer_decoder.h xer_decoder.c	# XER decoding support
xer_encoder.h xer_encoder.c	# XER encoding support
