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:
John Kessenich 2013-02-22 18:43:31 +00:00
parent 6f045f3e72
commit d7f9406f82
4 changed files with 71 additions and 71 deletions

View File

@ -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); }

View File

@ -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:

View File

@ -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 {

View File

@ -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.
//