#ifndef ASN1C_FDEPS_H #define ASN1C_FDEPS_H typedef struct { char *filename; int lineno; int column; } asn1c_dep_filename; /* * Format: * [ ...] */ typedef struct { asn1c_dep_filename **deps; size_t deps_count; } asn1c_dep_chain; /* * A single dependency chain, marked with the usage tag and activation tag. */ typedef struct { enum asn1c_dep_section { FDEP_IGNORE = 0, /* Section is not used */ FDEP_DEFAULT = (1 << 1), /* Default dependency list */ FDEP_REFERRED = (1 << 2), /* Dynamic list of dependencies */ FDEP_CONVERTER = (1 << 3), /* Name of the file with int main() */ FDEP_COMMON_FILES = (1 << 4), /* Section for mandatory dependencies */ FDEP_CODEC_OER = (1 << 5), /* Use contents only if -gen-OER */ FDEP_CODEC_PER = (1 << 6), /* Use contents only if -gen-PER */ } section; /* Some file refers to it */ /* Whether this chain is alive and has to be present in the output */ struct { int active; char *by; } activated; asn1c_dep_chain *chain; } asn1c_tagged_dep_chain; typedef struct { asn1c_tagged_dep_chain **chains; size_t chains_count; } asn1c_dep_chainset; asn1c_dep_chainset *asn1c_read_file_dependencies(arg_t *arg, const char *datadir); /* Data may be a filename or an "#include <>" string. */ void asn1c_activate_dependency(asn1c_dep_chainset *deps, const char *data, const char *by); asn1c_dep_chain *asn1c_deps_flatten(const asn1c_dep_chainset *deps, enum asn1c_dep_section); void asn1c_dep_chain_free(asn1c_dep_chain *); void asn1c_dep_chainset_free(asn1c_dep_chainset *); #endif /* ASN1C_FDEPS_H */