const void *FontTableCache::find(LETag tableTag, le_uint32 *tableSize) const { int lo = 0, hi = fTableCacheCurr; while (lo < hi) { int i = (lo + hi) >> 1; const FontTableCacheEntry *e = fTableCache + i; if (e->tag < tableTag) lo = i + 1; else if (e->tag > tableTag) hi = i; else { if (tableSize != NULL) *tableSize = e->size; return e->table; } } le_uint32 length; const void *table = readFontTable(tableTag, length); ((FontTableCache *) this)->add(tableTag, table, length); if (tableSize != NULL) *tableSize = length; return table; }
const void *FontTableCache::find(LETag tableTag) const { for (int i = 0; i < fTableCacheCurr; i += 1) { if (fTableCache[i].tag == tableTag) { return fTableCache[i].table; } } const void *table = readFontTable(tableTag); ((FontTableCache *) this)->add(tableTag, table); return table; }
const void *FontTableCache::find(LETag tableTag, size_t &length) const { for (int i = 0; i < fTableCacheCurr; i += 1) { if (fTableCache[i].tag == tableTag) { length = fTableCache[i].length; return fTableCache[i].table; } } const void *table = readFontTable(tableTag, length); ((FontTableCache *) this)->add(tableTag, table, length); return table; }