Changeset 486 for abuse/trunk/src/lisp
- Timestamp:
- Apr 17, 2011, 10:28:28 AM (12 years ago)
- Location:
- abuse/trunk/src/lisp
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/lisp/lisp.cpp
r485 r486 442 442 } 443 443 444 LispNumber * new_lisp_number(long num)445 { 446 LispNumber *s=(LispNumber *)lmalloc(sizeof(LispNumber), current_space);447 s->type=L_NUMBER;448 s->num=num;449 return s;444 LispNumber *LispNumber::Create(long num) 445 { 446 LispNumber *s = (LispNumber *)lmalloc(sizeof(LispNumber), current_space); 447 s->type = L_NUMBER; 448 s->num = num; 449 return s; 450 450 } 451 451 … … 1212 1212 else if (isdigit(n[0]) || (n[0]=='-' && isdigit(n[1]))) 1213 1213 { 1214 LispNumber *num =new_lisp_number(0);1214 LispNumber *num = LispNumber::Create(0); 1215 1215 sscanf(n, "%ld", &num->num); 1216 1216 ret=num; … … 1525 1525 } 1526 1526 if(t == L_C_FUNCTION) 1527 ret =new_lisp_number(c_caller( ((LispSysFunction *)fun)->fun_number, first));1527 ret = LispNumber::Create(c_caller( ((LispSysFunction *)fun)->fun_number, first)); 1528 1528 else if (c_caller( ((LispSysFunction *)fun)->fun_number, first)) 1529 1529 ret=true_symbol; … … 1812 1812 switch (item_type(v)) 1813 1813 { 1814 case L_STRING : ret =new_lisp_number(strlen(lstring_value(v))); break;1815 case L_CONS_CELL : ret =new_lisp_number(list_length(v)); break;1814 case L_STRING : ret = LispNumber::Create(strlen(lstring_value(v))); break; 1815 case L_CONS_CELL : ret = LispNumber::Create(list_length(v)); break; 1816 1816 default : 1817 1817 { lprint(v); … … 1869 1869 arg_list=CDR(arg_list); 1870 1870 } 1871 ret =new_lisp_number(sum);1871 ret = LispNumber::Create(sum); 1872 1872 } 1873 1873 break; … … 1896 1896 if (arg_list) first=eval(CAR(arg_list)); 1897 1897 } while (arg_list); 1898 ret =new_lisp_number(sum);1898 ret = LispNumber::Create(sum); 1899 1899 } 1900 1900 } … … 1920 1920 arg_list=CDR(arg_list); 1921 1921 } 1922 ret =new_lisp_number(sum);1922 ret = LispNumber::Create(sum); 1923 1923 } 1924 1924 break; … … 1931 1931 arg_list=CDR(arg_list); 1932 1932 } 1933 ret =new_lisp_number(x);1933 ret = LispNumber::Create(x); 1934 1934 } 1935 1935 break; … … 2183 2183 { 2184 2184 case L_CHARACTER : 2185 { ret =new_lisp_number(((LispChar *)i)->ch); } break;2185 { ret = LispNumber::Create(((LispChar *)i)->ch); } break; 2186 2186 case L_STRING : 2187 { ret =new_lisp_number(*lstring_value(i)); } break;2187 { ret = LispNumber::Create(*lstring_value(i)); } break; 2188 2188 default : 2189 2189 { … … 2412 2412 } break; 2413 2413 case SYS_FUNC_ABS: 2414 ret =new_lisp_number(abs(lnumber_value(eval(CAR(arg_list))))); break;2414 ret = LispNumber::Create(abs(lnumber_value(eval(CAR(arg_list))))); break; 2415 2415 case SYS_FUNC_MIN: 2416 2416 { 2417 2417 int x=lnumber_value(eval(CAR(arg_list))), y=lnumber_value(eval(CAR(CDR(arg_list)))); 2418 if (x<y) ret=new_lisp_number(x); else ret=new_lisp_number(y);2418 ret = LispNumber::Create(x < y ? x : y); 2419 2419 } break; 2420 2420 case SYS_FUNC_MAX: 2421 2421 { 2422 2422 int x=lnumber_value(eval(CAR(arg_list))), y=lnumber_value(eval(CAR(CDR(arg_list)))); 2423 if (x>y) ret=new_lisp_number(x); else ret=new_lisp_number(y);2423 ret = LispNumber::Create(x > y ? x : y); 2424 2424 } break; 2425 2425 case SYS_FUNC_BACKQUOTE: … … 2451 2451 long y=(lnumber_value(eval(CAR(arg_list)))); arg_list=CDR(arg_list); 2452 2452 long x=(lnumber_value(eval(CAR(arg_list)))); 2453 ret =new_lisp_number(lisp_atan2(y, x));2453 ret = LispNumber::Create(lisp_atan2(y, x)); 2454 2454 } break; 2455 2455 case SYS_FUNC_ENUM: … … 2465 2465 { 2466 2466 case L_SYMBOL : 2467 { ((LispSymbol *)sym)->value =new_lisp_number(x); } break;2467 { ((LispSymbol *)sym)->value = LispNumber::Create(x); } break; 2468 2468 case L_CONS_CELL : 2469 2469 { … … 2478 2478 #endif 2479 2479 x=lnumber_value(eval(CAR(CDR(sym)))); 2480 ((LispSymbol *)sym)->value =new_lisp_number(x);2480 ((LispSymbol *)sym)->value = LispNumber::Create(x); 2481 2481 } break; 2482 2482 default : … … 2506 2506 long y=lnumber_value(eval(CAR(arg_list))); 2507 2507 if (y==0) { lbreak("mod : division by zero\n"); y=1; } 2508 ret =new_lisp_number(x%y);2508 ret = LispNumber::Create(x%y); 2509 2509 } break; 2510 2510 /* case SYS_FUNC_WRITE_PROFILE: … … 2585 2585 arg_list=CDR(arg_list); 2586 2586 } 2587 ret =new_lisp_number(first);2587 ret = LispNumber::Create(first); 2588 2588 } break; 2589 2589 case SYS_FUNC_BIT_OR: … … 2595 2595 arg_list=CDR(arg_list); 2596 2596 } 2597 ret =new_lisp_number(first);2597 ret = LispNumber::Create(first); 2598 2598 } break; 2599 2599 case SYS_FUNC_BIT_XOR: … … 2605 2605 arg_list=CDR(arg_list); 2606 2606 } 2607 ret =new_lisp_number(first);2607 ret = LispNumber::Create(first); 2608 2608 } break; 2609 2609 case SYS_FUNC_MAKE_ARRAY: … … 2666 2666 char *find=strstr(haystack, needle); 2667 2667 if (find) 2668 ret =new_lisp_number(find-haystack);2668 ret = LispNumber::Create(find-haystack); 2669 2669 else ret=NULL; 2670 2670 } break; … … 3153 3153 ((LispNumber *)value)->num = num; 3154 3154 else 3155 value = new_lisp_number(num);3155 value = LispNumber::Create(num); 3156 3156 } 3157 3157 -
abuse/trunk/src/lisp/lisp.h
r485 r486 63 63 struct LispNumber : LispObject 64 64 { 65 static LispNumber *Create(long num); 66 65 67 long num; 66 68 }; … … 180 182 181 183 182 LispNumber *new_lisp_number(long num);183 184 LispPointer *new_lisp_pointer(void *addr); 184 185 LispChar *new_lisp_character(uint16_t ch); -
abuse/trunk/src/lisp/lisp_gc.cpp
r484 r486 135 135 break; 136 136 case L_NUMBER: 137 ret = new_lisp_number(((LispNumber *)x)->num);137 ret = LispNumber::Create(((LispNumber *)x)->num); 138 138 break; 139 139 case L_SYS_FUNCTION:
Note: See TracChangeset
for help on using the changeset viewer.