2 * Miscellaneous functions necessary for several other modules.
4 #ifndef ASN1FIX_RETRIEVE_H
5 #define ASN1FIX_RETRIEVE_H
8 * Simple search for the label in the descendants of the given node.
12 asn1p_expr_t *asn1f_lookup_child(asn1p_expr_t *tc, const char *name);
15 * Return a module which contain a specified name, as stated in appropriate
16 * IMPORTS section of the current module (arg->mod).
19 * NULL/ESRCH: The name was not found in IMPORTS section.
20 * NULL/EPERM: The name was not found in EXPORTS section of the source module.
21 * Also, NULL with errno values defined by asn1f_lookup_module().
23 asn1p_module_t *asn1f_lookup_in_imports(arg_t *arg, asn1p_module_t *mod, const char *name);
26 * Return a module by its name or optional OID.
29 * NULL/ENOENT: No module was found by the specified name and oid
30 * NULL/ETOOMANYREFS: Several modules are matching the specified name and oid
32 asn1p_module_t *asn1f_lookup_module(arg_t *arg,
33 const char *module_name,
34 const asn1p_oid_t *module_oid);
37 * Return the reference to a destination of the given reference,
38 * symbol lookup. Not a recursive function.
40 asn1p_expr_t *asn1f_lookup_symbol(arg_t *arg, asn1p_expr_t *rhs_pspecs,
41 const asn1p_ref_t *ref);
44 * Recursively find the original type for the given expression.
46 * If the original specification defines
48 * Type1 ::= Type2 (1..5)
49 * Type3 ::= Type4 (2..7)
50 * Type4 ::= INTEGER (1..10)
51 * Then this function, given the the first expression as an argument,
52 * would return an expression for Type4.
53 * WARNING: No attempts are made to honor constraints at this moment.
55 asn1p_expr_t *asn1f_find_terminal_type(arg_t *arg, asn1p_expr_t *tc);
58 * Recursively find the original value for the given expression.
60 * If the original specification defines
62 * value Type2 ::= value2
64 * Then this function will return the expression for value2 if given
65 * the v as an argment.
67 asn1p_expr_t *asn1f_find_terminal_value(arg_t *arg, asn1p_expr_t *tc);
70 * Recursively find the original type with constraint for the given
73 asn1p_expr_t *asn1f_find_ancestor_type_with_PER_constraint(arg_t *arg, asn1p_expr_t *tc);
76 #endif /* ASN1FIX_RETRIEVE_H */