void Uint64Array_appendIfAbsent_(Uint64Array *self, uint64_t v) { if (!Uint64Array_contains_(self, v)) { Uint64Array_append_(self, v); } }
Uint64Array *IoTagDB_tagArrayForTagNames_(IoTagDB *self, IoMessage *m, IoList *tagNames) { TagDB *tdb = DATA(self); Uint64Array *tags = Uint64Array_new(); int i; for (i = 0; i < IoList_rawSize(tagNames); i ++) { IoSeq *tagName = IoList_rawAt_(tagNames, i); symbolid_t keyid; IOASSERT(ISSEQ(tagName), "tag names must be Sequences"); keyid = TagDB_idForSymbol_size_(tdb, CSTRING(tagName), IoSeq_rawSize(tagName)); Uint64Array_append_(tags, keyid); /* { Datum *keyDatum = TagDB_symbolForId_(tdb, keyid); printf("%s -> %i && ", CSTRING(tagName), (int)keyid); printf("%i -> %s\n", (int)keyid, (char *)(keyDatum->data)); Datum_free(keyDatum); } */ } return tags; }