mirror of https://gerrit.osmocom.org/asn1c
62 lines
1.8 KiB
C
62 lines
1.8 KiB
C
#ifndef ASN1C_FDEPS_H
|
|
#define ASN1C_FDEPS_H
|
|
|
|
typedef struct {
|
|
char *filename;
|
|
int lineno;
|
|
int column;
|
|
} asn1c_dep_filename;
|
|
|
|
|
|
/*
|
|
* Format:
|
|
* <observed-name> [<dependent-name> ...]
|
|
*/
|
|
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 */
|