TString MapLongVariableNames::mapGlobalLongName(const TString& name) { ASSERT(mGlobalMap); const char* mappedName = mGlobalMap->Find(name.c_str()); if (mappedName != NULL) return mappedName; size_t id = mGlobalMap->Size(); TString rt = mapLongName(id, name, true); mGlobalMap->Insert(name.c_str(), rt.c_str()); return rt; }
TString MapLongVariableNames::mapVaryingLongName(const TString& name) { TMap<TString, TString>::const_iterator it = mVaryingLongNameMap.find(name); if (it != mVaryingLongNameMap.end()) return (*it).second; int id = mVaryingLongNameMap.size(); TString mappedName = mapLongName(id, name, true); mVaryingLongNameMap.insert( TMap<TString, TString>::value_type(name, mappedName)); return mappedName; }
void MapLongVariableNames::visitSymbol(TIntermSymbol* symbol) { ASSERT(symbol != NULL); if (symbol->getSymbol().size() > MAX_IDENTIFIER_NAME_SIZE) { switch (symbol->getQualifier()) { case EvqVaryingIn: case EvqVaryingOut: case EvqInvariantVaryingIn: case EvqInvariantVaryingOut: symbol->setSymbol( mapVaryingLongName(symbol->getSymbol())); break; default: symbol->setSymbol( mapLongName(symbol->getId(), symbol->getSymbol(), false)); break; }; } }