#include #include #include "AST.h" #include "CodeContext.h" #include "delimit.h" #include "code.h" #include "config.h" #include "domain-decls.h" const string DomainNode::emitExpression( CodeContext& context ) { assert( args()->arity() == 1 ); assert( args()->child(0)->arity() == 3 ); const string lower = args()->child(0)->child(0)->emitExpression( context ); const string upper = args()->child(0)->child(1)->emitExpression( context ); const string stride = args()->child(0)->child(2)->emitExpression( context ); return NEW_RECTDOMAIN_3PT_MAX_START(+, int2string(type()->tiArity())) + lower + ", " + upper + ", " + stride + NEW_RECTDOMAIN_3PT_MAX_END(); } const string PointNode::emitExpression( CodeContext &context ) { vector< string > coordinates; args()->emitExpressionList( context, coordinates ); const string result = declareTemporary( context ); context << MANGLE_TI_DOMAINS_POINT_CONSTRUCT(<<, int2string(type()->tiArity())) << result << ", " << delimit(coordinates) << ");" << endCline; return result; } const string int2string(int val) { static char buffer[64]; sprintf(buffer, "%d", val); return string(buffer); } const string long2hexstring(long val) { static char buffer[64]; sprintf(buffer, "%lx", val); return string(buffer); } // OBSOLETE: TO BE REMOVED SOON #if 1 // START OBSOLETE SECTION char *int2str(int val) { static char buffer[64]; sprintf(buffer, "%d", val); return buffer; } char *long2hexstr(long val) { static char buffer[64]; sprintf(buffer, "%lx", val); return buffer; } #endif // END OBSOLETE SECTION