本文整理汇总了C++中UlamType::getUlamTypeNameBrief方法的典型用法代码示例。如果您正苦于以下问题:C++ UlamType::getUlamTypeNameBrief方法的具体用法?C++ UlamType::getUlamTypeNameBrief怎么用?C++ UlamType::getUlamTypeNameBrief使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UlamType
的用法示例。
在下文中一共展示了UlamType::getUlamTypeNameBrief方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: printPostfixValuesOfVariableDeclarations
// replaces NodeTypedef:printPostfix to learn the values of Class' storage in center site
void SymbolTypedef::printPostfixValuesOfVariableDeclarations(File * fp, s32 slot, u32 startpos, ULAMCLASSTYPE classtype)
{
UTI tuti = getUlamTypeIdx();
UlamKeyTypeSignature tkey = m_state.getUlamKeyTypeSignatureByIndex(tuti);
UlamType * tut = m_state.getUlamTypeByIndex(tuti);
fp->write(" typedef");
fp->write(" ");
if(tut->getUlamTypeEnum() != Class)
fp->write(tkey.getUlamKeyTypeSignatureNameAndBitSize(&m_state).c_str());
else
fp->write(tut->getUlamTypeNameBrief().c_str());
fp->write(" ");
fp->write(m_state.m_pool.getDataAsString(getId()).c_str());
s32 arraysize = m_state.getArraySize(tuti);
if(arraysize > NONARRAYSIZE)
{
fp->write("[");
fp->write_decimal(arraysize);
fp->write("]");
}
else if(arraysize == UNKNOWNSIZE)
{
fp->write("[UNKNOWN]");
}
fp->write("; ");
} //printPostfixValuesOfVariableDeclarations
示例2: printPostfix
void NodeTypedef::printPostfix(File * fp)
{
assert(m_typedefSymbol);
if(m_typedefSymbol->getId() == m_state.m_pool.getIndexForDataString("Self")) return;
if(m_typedefSymbol->getId() == m_state.m_pool.getIndexForDataString("Super")) return;
UTI tuti = m_typedefSymbol->getUlamTypeIdx();
UlamKeyTypeSignature tkey = m_state.getUlamKeyTypeSignatureByIndex(tuti);
UlamType * tut = m_state.getUlamTypeByIndex(tuti);
fp->write(" typedef");
fp->write(" ");
if(tut->getUlamTypeEnum() != Class)
{
fp->write(tkey.getUlamKeyTypeSignatureNameAndBitSize(&m_state).c_str());
if(tut->isReference())
fp->write(" &"); //an array of refs as written, should be ref to an array.
}
else
fp->write(tut->getUlamTypeNameBrief().c_str());
fp->write(" ");
fp->write(getName());
s32 arraysize = m_state.getArraySize(tuti);
if(arraysize > NONARRAYSIZE)
{
fp->write("[");
fp->write_decimal(arraysize);
fp->write("]");
}
else if(arraysize == UNKNOWNSIZE)
{
fp->write("[UNKNOWN]");
}
fp->write("; ");
} //printPostfix
示例3: safeToCastTo
FORECAST NodeVarRef::safeToCastTo(UTI newType)
{
assert(m_nodeInitExpr);
UTI nuti = getNodeType();
//cast RHS if necessary and safe
//insure lval is same bitsize/arraysize
// if classes, safe to cast a subclass to any of its superclasses
FORECAST rscr = CAST_CLEAR;
if(UlamType::compare(nuti, newType, m_state) != UTIC_SAME)
{
UlamType * nut = m_state.getUlamTypeByIndex(nuti);
UlamType * newt = m_state.getUlamTypeByIndex(newType);
rscr = m_nodeInitExpr->safeToCastTo(nuti);
if((nut->getUlamTypeEnum() == Class))
{
if(rscr != CAST_CLEAR)
{
//e.g. error/t3792, error/t3616
std::ostringstream msg;
msg << "Incompatible class types ";
msg << nut->getUlamTypeClassNameBrief(nuti).c_str();
msg << " and ";
msg << m_state.getUlamTypeNameBriefByIndex(newType).c_str();
msg << " used to initialize reference '" << getName() <<"'";
if(rscr == CAST_HAZY)
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), DEBUG);
else
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), ERR);
}
}
else if(m_state.isAtom(nuti))
{
//atoms init from a quark ref could use .atomof
// "clear" when complete, not the same as "bad".
if(rscr != CAST_CLEAR)
{
std::ostringstream msg;
msg << "Reference atom variable " << getName() << "'s type ";
msg << nut->getUlamTypeNameBrief().c_str();
msg << ", and its initial value type ";
msg << m_state.getUlamTypeNameBriefByIndex(newType).c_str();
msg << ", are incompatible";
if(newt->isAltRefType() && newt->getUlamClassType() == UC_QUARK)
msg << "; .atomof may help";
if(rscr == CAST_HAZY)
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), DEBUG);
else
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), ERR);
}
}
else
{
//primitives must be EXACTLY the same size (for initialization);
// "clear" when complete, not the same as "bad". (t3614, t3694)
if(rscr != CAST_CLEAR)
{
std::ostringstream msg;
msg << "Reference variable " << getName() << "'s type ";
msg << m_state.getUlamTypeNameBriefByIndex(nuti).c_str();
msg << ", and its initial value type ";
msg << m_state.getUlamTypeNameBriefByIndex(newType).c_str();
msg << ", are incompatible";
if(rscr == CAST_HAZY)
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), DEBUG);
else
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), ERR);
}
else if(m_nodeInitExpr->isAConstant() && !m_state.isConstantRefType(nuti))
{
std::ostringstream msg;
msg << "Initial value of non-constant reference variable: " << getName();
msg << " is constant";
MSG(getNodeLocationAsString().c_str(), msg.str().c_str(), ERR); //error/t41255
rscr = CAST_BAD;
}
}
}
//okay to explicitly cast rhs to reference type, e.g. if(a is Foo) QW& qref = (Foo &) a;
return rscr;
} //safeToCastTo
示例4: printPostfixValuesOfVariableDeclarations
// replaces NodeVarDecl:printPostfix to learn the values of Class' storage in center site
void SymbolVariableDataMember::printPostfixValuesOfVariableDeclarations(File * fp, s32 slot, u32 startpos, ULAMCLASSTYPE classtype)
{
UTI vuti = getUlamTypeIdx();
UlamKeyTypeSignature vkey = m_state.getUlamKeyTypeSignatureByIndex(vuti);
UlamType * vut = m_state.getUlamTypeByIndex(vuti);
ULAMCLASSTYPE vclasstype = vut->getUlamClassType();
ULAMTYPE vetyp = vut->getUlamTypeEnum();
fp->write(" ");
if(vclasstype == UC_NOTACLASS)
fp->write(vkey.getUlamKeyTypeSignatureNameAndBitSize(&m_state).c_str());
else
fp->write(vut->getUlamTypeNameBrief().c_str());
fp->write(" ");
fp->write(m_state.m_pool.getDataAsString(getId()).c_str());
s32 arraysize = m_state.getArraySize(vuti);
//scalar has 'size=1'; empty array [0] is still '0'.
s32 size = (arraysize > NONARRAYSIZE ? arraysize : 1);
//output the arraysize (optional), and open paren
if(arraysize > NONARRAYSIZE)
{
fp->write("[");
fp->write_decimal(arraysize);
fp->write("]");
}
else if(arraysize == UNKNOWNSIZE)
{
fp->write("[UNKNOWN]");
}
fp->write("(");
if(vclasstype == UC_QUARK)
{
//outputs the data members, not just the lump value (e.g. SWV::printPostfixValue())
UTI scalarquark = m_state.getUlamTypeAsScalar(vuti);
//printPostfixValuesForClass:
SymbolClass * csym = NULL;
AssertBool isDefined = m_state.alreadyDefinedSymbolClass(scalarquark, csym);
assert(isDefined);
NodeBlockClass * classNode = csym->getClassBlockNode();
assert(classNode);
u32 newstartpos = startpos + getPosOffset();
s32 len = vut->getBitSize();
for(s32 i = 0; i < size; i++)
classNode->printPostfixDataMembersSymbols(fp, slot, newstartpos + len * i, vclasstype);
}
else
{
PACKFIT packFit = m_state.determinePackable(vuti);
assert(WritePacked(packFit)); //has to be to fit in an atom/site;
char * valstr = new char[size * 8 + MAXBITSPERLONG]; //was 32
if(size > 0)
{
//build the string of values (for both scalar and packed array)
UlamValue arrayPtr = UlamValue::makePtr(slot, EVENTWINDOW, vuti, packFit, m_state, startpos + getPosOffset(), getId());
UlamValue nextPtr = UlamValue::makeScalarPtr(arrayPtr, m_state);
UlamValue atval = m_state.getPtrTarget(nextPtr);
s32 len = m_state.getBitSize(vuti);
if(len == UNKNOWNSIZE)
{
sprintf(valstr,"unknown");
for(s32 i = 1; i < size; i++)
{
strcat(valstr,", unknown");
}
}
else if(len <= MAXBITSPERINT)
{
u32 data = atval.getDataFromAtom(nextPtr, m_state);
vut->getDataAsString(data, valstr, 'z'); //'z' -> no preceeding ','
if(vetyp == Unsigned || vetyp == Unary)
strcat(valstr, "u");
for(s32 i = 1; i < size; i++)
{
char tmpstr[8];
AssertBool isNext = nextPtr.incrementPtr(m_state);
assert(isNext);
atval = m_state.getPtrTarget(nextPtr);
data = atval.getDataFromAtom(nextPtr, m_state);
vut->getDataAsString(data, tmpstr, ',');
if(vetyp == Unsigned || vetyp == Unary)
strcat(tmpstr, "u");
strcat(valstr,tmpstr);
}
}
else if(len <= MAXBITSPERLONG)
{
u64 data = atval.getDataLongFromAtom(nextPtr, m_state);
vut->getDataLongAsString(data, valstr, 'z'); //'z' -> no preceeding ','
if(vetyp == Unsigned || vetyp == Unary)
//.........这里部分代码省略.........
示例5: printPostfixValuesOfVariableDeclarations
// replaces NodeVarDecl:printPostfix to learn the values of Class' storage in center site
void SymbolVariableDataMember::printPostfixValuesOfVariableDeclarations(File * fp, s32 slot, u32 startpos, ULAMCLASSTYPE classtype)
{
UTI vuti = getUlamTypeIdx();
UlamKeyTypeSignature vkey = m_state.getUlamKeyTypeSignatureByIndex(vuti);
UlamType * vut = m_state.getUlamTypeByIndex(vuti);
ULAMCLASSTYPE vclasstype = vut->getUlamClass();
fp->write(" ");
if(vclasstype == UC_NOTACLASS)
fp->write(vkey.getUlamKeyTypeSignatureNameAndBitSize(&m_state).c_str());
else
fp->write(vut->getUlamTypeNameBrief().c_str());
fp->write(" ");
fp->write(m_state.m_pool.getDataAsString(getId()).c_str());
s32 arraysize = m_state.getArraySize(vuti);
//scalar has 'size=1'; empty array [0] is still '0'.
s32 size = (arraysize > NONARRAYSIZE ? arraysize : 1);
//output the arraysize (optional), and open paren
if(arraysize > NONARRAYSIZE)
{
fp->write("[");
fp->write_decimal(arraysize);
fp->write("]");
}
else if(arraysize == UNKNOWNSIZE)
{
fp->write("[UNKNOWN]");
}
fp->write("(");
if(vclasstype == UC_QUARK)
{
//printPostfixValuesForClass:
SymbolClass * csym = NULL;
if(m_state.alreadyDefinedSymbolClass(vuti, csym))
{
NodeBlockClass * classNode = csym->getClassBlockNode();
assert(classNode);
SymbolTable * stptr = classNode->getSymbolTablePtr(); //ST of data members
u32 newstartpos = startpos + getPosOffset();
s32 len = vut->getBitSize();
for(s32 i = 0; i < size; i++)
stptr->printPostfixValuesForTableOfVariableDataMembers(fp, slot, newstartpos + len * i, vclasstype);
}
else
{
assert(0); //error!
}
}
else
{
PACKFIT packFit = m_state.determinePackable(vuti);
assert(WritePacked(packFit)); //has to be to fit in an atom/site;
char * valstr = new char[size * 8 + MAXBITSPERLONG]; //was 32
if(size > 0)
{
//simplifying assumption for testing purposes: center site
//Coord c0(0,0);
//u32 slot = c0.convertCoordToIndex();
//build the string of values (for both scalar and packed array)
UlamValue arrayPtr = UlamValue::makePtr(slot, EVENTWINDOW, vuti, packFit, m_state, startpos + getPosOffset(), getId());
UlamValue nextPtr = UlamValue::makeScalarPtr(arrayPtr, m_state);
UlamValue atval = m_state.getPtrTarget(nextPtr);
s32 len = nextPtr.getPtrLen();
assert(len != UNKNOWNSIZE);
if(len <= MAXBITSPERINT)
{
u32 data = atval.getDataFromAtom(nextPtr, m_state);
vut->getDataAsString(data, valstr, 'z'); //'z' -> no preceeding ','
for(s32 i = 1; i < size; i++)
{
char tmpstr[8];
assert(nextPtr.incrementPtr(m_state));
atval = m_state.getPtrTarget(nextPtr);
data = atval.getDataFromAtom(nextPtr, m_state);
vut->getDataAsString(data, tmpstr, ',');
strcat(valstr,tmpstr);
}
}
else if(len <= MAXBITSPERLONG)
{
u64 data = atval.getDataLongFromAtom(nextPtr, m_state);
vut->getDataLongAsString(data, valstr, 'z'); //'z' -> no preceeding ','
for(s32 i = 1; i < size; i++)
{
char tmpstr[8];
assert(nextPtr.incrementPtr(m_state));
atval = m_state.getPtrTarget(nextPtr);
data = atval.getDataLongFromAtom(nextPtr, m_state);
//.........这里部分代码省略.........