vector<SgType*> typeVectorFromType(SgType* sageType){ vector<SgType*> typeVector; if(sageType == NULL) return typeVector; SgType* baseType = sageType; SgType* previousBaseType = NULL; while(previousBaseType != baseType) { previousBaseType = baseType; switch(baseType->variantT()){ case V_SgReferenceType: case V_SgPointerType: typeVector.push_back(baseType); case V_SgTypedefType: break; default: typeVector.push_back(baseType); break; } baseType = findBaseType(baseType); ROSE_ASSERT(baseType != NULL); }; return typeVector; };
Exponent::Exponent(string str) { baseIsFrac = false; baseIsInt = false; powerIsFrac = false; powerIsInt = false; separate(str); findPowerType(); findBaseType(); simplify(); canSimplifyToFrac(); canSimplifyToInt(); }
vector<SgType*> typeInterpreter::typeVectorFromTypedef(SgTypedefDeclaration* typedefDeclaration){ vector<SgType*> typeVector; ROSE_ASSERT (typedefDeclaration != NULL); SgType* baseType = NULL; SgType* previousBaseType = NULL; do { previousBaseType = baseType; baseType = findBaseType(isSgType(typedefDeclaration)); ROSE_ASSERT(baseType != NULL); typeVector.push_back(baseType); }while( baseType != previousBaseType ); return typeVector; };