Rationalize locations of type string methods.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@20684 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
6f045f3e72
commit
d7f9406f82
@ -50,7 +50,8 @@ enum TSamplerDim {
|
||||
Esd3D,
|
||||
EsdCube,
|
||||
EsdRect,
|
||||
EsdBuffer
|
||||
EsdBuffer,
|
||||
EsdNumDims
|
||||
};
|
||||
|
||||
struct TSampler {
|
||||
@ -100,6 +101,37 @@ struct TSampler {
|
||||
ms == right.ms &&
|
||||
image == right.image;
|
||||
}
|
||||
|
||||
TString getString() const
|
||||
{
|
||||
TString s;
|
||||
|
||||
switch (type) {
|
||||
case EbtFloat: break;
|
||||
case EbtInt: s.append("i"); break;
|
||||
case EbtUint: s.append("u"); break;
|
||||
}
|
||||
if (image)
|
||||
s.append("image");
|
||||
else
|
||||
s.append("sampler");
|
||||
switch (dim) {
|
||||
case Esd1D: s.append("1D"); break;
|
||||
case Esd2D: s.append("2D"); break;
|
||||
case Esd3D: s.append("3D"); break;
|
||||
case EsdCube: s.append("Cube"); break;
|
||||
case EsdRect: s.append("Rect"); break;
|
||||
case EsdBuffer: s.append("Buffer"); break;
|
||||
}
|
||||
if (ms)
|
||||
s.append("MS");
|
||||
if (arrayed)
|
||||
s.append("Array");
|
||||
if (shadow)
|
||||
s.append("Shadow");
|
||||
|
||||
return s;
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
@ -385,8 +417,43 @@ public:
|
||||
default: return "unknown type";
|
||||
}
|
||||
}
|
||||
TString getCompleteString() const;
|
||||
TString getCompleteTypeString() const;
|
||||
|
||||
TString TType::getCompleteString() const
|
||||
{
|
||||
const int maxSize = 100;
|
||||
char buf[maxSize];
|
||||
char *p = &buf[0];
|
||||
char *end = &buf[maxSize];
|
||||
|
||||
if (qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal)
|
||||
p += snprintf(p, end - p, "%s ", getStorageQualifierString());
|
||||
if (arraySizes) {
|
||||
if (arraySizes->front() == 0)
|
||||
p += snprintf(p, end - p, "unsized array of ");
|
||||
else
|
||||
p += snprintf(p, end - p, "%d-element array of ", arraySizes->front());
|
||||
}
|
||||
if (qualifier.precision != EpqNone)
|
||||
p += snprintf(p, end - p, "%s ", getPrecisionQualifierString());
|
||||
if (matrixCols > 0)
|
||||
p += snprintf(p, end - p, "%dX%d matrix of ", matrixCols, matrixRows);
|
||||
else if (vectorSize > 1)
|
||||
p += snprintf(p, end - p, "%d-component vector of ", vectorSize);
|
||||
|
||||
*p = 0;
|
||||
TString s(buf);
|
||||
s.append(getCompleteTypeString());
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
TString getCompleteTypeString() const
|
||||
{
|
||||
if (type == EbtSampler)
|
||||
return sampler.getString();
|
||||
else
|
||||
return getBasicString(type);
|
||||
}
|
||||
|
||||
const char* getBasicString() const { return TType::getBasicString(type); }
|
||||
const char* getStorageQualifierString() const { return ::getStorageQualifierString(qualifier.storage); }
|
||||
|
@ -315,12 +315,9 @@ public:
|
||||
virtual int getVectorSize() const { return type.getVectorSize(); }
|
||||
virtual int getMatrixCols() const { return type.getMatrixCols(); }
|
||||
virtual int getMatrixRows() const { return type.getMatrixRows(); }
|
||||
//virtual int getSize() const { return type.getInstanceSize(); }
|
||||
virtual bool isMatrix() const { return type.isMatrix(); }
|
||||
virtual bool isArray() const { return type.isArray(); }
|
||||
virtual bool isVector() const { return type.isVector(); }
|
||||
const char* getBasicString() const { return type.getBasicString(); }
|
||||
const char* getStorageQualifierString() const { return type.getStorageQualifierString(); }
|
||||
TString getCompleteString() const { return type.getCompleteString(); }
|
||||
|
||||
protected:
|
||||
|
@ -55,7 +55,7 @@ TParseContext::TParseContext(TSymbolTable& symt, TIntermediate& interm, int v, E
|
||||
defaultPrecision[EbtInt] = EpqHigh;
|
||||
defaultPrecision[EbtFloat] = EpqHigh;
|
||||
defaultPrecision[EbtSampler] = EpqLow;
|
||||
//?? what about different sampler types?
|
||||
// TODO: functionality: need default precisions per sampler type
|
||||
break;
|
||||
case EShLangFragment:
|
||||
defaultPrecision[EbtInt] = EpqMedium;
|
||||
@ -670,7 +670,6 @@ bool TParseContext::structQualifierErrorCheck(int line, const TPublicType& pType
|
||||
|
||||
void TParseContext::setDefaultPrecision(int line, TBasicType type, TPrecisionQualifier qualifier)
|
||||
{
|
||||
//?? what about different sampler types?
|
||||
if (type == EbtSampler || type == EbtInt || type == EbtFloat) {
|
||||
defaultPrecision[type] = qualifier;
|
||||
} else {
|
||||
|
@ -55,69 +55,6 @@ public:
|
||||
TInfoSink& infoSink;
|
||||
};
|
||||
|
||||
TString TType::getCompleteTypeString() const
|
||||
{
|
||||
TString s;
|
||||
|
||||
if (type == EbtSampler) {
|
||||
switch (sampler.type) {
|
||||
case EbtFloat: break;
|
||||
case EbtInt: s.append("i"); break;
|
||||
case EbtUint: s.append("u"); break;
|
||||
}
|
||||
if (sampler.image)
|
||||
s.append("image");
|
||||
else
|
||||
s.append("sampler");
|
||||
switch (sampler.dim) {
|
||||
case Esd1D: s.append("1D"); break;
|
||||
case Esd2D: s.append("2D"); break;
|
||||
case Esd3D: s.append("3D"); break;
|
||||
case EsdCube: s.append("Cube"); break;
|
||||
case EsdRect: s.append("Rect"); break;
|
||||
case EsdBuffer: s.append("Buffer"); break;
|
||||
}
|
||||
if (sampler.arrayed)
|
||||
s.append("Array");
|
||||
if (sampler.shadow)
|
||||
s.append("Shadow");
|
||||
if (sampler.ms)
|
||||
s.append("MS");
|
||||
} else
|
||||
s.append(getBasicString());
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
TString TType::getCompleteString() const
|
||||
{
|
||||
const int maxSize = 100;
|
||||
char buf[maxSize];
|
||||
char *p = &buf[0];
|
||||
char *end = &buf[maxSize];
|
||||
|
||||
if (qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal)
|
||||
p += snprintf(p, end - p, "%s ", getStorageQualifierString());
|
||||
if (arraySizes) {
|
||||
if (arraySizes->front() == 0)
|
||||
p += snprintf(p, end - p, "unsized array of ");
|
||||
else
|
||||
p += snprintf(p, end - p, "%d-element array of ", arraySizes->front());
|
||||
}
|
||||
if (qualifier.precision != EpqNone)
|
||||
p += snprintf(p, end - p, "%s ", getPrecisionQualifierString());
|
||||
if (matrixCols > 0)
|
||||
p += snprintf(p, end - p, "%dX%d matrix of ", matrixCols, matrixRows);
|
||||
else if (vectorSize > 1)
|
||||
p += snprintf(p, end - p, "%d-component vector of ", vectorSize);
|
||||
|
||||
*p = 0;
|
||||
TString s(buf);
|
||||
s.append(getCompleteTypeString());
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
//
|
||||
// Helper functions for printing, not part of traversing.
|
||||
//
|
||||
|
Loading…
x
Reference in New Issue
Block a user