int SkStrLCSearch(const char*const* base, int count, const char target[], size_t len, size_t elemSize) { SkASSERT(target); SkAutoAsciiToLC tolc(target, len); return SkStrSearch(base, count, tolc.lc(), len, elemSize); }
SkDisplayTypes SkDisplayType::GetType(SkAnimateMaker* maker, const char match[], size_t len ) { int index = SkStrSearch(&gTypeNames[0].fName, kTypeNamesSize, match, len, sizeof(gTypeNames[0])); if (index >= 0 && index < kTypeNamesSize) return gTypeNames[index].fType; SkExtras** end = maker->fExtras.end(); for (SkExtras** extraPtr = maker->fExtras.begin(); extraPtr < end; extraPtr++) { SkDisplayTypes result = (*extraPtr)->getType(match, len); if (result != SkType_Unknown) return result; } return (SkDisplayTypes) -1; }
// Find named memberinfo const SkMemberInfo* SkMemberInfo::Find(const SkMemberInfo info[], int count, const char** matchPtr) { const char* match = *matchPtr; if (info->fType == SkType_BaseClassInfo) { const SkMemberInfo* inherited = (SkMemberInfo*) info->fName; const SkMemberInfo* result = SkMemberInfo::Find(inherited, info->fCount, matchPtr); if (result != NULL) return result; if (--count == 0) return NULL; info++; } SkASSERT(info->fName); SkASSERT(info->fType != SkType_BaseClassInfo); int index = SkStrSearch(&info->fName, count, match, sizeof(*info)); if (index < 0 || index >= count) return NULL; return &info[index]; }
int SkStrSearch(const char*const* base, int count, const char target[], size_t elemSize) { return SkStrSearch(base, count, target, strlen(target), elemSize); }
SkSVGTypes SkSVGParser::GetType(const char match[], size_t len ) { int index = SkStrSearch(&gSVGTypeNames[0].fName, kSVGTypeNamesSize, match, len, sizeof(gSVGTypeNames[0])); return index >= 0 && index < kSVGTypeNamesSize ? gSVGTypeNames[index].fType : (SkSVGTypes) -1; }