const TType *TCache::getType(TBasicType basicType, TPrecision precision, TQualifier qualifier, unsigned char primarySize, unsigned char secondarySize) { TypeKey key(basicType, precision, qualifier, primarySize, secondarySize); auto it = sCache->mTypes.find(key); if (it != sCache->mTypes.end()) { return it->second; } TScopedAllocator scopedAllocator(&sCache->mAllocator); TType *type = new TType(basicType, precision, qualifier, primarySize, secondarySize); type->realize(); sCache->mTypes.insert(std::make_pair(key, type)); return type; }