本文整理汇总了C++中VariableId::setIdCode方法的典型用法代码示例。如果您正苦于以下问题:C++ VariableId::setIdCode方法的具体用法?C++ VariableId::setIdCode怎么用?C++ VariableId::setIdCode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VariableId
的用法示例。
在下文中一共展示了VariableId::setIdCode方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: variableIdOfArrayElement
VariableId VariableIdMapping::variableIdOfArrayElement(VariableId arrayVar, int elemIndex) {
int idCode = arrayVar.getIdCode();
int elemIdCode = idCode + elemIndex;
VariableId elemVarId;
elemVarId.setIdCode(elemIdCode);
return elemVarId;
}
示例2: getVariableIdSet
/*!
* \author Markus Schordan
* \date 2012.
*/
VariableIdMapping::VariableIdSet VariableIdMapping::getVariableIdSet() {
VariableIdSet set;
for(map<SgSymbol*,size_t>::iterator i=mappingSymToVarId.begin();i!=mappingSymToVarId.end();++i) {
size_t t=(*i).second;
VariableId id;
id.setIdCode(t);
set.insert(id);
}
return set;
}
示例3: idForArrayRef
// Returns a valid VariableId corresponding to *ref*
// if indices in *ref* are all integers and sizes of
// all array dimensions are known.
// Returns an invalid VariableId otherwise.
VariableId VariableIdMapping::idForArrayRef(SgPntrArrRefExp* ref)
{
assert(ref);
VariableId result;
result.setIdCode(-1);
// Check failure conditions
if(isSgPntrArrRefExp(ref->get_parent()))
return result;
SgExpression* varRef;
vector<SgExpression*> subscripts;
vector<SgExpression*>* pSubscripts = &subscripts;
SageInterface::isArrayReference(ref, &varRef, &pSubscripts);
SgVarRefExp* arrVar = isSgVarRefExp(varRef);
if(!arrVar)
return result;
SgArrayType* arrType = isSgArrayType(SageInterface::convertRefToInitializedName(arrVar)->get_type());
if(!arrType)
return result;
vector<size_t> arrayDimensions;
size_t arrSize = getArrayDimensions(arrType, &arrayDimensions);
if(!arrSize) {
arrayDimensions.clear();
arrSize = getArrayDimensionsFromInitializer(
isSgAggregateInitializer(SageInterface::convertRefToInitializedName(arrVar)->get_initializer()),
&arrayDimensions);
}
if(!arrSize)
return result; // Array size is unknown
assert(arrayDimensions.size() == subscripts.size());
// Calculate the index as below.
// int a[M][N][K];
// a[x][y][z] => index = x*N*K + y*K + z.
int index = 0;
for(unsigned i = 0; i < subscripts.size(); i++) {
int curIndex = exprToInt(subscripts[i]);
if(curIndex == -1)
return result;
int dimension_size = (i == arrayDimensions.size() - 1 ? 1 : arrayDimensions[i + 1]);
for(unsigned d = i + 2; d < arrayDimensions.size(); d++)
dimension_size*= arrayDimensions[d];
index += curIndex*dimension_size;
}
VariableId varId = variableId(arrVar);
result = variableIdOfArrayElement(varId, index);
return result;
}
示例4: variableIdFromCode
/*!
* \author Markus Schordan
* \date 2012.
*/
VariableId VariableIdMapping::variableIdFromCode(int i) {
VariableId id;
id.setIdCode(i);
return id;
}