7 #ifndef _SYMBOL_TABLE_INCLUDED_
8 #define _SYMBOL_TABLE_INCLUDED_
59 DISALLOW_COPY_AND_ASSIGN(
TSymbol);
62 unsigned int uniqueId;
100 if (unionArray == constArray)
104 unionArray = constArray;
148 return TString(mangledName.c_str(), mangledName.find_first_of(
'('));
153 parameters.push_back(p);
175 TParamList parameters;
202 return result.second;
212 tLevel::const_iterator it =
level.find(name);
213 if (it ==
level.end())
221 return level.begin();
251 while (
table.size() > 1)
294 function->addParameter(param1);
299 function->addParameter(param2);
305 function->addParameter(param3);
318 }
while (symbol == 0 && level >= 0);
321 *builtIn = level == 0;
329 return table[0]->find(name);
343 table[0]->relateToOperator(name, op);
346 table[0]->relateToExtension(name, ext);
358 int indexOfLastElement =
static_cast<int>(
precisionStack.size()) - 1;
368 PrecisionStackLevel::iterator it;
384 std::vector<TSymbolTableLevel*>
table;
390 #endif // _SYMBOL_TABLE_INCLUDED_
virtual void dump(TInfoSink &infoSink) const
GLenum GLsizei GLenum GLenum const GLvoid * table
const TType & getReturnType() const
void relateToExtension(const char *name, const TString &ext)
std::map< TBasicType, TPrecision > PrecisionStackLevel
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
static TString mangleName(const TString &name)
ConstantUnion * getConstPointer() const
std::vector< TSymbolTableLevel * > table
bool IsSampler(TBasicType type)
void relateToOperator(TOperator o)
virtual void dump(TInfoSink &infoSink) const
TSymbolTableLevel * getGlobalLevel()
bool insertBuiltIn(TType *rvalue, const char *name, TType *ptype1, TType *ptype2=0, TType *ptype3=0)
virtual bool isFunction() const
void relateToExtension(const TString &ext)
bool insert(TSymbol &symbol)
EGLImageKHR EGLint * name
tLevel::const_iterator const_iterator
std::vector< PrecisionStackLevel > precisionStack
std::pair< tLevel::iterator, bool > tInsertResult
virtual bool isVariable() const
bool insert(TSymbol &symbol)
TSymbolTableLevel * getOuterLevel()
size_t getParamCount() const
bool insertConstInt(const char *name, int value)
const TString & getName() const
TFunction(const TString *name, TType &retType, TOperator tOp=EOpNull)
TSymbol * findBuiltIn(const TString &name)
TMap< TString, TSymbol * > tLevel
bool setDefaultPrecision(const TPublicType &type, TPrecision prec)
const tLevel::value_type tLevelPair
TString * NewPoolTString(const char *s)
TVariable(const TString *name, const TType &t, bool uT=false)
void dump(TInfoSink &infoSink) const
void addParameter(TParameter &p)
void shareConstPointer(ConstantUnion *constArray)
const TParameter & getParam(size_t i) const
const_iterator end() const
std::basic_string< char, std::char_traits< char >, TStringAllocator > TString
const TString & getExtension() const
virtual bool isFunction() const
POOL_ALLOCATOR_NEW_DELETE()
TPrecision getDefaultPrecision(TBasicType type)
void relateToOperator(const char *name, TOperator op)
void relateToExtension(const char *name, const TString &ext)
const TString & getMangledName() const
const_iterator begin() const
EGLSurface EGLint void ** value
bool insert(const TString &name, TSymbol &symbol)
static TString unmangleName(const TString &mangledName)
void dump(TInfoSink &infoSink) const
virtual const TString & getMangledName() const
virtual bool isVariable() const
POOL_ALLOCATOR_NEW_DELETE()
void relateToOperator(const char *name, TOperator op)
TSymbol(const TString *n)
void setQualifier(TQualifier qualifier)
const TString & getMangledName() const
ConstantUnion * getConstPointer()
const TType & getType() const
TSymbol * find(const TString &name, bool *builtIn=0, bool *sameScope=0)
TOperator getBuiltInOp() const
virtual void dump(TInfoSink &infoSink) const =0
TSymbol * find(const TString &name) const