Merge branch 'num_methods' of git://github.com/MarcoLizza/wren into MarcoLizza-num_methods

This commit is contained in:
Bob Nystrom
2015-03-06 22:43:02 -08:00
4 changed files with 84 additions and 0 deletions
+46
View File
@@ -886,16 +886,50 @@ DEF_PRIMITIVE(num_cos)
RETURN_NUM(cos(AS_NUM(args[0])));
}
DEF_PRIMITIVE(num_deg)
{
RETURN_NUM(floor(AS_NUM(args[0]) * 57.2957795130823208768));
}
DEF_PRIMITIVE(num_floor)
{
RETURN_NUM(floor(AS_NUM(args[0])));
}
DEF_PRIMITIVE(num_fraction)
{
double integer;
double fractional = modf(AS_NUM(args[0]) , &integer);
RETURN_NUM(fractional);
}
DEF_PRIMITIVE(num_isNan)
{
RETURN_BOOL(isnan(AS_NUM(args[0])));
}
DEF_PRIMITIVE(num_rad)
{
RETURN_NUM(floor(AS_NUM(args[0]) / 57.2957795130823208768));
}
DEF_PRIMITIVE(num_sign)
{
double value = AS_NUM(args[0]);
if (value > 0)
{
RETURN_NUM(1);
}
else if (value < 0)
{
RETURN_NUM(-1);
}
else
{
RETURN_NUM(0);
}
}
DEF_PRIMITIVE(num_sin)
{
RETURN_NUM(sin(AS_NUM(args[0])));
@@ -936,6 +970,13 @@ DEF_PRIMITIVE(num_toString)
RETURN_VAL(wrenNewString(vm, buffer, length));
}
DEF_PRIMITIVE(num_truncate)
{
double integer;
modf(AS_NUM(args[0]) , &integer);
RETURN_NUM(integer);
}
DEF_PRIMITIVE(num_fromString)
{
if (!validateString(vm, args, 1, "Argument")) return PRIM_ERROR;
@@ -1522,11 +1563,16 @@ void wrenInitializeCore(WrenVM* vm)
PRIMITIVE(vm->numClass, "abs", num_abs);
PRIMITIVE(vm->numClass, "ceil", num_ceil);
PRIMITIVE(vm->numClass, "cos", num_cos);
PRIMITIVE(vm->numClass, "deg", num_deg);
PRIMITIVE(vm->numClass, "floor", num_floor);
PRIMITIVE(vm->numClass, "fraction", num_fraction);
PRIMITIVE(vm->numClass, "isNan", num_isNan);
PRIMITIVE(vm->numClass, "rad", num_rad);
PRIMITIVE(vm->numClass, "sign", num_sign);
PRIMITIVE(vm->numClass, "sin", num_sin);
PRIMITIVE(vm->numClass, "sqrt", num_sqrt);
PRIMITIVE(vm->numClass, "toString", num_toString);
PRIMITIVE(vm->numClass, "truncate", num_truncate);
// These are defined just so that 0 and -0 are equal, which is specified by
// IEEE 754 even though they have different bit representations.