TypeNode* TypeNameNode::getActualTypeNode(TemplateArguments* templateArguments) { TypeNode* typeNode = getTypeNode(templateArguments); if (typeNode) { typeNode = typeNode->getActualTypeNode(templateArguments); } return typeNode; }
SortType SortConstructorType::instantiate(const std::vector<Type>& params) const { NodeManagerScope nms(d_nodeManager); vector<TypeNode> paramsNodes; for(vector<Type>::const_iterator i = params.begin(), iend = params.end(); i != iend; ++i) { paramsNodes.push_back(*getTypeNode(*i)); } return SortType(makeType(d_nodeManager->mkSort(*d_typeNode, paramsNodes))); }
DatatypeType DatatypeType::instantiate(const std::vector<Type>& params) const { NodeManagerScope nms(d_nodeManager); TypeNode cons = d_nodeManager->mkTypeConst( getDatatype() ); vector<TypeNode> paramsNodes; paramsNodes.push_back( cons ); for(vector<Type>::const_iterator i = params.begin(), iend = params.end(); i != iend; ++i) { paramsNodes.push_back(*getTypeNode(*i)); } return DatatypeType(makeType(d_nodeManager->mkTypeNode(kind::PARAMETRIC_DATATYPE, paramsNodes))); }