*** empty log message ***
This commit is contained in:
parent
8748b41fa5
commit
859c42d281
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: mem.c,v 1.18 2006-10-29 13:40:33 bacon Exp $
|
||||
* $Id: mem.c,v 1.19 2006-10-30 03:49:05 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/lsp/lsp_i.h>
|
||||
@ -401,7 +401,7 @@ ase_lsp_obj_t* ase_lsp_makeintobj (ase_lsp_mem_t* mem, ase_long_t value)
|
||||
ASE_LSP_OBJ_INT, ase_sizeof(ase_lsp_obj_int_t));
|
||||
if (obj == ASE_NULL) return ASE_NULL;
|
||||
|
||||
ASE_LSP_IVALUE(obj) = value;
|
||||
ASE_LSP_IVAL(obj) = value;
|
||||
|
||||
return obj;
|
||||
}
|
||||
@ -414,7 +414,7 @@ ase_lsp_obj_t* ase_lsp_makerealobj (ase_lsp_mem_t* mem, ase_real_t value)
|
||||
ASE_LSP_OBJ_REAL, ase_sizeof(ase_lsp_obj_real_t));
|
||||
if (obj == ASE_NULL) return ASE_NULL;
|
||||
|
||||
ASE_LSP_RVALUE(obj) = value;
|
||||
ASE_LSP_RVAL(obj) = value;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: obj.h,v 1.11 2006-10-29 13:00:39 bacon Exp $
|
||||
* $Id: obj.h,v 1.12 2006-10-30 03:49:05 bacon Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LSP_OBJ_H_
|
||||
@ -129,8 +129,8 @@ struct ase_lsp_obj_prim_t
|
||||
#define ASE_LSP_LINK(x) (((ase_lsp_obj_t*)x)->hdr.link)
|
||||
|
||||
/* value access */
|
||||
#define ASE_LSP_IVALUE(x) (((ase_lsp_obj_int_t*)x)->value)
|
||||
#define ASE_LSP_RVALUE(x) (((ase_lsp_obj_real_t*)x)->value)
|
||||
#define ASE_LSP_IVAL(x) (((ase_lsp_obj_int_t*)x)->value)
|
||||
#define ASE_LSP_RVAL(x) (((ase_lsp_obj_real_t*)x)->value)
|
||||
|
||||
#if defined(__BORLANDC__) || defined(_MSC_VER)
|
||||
#define ASE_LSP_SYMPTR(x) ((ase_char_t*)(((ase_lsp_obj_sym_t*)x) + 1))
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: prim_compar.c,v 1.8 2006-10-29 13:40:33 bacon Exp $
|
||||
* $Id: prim_compar.c,v 1.9 2006-10-30 03:49:05 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/lsp/lsp_i.h>
|
||||
@ -22,11 +22,11 @@ ase_lsp_obj_t* ase_lsp_prim_eq (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) == ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) == ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) == ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) == ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -38,11 +38,11 @@ ase_lsp_obj_t* ase_lsp_prim_eq (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) == ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) == ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) == ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) == ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -104,11 +104,11 @@ ase_lsp_obj_t* ase_lsp_prim_ne (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) != ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) != ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) != ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) != ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -120,11 +120,11 @@ ase_lsp_obj_t* ase_lsp_prim_ne (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) != ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) != ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) != ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) != ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -187,11 +187,11 @@ ase_lsp_obj_t* ase_lsp_prim_gt (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) > ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) > ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) > ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) > ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -203,11 +203,11 @@ ase_lsp_obj_t* ase_lsp_prim_gt (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) > ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) > ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) > ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) > ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -270,11 +270,11 @@ ase_lsp_obj_t* ase_lsp_prim_lt (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) < ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) < ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) < ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) < ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -286,11 +286,11 @@ ase_lsp_obj_t* ase_lsp_prim_lt (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) < ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) < ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) < ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) < ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -352,11 +352,11 @@ ase_lsp_obj_t* ase_lsp_prim_ge (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) >= ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) >= ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) >= ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) >= ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -368,11 +368,11 @@ ase_lsp_obj_t* ase_lsp_prim_ge (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) >= ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) >= ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) >= ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) >= ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -434,11 +434,11 @@ ase_lsp_obj_t* ase_lsp_prim_le (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) <= ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) <= ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_IVALUE(p1) <= ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_IVAL(p1) <= ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -450,11 +450,11 @@ ase_lsp_obj_t* ase_lsp_prim_le (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_INT)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) <= ASE_LSP_IVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) <= ASE_LSP_IVAL(p2);
|
||||
}
|
||||
else if (ASE_LSP_TYPE(p2) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
res = ASE_LSP_RVALUE(p1) <= ASE_LSP_RVALUE(p2);
|
||||
res = ASE_LSP_RVAL(p1) <= ASE_LSP_RVAL(p2);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: prim_math.c,v 1.13 2006-10-29 13:40:33 bacon Exp $
|
||||
* $Id: prim_math.c,v 1.14 2006-10-30 03:49:06 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/lsp/lsp_i.h>
|
||||
@ -7,8 +7,8 @@
|
||||
ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ase_lsp_obj_t* body, * tmp;
|
||||
ase_long_t ivalue = 0;
|
||||
ase_real_t rvalue = .0;
|
||||
ase_long_t ival = 0;
|
||||
ase_real_t rval = .0;
|
||||
ase_bool_t realnum = ase_false;
|
||||
|
||||
ASE_LSP_ASSERT (lsp, ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS);
|
||||
@ -29,14 +29,14 @@ ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
if (body == args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
ivalue = ASE_LSP_IVALUE(tmp);
|
||||
ival = ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
ivalue = ivalue + ASE_LSP_IVALUE(tmp);
|
||||
ival = ival + ASE_LSP_IVAL(tmp);
|
||||
else
|
||||
rvalue = rvalue + ASE_LSP_IVALUE(tmp);
|
||||
rval = rval + ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
}
|
||||
else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL)
|
||||
@ -45,16 +45,16 @@ ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
realnum = ase_true;
|
||||
rvalue = ASE_LSP_RVALUE(tmp);
|
||||
rval = ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
{
|
||||
realnum = ase_true;
|
||||
rvalue = (ase_real_t)ivalue;
|
||||
rval = (ase_real_t)ival;
|
||||
}
|
||||
rvalue = rvalue + ASE_LSP_RVALUE(tmp);
|
||||
rval = rval + ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -70,8 +70,8 @@ ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ASE_LSP_ASSERT (lsp, body == lsp->mem->nil);
|
||||
|
||||
tmp = (realnum)?
|
||||
ase_lsp_makerealobj (lsp->mem, rvalue):
|
||||
ase_lsp_makeintobj (lsp->mem, ivalue);
|
||||
ase_lsp_makerealobj (lsp->mem, rval):
|
||||
ase_lsp_makeintobj (lsp->mem, ival);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_ENOMEM;
|
||||
@ -84,8 +84,8 @@ ase_lsp_obj_t* ase_lsp_prim_plus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ase_lsp_obj_t* body, * tmp;
|
||||
ase_long_t ivalue = 0;
|
||||
ase_real_t rvalue = .0;
|
||||
ase_long_t ival = 0;
|
||||
ase_real_t rval = .0;
|
||||
ase_bool_t realnum = ase_false;
|
||||
|
||||
ASE_LSP_ASSERT (lsp, ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS);
|
||||
@ -103,14 +103,14 @@ ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
if (body == args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
ivalue = ASE_LSP_IVALUE(tmp);
|
||||
ival = ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
ivalue = ivalue - ASE_LSP_IVALUE(tmp);
|
||||
ival = ival - ASE_LSP_IVAL(tmp);
|
||||
else
|
||||
rvalue = rvalue - ASE_LSP_IVALUE(tmp);
|
||||
rval = rval - ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
}
|
||||
else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL)
|
||||
@ -119,16 +119,16 @@ ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
realnum = ase_true;
|
||||
rvalue = ASE_LSP_RVALUE(tmp);
|
||||
rval = ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
{
|
||||
realnum = ase_true;
|
||||
rvalue = (ase_real_t)ivalue;
|
||||
rval = (ase_real_t)ival;
|
||||
}
|
||||
rvalue = rvalue - ASE_LSP_RVALUE(tmp);
|
||||
rval = rval - ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -144,8 +144,8 @@ ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ASE_LSP_ASSERT (lsp, body == lsp->mem->nil);
|
||||
|
||||
tmp = (realnum)?
|
||||
ase_lsp_makerealobj (lsp->mem, rvalue):
|
||||
ase_lsp_makeintobj (lsp->mem, ivalue);
|
||||
ase_lsp_makerealobj (lsp->mem, rval):
|
||||
ase_lsp_makeintobj (lsp->mem, ival);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_ENOMEM;
|
||||
@ -158,8 +158,8 @@ ase_lsp_obj_t* ase_lsp_prim_minus (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ase_lsp_obj_t* body, * tmp;
|
||||
ase_long_t ivalue = 0;
|
||||
ase_real_t rvalue = .0;
|
||||
ase_long_t ival = 0;
|
||||
ase_real_t rval = .0;
|
||||
ase_bool_t realnum = ase_false;
|
||||
|
||||
ASE_LSP_ASSERT (lsp, ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS);
|
||||
@ -176,14 +176,14 @@ ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
if (body == args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
ivalue = ASE_LSP_IVALUE(tmp);
|
||||
ival = ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
ivalue = ivalue * ASE_LSP_IVALUE(tmp);
|
||||
ival = ival * ASE_LSP_IVAL(tmp);
|
||||
else
|
||||
rvalue = rvalue * ASE_LSP_IVALUE(tmp);
|
||||
rval = rval * ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
}
|
||||
else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL)
|
||||
@ -192,16 +192,16 @@ ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
realnum = ase_true;
|
||||
rvalue = ASE_LSP_RVALUE(tmp);
|
||||
rval = ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
{
|
||||
realnum = ase_true;
|
||||
rvalue = (ase_real_t)ivalue;
|
||||
rval = (ase_real_t)ival;
|
||||
}
|
||||
rvalue = rvalue * ASE_LSP_RVALUE(tmp);
|
||||
rval = rval * ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -217,8 +217,8 @@ ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ASE_LSP_ASSERT (lsp, body == lsp->mem->nil);
|
||||
|
||||
tmp = (realnum)?
|
||||
ase_lsp_makerealobj (lsp->mem, rvalue):
|
||||
ase_lsp_makeintobj (lsp->mem, ivalue);
|
||||
ase_lsp_makerealobj (lsp->mem, rval):
|
||||
ase_lsp_makeintobj (lsp->mem, ival);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_ENOMEM;
|
||||
@ -231,8 +231,8 @@ ase_lsp_obj_t* ase_lsp_prim_mul (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ase_lsp_obj_t* body, * tmp;
|
||||
ase_long_t ivalue = 0;
|
||||
ase_real_t rvalue = .0;
|
||||
ase_long_t ival = 0;
|
||||
ase_real_t rval = .0;
|
||||
ase_bool_t realnum = ase_false;
|
||||
|
||||
ASE_LSP_ASSERT (lsp, ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS);
|
||||
@ -249,21 +249,21 @@ ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
if (body == args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
ivalue = ASE_LSP_IVALUE(tmp);
|
||||
ival = ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
{
|
||||
if (ASE_LSP_IVALUE(tmp) == 0)
|
||||
if (ASE_LSP_IVAL(tmp) == 0)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_EDIVBYZERO;
|
||||
return ASE_NULL;
|
||||
}
|
||||
ivalue = ivalue / ASE_LSP_IVALUE(tmp);
|
||||
ival = ival / ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
else
|
||||
rvalue = rvalue / ASE_LSP_IVALUE(tmp);
|
||||
rval = rval / ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
}
|
||||
else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL)
|
||||
@ -272,16 +272,16 @@ ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ASE_LSP_ASSERT (lsp, realnum == ase_false);
|
||||
realnum = ase_true;
|
||||
rvalue = ASE_LSP_RVALUE(tmp);
|
||||
rval = ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!realnum)
|
||||
{
|
||||
realnum = ase_true;
|
||||
rvalue = (ase_real_t)ivalue;
|
||||
rval = (ase_real_t)ival;
|
||||
}
|
||||
rvalue = rvalue / ASE_LSP_RVALUE(tmp);
|
||||
rval = rval / ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -297,8 +297,8 @@ ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ASE_LSP_ASSERT (lsp, body == lsp->mem->nil);
|
||||
|
||||
tmp = (realnum)?
|
||||
ase_lsp_makerealobj (lsp->mem, rvalue):
|
||||
ase_lsp_makeintobj (lsp->mem, ivalue);
|
||||
ase_lsp_makerealobj (lsp->mem, rval):
|
||||
ase_lsp_makeintobj (lsp->mem, ival);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_ENOMEM;
|
||||
@ -311,7 +311,7 @@ ase_lsp_obj_t* ase_lsp_prim_div (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
ase_lsp_obj_t* ase_lsp_prim_mod (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
ase_lsp_obj_t* body, * tmp;
|
||||
ase_long_t ivalue = 0;
|
||||
ase_long_t ival = 0;
|
||||
|
||||
ASE_LSP_ASSERT (lsp, ASE_LSP_TYPE(args) == ASE_LSP_OBJ_CONS);
|
||||
|
||||
@ -326,33 +326,33 @@ ase_lsp_obj_t* ase_lsp_prim_mod (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
{
|
||||
if (body == args)
|
||||
{
|
||||
ivalue = ASE_LSP_IVALUE(tmp);
|
||||
ival = ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ASE_LSP_IVALUE(tmp) == 0)
|
||||
if (ASE_LSP_IVAL(tmp) == 0)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_EDIVBYZERO;
|
||||
return ASE_NULL;
|
||||
}
|
||||
ivalue = ivalue % ASE_LSP_IVALUE(tmp);
|
||||
ival = ival % ASE_LSP_IVAL(tmp);
|
||||
}
|
||||
}
|
||||
else if (ASE_LSP_TYPE(tmp) == ASE_LSP_OBJ_REAL)
|
||||
{
|
||||
if (body == args)
|
||||
{
|
||||
ivalue = (ase_long_t)ASE_LSP_RVALUE(tmp);
|
||||
ival = (ase_long_t)ASE_LSP_RVAL(tmp);
|
||||
}
|
||||
else
|
||||
{
|
||||
ase_long_t tmpi = (ase_long_t)ASE_LSP_RVALUE(tmp);
|
||||
ase_long_t tmpi = (ase_long_t)ASE_LSP_RVAL(tmp);
|
||||
if (tmpi == 0)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_EDIVBYZERO;
|
||||
return ASE_NULL;
|
||||
}
|
||||
ivalue = ivalue % tmpi;
|
||||
ival = ival % tmpi;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -367,7 +367,7 @@ ase_lsp_obj_t* ase_lsp_prim_mod (ase_lsp_t* lsp, ase_lsp_obj_t* args)
|
||||
|
||||
ASE_LSP_ASSERT (lsp, body == lsp->mem->nil);
|
||||
|
||||
tmp = ase_lsp_makeintobj (lsp->mem, ivalue);
|
||||
tmp = ase_lsp_makeintobj (lsp->mem, ival);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
lsp->errnum = ASE_LSP_ENOMEM;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: print.c,v 1.17 2006-10-29 13:00:39 bacon Exp $
|
||||
* $Id: print.c,v 1.18 2006-10-30 03:49:06 bacon Exp $
|
||||
*/
|
||||
|
||||
#include <ase/lsp/lsp_i.h>
|
||||
@ -44,22 +44,22 @@ static int __print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj, ase_bool_t prt_con
|
||||
#if defined(__BORLANDC__) || defined(_MSC_VER)
|
||||
lsp->syscas.sprintf (
|
||||
buf, ase_countof(buf),
|
||||
ASE_T("%I64d"), (__int64)ASE_LSP_IVALUE(obj));
|
||||
ASE_T("%I64d"), (__int64)ASE_LSP_IVAL(obj));
|
||||
#elif defined(vax) || defined(__vax) || defined(_SCO_DS)
|
||||
lsp->syscas.sprintf (
|
||||
buf, ase_countof(buf),
|
||||
ASE_T("%ld"), (long)ASE_LSP_IVALUE(obj));
|
||||
ASE_T("%ld"), (long)ASE_LSP_IVAL(obj));
|
||||
#else
|
||||
lsp->syscas.sprintf (
|
||||
buf, ase_countof(buf),
|
||||
ASE_T("%lld"), (long long)ASE_LSP_IVALUE(obj));
|
||||
ASE_T("%lld"), (long long)ASE_LSP_IVAL(obj));
|
||||
#endif
|
||||
OUTPUT_STR (lsp, buf);
|
||||
break;
|
||||
|
||||
case ASE_LSP_OBJ_REAL:
|
||||
lsp->syscas.sprintf (buf, ase_countof(buf),
|
||||
ASE_T("%Lf"), (long double)ASE_LSP_RVALUE(obj));
|
||||
ASE_T("%Lf"), (long double)ASE_LSP_RVAL(obj));
|
||||
|
||||
OUTPUT_STR (lsp, buf);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user