# 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
BIT_STRING.h BIT_STRING.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_types.h
OCTET_STRING.h OCTET_STRING.c	# This one is used too widely
ber_decoder.h ber_decoder.c
ber_codec_prim.c ber_codec_prim.h
ber_tlv_length.h ber_tlv_length.c
ber_tlv_tag.h ber_tlv_tag.c
constr_TYPE.h constr_TYPE.c
constraints.h constraints.c
der_encoder.h der_encoder.c
xer_encoder.h xer_encoder.c
