static inline const UnicodeRowEntry * getUnicodeRowEntry (TextTable *table, wchar_t character) { const UnicodePlaneEntry *plane = getUnicodePlaneEntry(table, character); if (plane) { TextTableOffset offset = plane->rows[UNICODE_ROW_NUMBER(character)]; if (offset) return getTextTableItem(table, offset); } return NULL; }
static DataOffset getUnicodeRowOffset (TextTableData *ttd, wchar_t character, int allocate) { DataOffset planeOffset = getUnicodePlaneOffset(ttd, character, allocate); if (!planeOffset) return 0; { UnicodePlaneEntry *plane = getDataItem(ttd->area, planeOffset); unsigned int rowNumber = UNICODE_ROW_NUMBER(character); DataOffset rowOffset = plane->rows[rowNumber]; if (!rowOffset && allocate) { if (!allocateDataItem(ttd->area, &rowOffset, sizeof(UnicodeRowEntry), __alignof__(UnicodeRowEntry))) return 0; plane = getDataItem(ttd->area, planeOffset); plane->rows[rowNumber] = rowOffset; } return rowOffset; } }