Lines Matching defs:tic

160 _ti_store_extra(TIC *tic, int wrn, char *id, char type, char flag, short num,
165 _DIAGASSERT(tic != NULL);
168 if (_ti_find_extra(&tic->extras, id) != NULL)
173 tic->name, id);
180 dowarn(flags, "%s: %s: cap name is too long", tic->name, id);
184 if (!_ti_grow_tbuf(&tic->extras,
187 le16enc(tic->extras.buf + tic->extras.bufpos, l);
188 tic->extras.bufpos += sizeof(uint16_t);
189 memcpy(tic->extras.buf + tic->extras.bufpos, id, l);
190 tic->extras.bufpos += l;
191 tic->extras.buf[tic->extras.bufpos++] = type;
194 tic->extras.buf[tic->extras.bufpos++] = flag;
197 le16enc(tic->extras.buf + tic->extras.bufpos, num);
198 tic->extras.bufpos += sizeof(uint16_t);
201 le16enc(tic->extras.buf + tic->extras.bufpos, strl);
202 tic->extras.bufpos += sizeof(uint16_t);
203 memcpy(tic->extras.buf + tic->extras.bufpos, str, strl);
204 tic->extras.bufpos += strl;
207 tic->extras.entries++;
212 _ti_flatten(uint8_t **buf, const TIC *tic)
218 _DIAGASSERT(tic != NULL);
220 len = strlen(tic->name) + 1;
221 if (tic->alias == NULL)
224 alen = strlen(tic->alias) + 1;
225 if (tic->desc == NULL)
228 dlen = strlen(tic->desc) + 1;
233 (sizeof(uint16_t) * 2) + tic->flags.bufpos +
234 (sizeof(uint16_t) * 2) + tic->nums.bufpos +
235 (sizeof(uint16_t) * 2) + tic->strs.bufpos +
236 (sizeof(uint16_t) * 2) + tic->extras.bufpos;
245 memcpy(cap, tic->name, len);
250 if (tic->alias != NULL) {
251 memcpy(cap, tic->alias, alen);
256 if (tic->desc != NULL) {
257 memcpy(cap, tic->desc, dlen);
261 if (tic->flags.entries == 0) {
265 le16enc(cap, (tic->flags.bufpos + sizeof(uint16_t)));
267 le16enc(cap, tic->flags.entries);
269 memcpy(cap, tic->flags.buf, tic->flags.bufpos);
270 cap += tic->flags.bufpos;
273 if (tic->nums.entries == 0) {
277 le16enc(cap, (tic->nums.bufpos + sizeof(uint16_t)));
279 le16enc(cap, tic->nums.entries);
281 memcpy(cap, tic->nums.buf, tic->nums.bufpos);
282 cap += tic->nums.bufpos;
285 if (tic->strs.entries == 0) {
289 le16enc(cap, (tic->strs.bufpos + sizeof(uint16_t)));
291 le16enc(cap, tic->strs.entries);
293 memcpy(cap, tic->strs.buf, tic->strs.bufpos);
294 cap += tic->strs.bufpos;
297 if (tic->extras.entries == 0) {
301 le16enc(cap, (tic->extras.bufpos + sizeof(uint16_t)));
303 le16enc(cap, tic->extras.entries);
305 memcpy(cap, tic->extras.buf, tic->extras.bufpos);
306 cap += tic->extras.bufpos;
455 TIC *tic;
471 tic = calloc(sizeof(*tic), 1);
472 if (tic == NULL)
478 tic->name = strdup(name);
479 if (tic->name == NULL)
482 tic->alias = strdup(alias);
483 if (tic->alias == NULL)
487 tic->desc = strdup(desc);
488 if (tic->desc == NULL)
514 _ti_find_cap(&tic->strs, 's', ind) != NULL)
519 if (encode_string(tic->name, token,
524 tic->name, token);
529 tic->name, token);
534 _ti_store_extra(tic, 1, token, 's', -1, -2,
537 if (!_ti_grow_tbuf(&tic->strs,
540 le16enc(tic->strs.buf + tic->strs.bufpos, ind);
541 tic->strs.bufpos += sizeof(uint16_t);
542 le16enc(tic->strs.buf + tic->strs.bufpos,
544 tic->strs.bufpos += sizeof(uint16_t);
545 memcpy(tic->strs.buf + tic->strs.bufpos,
547 tic->strs.bufpos += buf.bufpos;
548 tic->strs.entries++;
560 _ti_find_cap(&tic->nums, 'n', ind) != NULL)
566 tic->name, token);
571 tic->name, token);
576 _ti_store_extra(tic, 1, token, 'n', -1,
579 if (_ti_grow_tbuf(&tic->nums,
582 le16enc(tic->nums.buf + tic->nums.bufpos, ind);
583 tic->nums.bufpos += sizeof(uint16_t);
584 le16enc(tic->nums.buf + tic->nums.bufpos, num);
585 tic->nums.bufpos += sizeof(uint16_t);
586 tic->nums.entries++;
600 if (_ti_find_cap(&tic->nums, 'n', ind) != NULL)
602 if (_ti_grow_tbuf(&tic->nums,
605 le16enc(tic->nums.buf + tic->nums.bufpos, ind);
606 tic->nums.bufpos += sizeof(uint16_t);
607 le16enc(tic->nums.buf + tic->nums.bufpos,
609 tic->nums.bufpos += sizeof(uint16_t);
610 tic->nums.entries++;
613 if (_ti_find_cap(&tic->strs, 's', ind) != NULL)
615 if (_ti_grow_tbuf(&tic->strs,
618 le16enc(tic->strs.buf + tic->strs.bufpos, ind);
619 tic->strs.bufpos += sizeof(uint16_t);
620 le16enc(tic->strs.buf + tic->strs.bufpos, 0);
621 tic->strs.bufpos += sizeof(uint16_t);
622 tic->strs.entries++;
627 _ti_store_extra(tic, 1, token, 'f', flag, 0, NULL, 0,
629 else if (_ti_find_cap(&tic->flags, 'f', ind) == NULL) {
630 if (_ti_grow_tbuf(&tic->flags, sizeof(uint16_t) + 1)
633 le16enc(tic->flags.buf + tic->flags.bufpos, ind);
634 tic->flags.bufpos += sizeof(uint16_t);
635 tic->flags.buf[tic->flags.bufpos++] = flag;
636 tic->flags.entries++;
641 return tic;
645 _ti_freetic(tic);
650 _ti_freetic(TIC *tic)
653 if (tic != NULL) {
654 free(tic->name);
655 free(tic->alias);
656 free(tic->desc);
657 free(tic->extras.buf);
658 free(tic->flags.buf);
659 free(tic->nums.buf);
660 free(tic->strs.buf);
661 free(tic);