Inherits xtended.
Public Member Functions | |
RintPrim () | |
virtual unsigned int | arity () |
virtual bool | needCache () |
virtual Type | infereSigType (const vector< Type > &args) |
virtual void | sigVisit (Tree sig, sigvisitor *visitor) |
virtual int | infereSigOrder (const vector< int > &args) |
virtual Tree | computeSigOutput (const vector< Tree > &args) |
virtual string | generateCode (Klass *klass, const vector< string > &args, const vector< Type > &types) |
virtual string | generateLateq (Lateq *lateq, const vector< string > &args, const vector< Type > &types) |
Definition at line 18 of file rintprim.cpp.
RintPrim::RintPrim | ( | ) | [inline] |
Definition at line 23 of file rintprim.cpp.
00023 : xtended("rint") {}
virtual unsigned int RintPrim::arity | ( | ) | [inline, virtual] |
Implements xtended.
Definition at line 25 of file rintprim.cpp.
Referenced by computeSigOutput(), generateCode(), generateLateq(), infereSigOrder(), and infereSigType().
Implements xtended.
Definition at line 48 of file rintprim.cpp.
References arity(), isNum(), xtended::symbol(), and tree().
00048 { 00049 num n; 00050 assert (args.size() == arity()); 00051 if (isNum(args[0],n)) { 00052 return tree(rint(double(n))); 00053 } else { 00054 return tree(symbol(), args[0]); 00055 } 00056 }
virtual string RintPrim::generateCode | ( | Klass * | klass, | |
const vector< string > & | args, | |||
const vector< Type > & | types | |||
) | [inline, virtual] |
Implements xtended.
Definition at line 58 of file rintprim.cpp.
References arity(), isuffix(), and subst().
00059 { 00060 assert (args.size() == arity()); 00061 assert (types.size() == arity()); 00062 00063 return subst("rint$1($0)", args[0], isuffix()); 00064 }
virtual int RintPrim::infereSigOrder | ( | const vector< int > & | args | ) | [inline, virtual] |
Implements xtended.
Definition at line 42 of file rintprim.cpp.
References arity().
00042 { 00043 assert (args.size() == arity()); 00044 return args[0]; 00045 }
Implements xtended.
Definition at line 29 of file rintprim.cpp.
References arity(), castInterval(), and floatCast().
00030 { 00031 assert (args.size() == arity()); 00032 interval i = args[0]->getInterval(); 00033 if (i.valid) { 00034 return castInterval(floatCast(args[0]), interval(rint(i.lo), rint(i.hi))); 00035 } else { 00036 return floatCast(args[0]); 00037 } 00038 }
virtual bool RintPrim::needCache | ( | ) | [inline, virtual] |
virtual void RintPrim::sigVisit | ( | Tree | sig, | |
sigvisitor * | visitor | |||
) | [inline, virtual] |
Definition at line 40 of file rintprim.cpp.