symoid
char *symname = NULL, *symoid = NULL;
if (schema_lex(schema, &symoid) != STRING)
if (is_oidstr(symoid)) {
oid = symoid;
symoid = NULL;
} else if ((oid = lookup_symbolic_oid(schema, symoid)) == NULL)
free(symoid);
free(symoid);
struct symoid *symoid, find;
symoid = RB_FIND(symoid_tree, &schema->symbolic_oids, &find);
if (symoid == NULL)
return strdup(symoid->oid);
sz = strlen(symoid->oid) + 1 + strlen(colon + 1) + 1;
strlcpy(oid, symoid->oid, sz);
static struct symoid *
struct symoid *symoid, find;
symoid = RB_FIND(symoid_tree, &schema->symbolic_oids, &find);
if (symoid == NULL) {
symoid = calloc(1, sizeof(*symoid));
if (symoid == NULL) {
symoid->name = name;
RB_INSERT(symoid_tree, &schema->symbolic_oids, symoid);
free(symoid->oid);
symoid->oid = oid;
return symoid;
symoid_cmp(struct symoid *a, struct symoid *b)
RB_GENERATE(symoid_tree, symoid, link, symoid_cmp);
RB_ENTRY(symoid) link;
RB_HEAD(symoid_tree, symoid);
RB_PROTOTYPE(symoid_tree, symoid, link, symoid_cmp);
char *symoid = NULL;
(symoid = lookup_symbolic_oid(schema, value)) != NULL) {
free(symoid);