Home | History | Annotate | Download | only in tic

Lines Matching defs:term

59 #include <term.h>
65 typedef struct term {
66 STAILQ_ENTRY(term) next;
70 struct term *base_term;
71 } TERM;
72 static STAILQ_HEAD(, term) terms = STAILQ_HEAD_INITIALIZER(terms);
101 save_term(struct cdbw *db, TERM *term)
105 size_t slen = strlen(term->name) + 1;
107 if (term->base_term != NULL) {
113 _ti_encode_32(&cap, term->base_term->id);
114 _ti_encode_count_str(&cap, term->name, slen);
115 if (cdbw_put(db, term->name, slen, buf, len))
121 len = _ti_flatten(&buf, term->tic);
125 if (cdbw_put_data(db, buf, len, &term->id))
127 if (cdbw_put_key(db, term->name, slen, term->id))
133 static TERM *
141 return elemp ? (TERM *)elemp->data : NULL;
144 static TERM *
148 TERM *term;
153 term = find_term(lname);
155 if (term == NULL)
156 term = find_term(name);
157 return term;
160 static TERM *
161 store_term(const char *name, TERM *base_term)
163 TERM *term;
166 term = ecalloc(1, sizeof(*term));
167 term->name = estrdup(name);
168 STAILQ_INSERT_TAIL(&terms, term, next);
170 elem.data = term;
173 term->base_term = base_term;
179 return term;
183 alias_terms(TERM *term)
188 if (term->tic->alias == NULL)
191 alias = p = estrdup(term->tic->alias);
201 " term %s", term->tic->name, p);
203 store_term(p, term);
213 TERM *term;
236 term = store_term(tic->name, NULL);
237 term->tic = tic;
238 alias_terms(term);
349 TERM *nrterm = find_newest_term(rtic->name);
350 TERM *nuterm = find_newest_term(utic->name);
351 TERM *term;
389 term = store_term(tic->name, NULL);
390 if (term == NULL)
393 term->tic = tic;
394 alias_terms(term);
417 TERM *term, *uterm;
421 STAILQ_FOREACH(term, &terms, next) {
422 if (term->base_term != NULL)
424 rtic = term->tic;
465 /* If we need to merge in a term that requires
466 * this term to be promoted, we need to duplicate
467 * this term, promote it and append it to our list. */
507 TERM *term;
523 term = find_newest_term(argv[i]);
524 if (term == NULL) {
528 if (term->base_term != NULL) {
533 free(term->tic->alias);
534 term->tic->alias = NULL;
535 len = _ti_flatten(&buf, term->tic);
574 TERM *term;
582 STAILQ_FOREACH(term, &terms, next)
583 save_term(db, term);
615 struct term *term;
713 while ((term = STAILQ_FIRST(&terms)) != NULL) {
715 _ti_freetic(term->tic);
716 free(term->name);
717 free(term);