- Timestamp:
- Apr 17, 2011, 10:28:20 AM (12 years ago)
- Location:
- abuse/trunk/src
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/chars.cpp
r482 r484 81 81 }; 82 82 83 int character_type::add_state(void *symbol) 83 int character_type::add_state(void *symbol) // returns index into seq to use 84 84 { 85 85 if (item_type(symbol)!=L_SYMBOL) … … 110 110 int sp=current_space; 111 111 current_space=PERM_SPACE; 112 set_symbol_number(symbol,num);112 ((LispSymbol *)symbol)->SetNumber(num); 113 113 current_space=sp; 114 114 } … … 119 119 lbreak("symbol has been assigned value %d, but value already in use by state %s\n" 120 120 "use a different symbol for this state\n", 121 lstring_value( symbol_name(seq_syms[num])));121 lstring_value(((LispSymbol *)seq_syms[num])->GetName())); 122 122 exit(0); 123 123 } else if (num>=ts) … … 219 219 " with index %d, but %s has a var listed '%s' with same index\n" 220 220 " try moving definition of %s before previously declared object", 221 lstring_value( symbol_name(name)),222 lstring_value( symbol_name(symbol)),221 lstring_value(((LispSymbol *)name)->GetName()), 222 lstring_value(((LispSymbol *)symbol)->GetName()), 223 223 index, 224 lstring_value( symbol_name(name)),225 lstring_value( symbol_name(vars[index])),226 lstring_value( symbol_name(name))224 lstring_value(((LispSymbol *)name)->GetName()), 225 lstring_value(((LispSymbol *)vars[index])->GetName()), 226 lstring_value(((LispSymbol *)name)->GetName()) 227 227 ); 228 228 exit(0); … … 285 285 } 286 286 for (i=0;i<tiv;i++) 287 if (!strcmp(lstring_value( symbol_name(vars[i])),name))287 if (!strcmp(lstring_value(((LispSymbol *)vars[i])->GetName()),name)) 288 288 return 1; 289 289 return 0; … … 301 301 tiv=0; 302 302 303 void *l_abil= make_find_symbol("abilities");304 void *l_funs= make_find_symbol("funs");305 void *l_states=make_find_symbol("states");306 void *l_flags= make_find_symbol("flags");307 void *l_range= make_find_symbol("range");308 void *l_draw_range= make_find_symbol("draw_range");309 void *l_fields=make_find_symbol("fields");310 void *l_logo= make_find_symbol("logo");311 void *l_vars= make_find_symbol("vars");303 LispSymbol *l_abil = LispSymbol::FindOrCreate("abilities"); 304 LispSymbol *l_funs = LispSymbol::FindOrCreate("funs"); 305 LispSymbol *l_states = LispSymbol::FindOrCreate("states"); 306 LispSymbol *l_flags = LispSymbol::FindOrCreate("flags"); 307 LispSymbol *l_range = LispSymbol::FindOrCreate("range"); 308 LispSymbol *l_draw_range = LispSymbol::FindOrCreate("draw_range"); 309 LispSymbol *l_fields = LispSymbol::FindOrCreate("fields"); 310 LispSymbol *l_logo = LispSymbol::FindOrCreate("logo"); 311 LispSymbol *l_vars = LispSymbol::FindOrCreate("vars"); 312 312 313 313 memset(fun_table,0,sizeof(fun_table)); // destory all hopes of fun … … 336 336 for (i=0;i<TOTAL_ABILITIES;i++) 337 337 { 338 Cell *ab=assoc( make_find_symbol(ability_names[i]),l);338 Cell *ab=assoc(LispSymbol::FindOrCreate(ability_names[i]),l); 339 339 p_ref r5(ab); 340 340 if (!NILP(ab)) … … 347 347 for (i=0;i<TOTAL_OFUNS;i++) 348 348 { 349 Cell *ab=assoc( make_find_symbol(ofun_names[i]),l);349 Cell *ab=assoc(LispSymbol::FindOrCreate(ofun_names[i]),l); 350 350 p_ref r5(ab); 351 351 if (!NILP(ab) && lcar(lcdr(ab))) … … 358 358 for (i=0;i<TOTAL_CFLAGS;i++) 359 359 { 360 Cell *ab=assoc( make_find_symbol(cflag_names[i]),l);360 Cell *ab=assoc(LispSymbol::FindOrCreate(cflag_names[i]),l); 361 361 p_ref r5(ab); 362 362 if (!NILP(ab) && eval(lcar(lcdr(ab)))) … … 440 440 if (!seq[stopped]) 441 441 lbreak("object (%s) has no stopped state, please define one!\n", 442 lstring_value( symbol_name(name)));442 lstring_value(((LispSymbol *)name)->GetName())); 443 443 444 444 /* char *fn=lstring_value(lcar(desc)); -
abuse/trunk/src/clisp.cpp
r482 r484 39 39 40 40 // the following are references to lisp symbols 41 void *l_difficulty,*l_easy,*l_hard,*l_medium,*l_main_menu,*l_extreme, 42 *l_logo,*l_state_art,*l_abilities,*l_state_sfx, 43 *l_song_list,*l_filename,*l_sfx_directory,*l_max_hp,*l_default_font, 44 *l_morph,*l_max_power,*l_default_abilities,*l_default_ai_function, 45 *l_tile_files,*l_empty_cache,*l_range,*l_hurt_all,*l_death_handler, 41 LispSymbol *l_chat_input, *l_post_render; 42 43 LispSymbol *l_difficulty, *l_easy, *l_hard, *l_medium, *l_extreme, 44 *l_max_hp, *l_max_power, 45 *l_empty_cache; 46 47 // FIXME: port these to LispSymbol 48 void *l_main_menu, *l_logo,*l_state_art,*l_abilities,*l_state_sfx, 49 *l_song_list,*l_filename,*l_sfx_directory,*l_default_font, 50 *l_morph,*l_default_abilities,*l_default_ai_function, 51 *l_tile_files,*l_range,*l_hurt_all,*l_death_handler, 46 52 *l_title_screen,*l_console_font,*l_fields,*l_dist,*l_pushx,*l_pushy, 47 53 *l_object,*l_tile,*l_fire_object,*l_FIRE,*l_cop_dead_parts,*l_restart_player, … … 55 61 *l_ask_save_slot, 56 62 *l_get_local_input, 57 *l_post_render,58 *l_chat_input,59 63 *l_player_text_color, 60 64 *l_level_loaded; // called when a new level is loaded … … 99 103 // to irnterface with c 100 104 { 101 l_easy=make_find_symbol("easy"); 102 l_medium=make_find_symbol("medium"); 103 l_hard=make_find_symbol("hard"); 104 l_extreme=make_find_symbol("extreme"); 105 106 l_logo=make_find_symbol("logo"); 107 l_morph=make_find_symbol("morph"); 108 109 l_pushx=make_find_symbol("pushx"); 110 l_pushy=make_find_symbol("pushy"); 111 112 l_dist=make_find_symbol("dist"); 113 l_state_art=make_find_symbol("state_art"); 114 l_abilities=make_find_symbol("abilities"); 115 l_default_abilities=make_find_symbol("default_abilities"); 116 l_state_sfx=make_find_symbol("state_sfx"); 117 l_filename=make_find_symbol("filename"); 118 l_sfx_directory=make_find_symbol("sfx_directory"); 119 l_default_font=make_find_symbol("default_font"); 120 l_console_font=make_find_symbol("console_font"); 121 l_default_ai_function=make_find_symbol("default_ai"); 122 l_tile_files=make_find_symbol("tile_files"); 123 l_empty_cache=make_find_symbol("empty_cache"); 124 l_range=make_find_symbol("range"); 125 l_difficulty=make_find_symbol("difficulty"); 126 l_death_handler=make_find_symbol("death_handler"); 127 l_title_screen=make_find_symbol("title_screen"); 128 l_fields=make_find_symbol("fields"); 129 l_FIRE=make_find_symbol("FIRE"); 130 l_fire_object=make_find_symbol("fire_object"); 131 l_cop_dead_parts=make_find_symbol("cop_dead_parts"); set_symbol_value(l_difficulty,l_hard); 132 l_restart_player=make_find_symbol("restart_player"); 133 l_help_screens=make_find_symbol("help_screens"); 134 l_save_order=make_find_symbol("save_order"); 135 l_next_song=make_find_symbol("next_song"); 136 l_player_draw=make_find_symbol("player_draw"); 137 l_sneaky_draw=make_find_symbol("sneaky_draw"); 138 l_keep_backup=make_find_symbol("keep_backup"); 139 l_level_loaded=make_find_symbol("level_loaded"); 140 141 l_draw_fast=make_find_symbol("draw_fast"); 142 l_player_tints=make_find_symbol("player_tints"); 143 144 l_max_hp=make_find_symbol("max_hp"); 145 set_symbol_number(l_max_hp,200); 146 l_max_power=make_find_symbol("max_power"); 147 l_main_menu=make_find_symbol("main_menu"); 148 set_symbol_number(l_max_power,999); 149 150 set_symbol_number(make_find_symbol("run_state"),RUN_STATE); 151 set_symbol_number(make_find_symbol("pause_state"),PAUSE_STATE); 152 set_symbol_number(make_find_symbol("menu_state"),MENU_STATE); 153 set_symbol_number(make_find_symbol("scene_state"),SCENE_STATE); 154 155 l_statbar_ammo_x=make_find_symbol("statbar_ammo_x"); 156 l_statbar_ammo_y=make_find_symbol("statbar_ammo_y"); 157 l_statbar_ammo_w=make_find_symbol("statbar_ammo_w"); 158 l_statbar_ammo_h=make_find_symbol("statbar_ammo_h"); 159 l_statbar_ammo_bg_color=make_find_symbol("statbar_ammo_bg_color"); 160 161 l_statbar_health_x=make_find_symbol("statbar_health_x"); 162 l_statbar_health_y=make_find_symbol("statbar_health_y"); 163 l_statbar_health_w=make_find_symbol("statbar_health_w"); 164 l_statbar_health_h=make_find_symbol("statbar_health_h"); 165 l_statbar_health_bg_color=make_find_symbol("statbar_health_bg_color"); 166 167 l_statbar_logo_x=make_find_symbol("statbar_logo_x"); 168 l_statbar_logo_y=make_find_symbol("statbar_logo_y"); 169 l_object=make_find_symbol("object"); 170 l_tile=make_find_symbol("tile"); 171 l_cdc_logo=make_find_symbol("logo"); 172 173 l_switch_to_powerful=make_find_symbol("switch_to_powerful"); 174 l_mouse_can_switch=make_find_symbol("mouse_can_switch"); 175 l_ask_save_slot=make_find_symbol("ask_save_slot"); 176 177 l_level_load_start=make_find_symbol("level_load_start"); 178 l_level_load_end=make_find_symbol("level_load_end"); 179 l_get_local_input=make_find_symbol("get_local_input"); 180 l_chat_input=make_find_symbol("chat_input"); 181 l_player_text_color=make_find_symbol("player_text_color"); 105 l_easy = LispSymbol::FindOrCreate("easy"); 106 l_medium = LispSymbol::FindOrCreate("medium"); 107 l_hard = LispSymbol::FindOrCreate("hard"); 108 l_extreme = LispSymbol::FindOrCreate("extreme"); 109 110 l_logo = LispSymbol::FindOrCreate("logo"); 111 l_morph = LispSymbol::FindOrCreate("morph"); 112 113 l_pushx = LispSymbol::FindOrCreate("pushx"); 114 l_pushy = LispSymbol::FindOrCreate("pushy"); 115 116 l_dist = LispSymbol::FindOrCreate("dist"); 117 l_state_art = LispSymbol::FindOrCreate("state_art"); 118 l_abilities = LispSymbol::FindOrCreate("abilities"); 119 l_default_abilities = LispSymbol::FindOrCreate("default_abilities"); 120 l_state_sfx = LispSymbol::FindOrCreate("state_sfx"); 121 l_filename = LispSymbol::FindOrCreate("filename"); 122 l_sfx_directory = LispSymbol::FindOrCreate("sfx_directory"); 123 l_default_font = LispSymbol::FindOrCreate("default_font"); 124 l_console_font = LispSymbol::FindOrCreate("console_font"); 125 l_default_ai_function = LispSymbol::FindOrCreate("default_ai"); 126 l_tile_files = LispSymbol::FindOrCreate("tile_files"); 127 l_empty_cache = LispSymbol::FindOrCreate("empty_cache"); 128 l_range = LispSymbol::FindOrCreate("range"); 129 l_difficulty = LispSymbol::FindOrCreate("difficulty"); 130 l_death_handler = LispSymbol::FindOrCreate("death_handler"); 131 l_title_screen = LispSymbol::FindOrCreate("title_screen"); 132 l_fields = LispSymbol::FindOrCreate("fields"); 133 l_FIRE = LispSymbol::FindOrCreate("FIRE"); 134 l_fire_object = LispSymbol::FindOrCreate("fire_object"); 135 l_cop_dead_parts = LispSymbol::FindOrCreate("cop_dead_parts"); 136 l_difficulty->SetValue(l_hard); 137 l_restart_player = LispSymbol::FindOrCreate("restart_player"); 138 l_help_screens = LispSymbol::FindOrCreate("help_screens"); 139 l_save_order = LispSymbol::FindOrCreate("save_order"); 140 l_next_song = LispSymbol::FindOrCreate("next_song"); 141 l_player_draw = LispSymbol::FindOrCreate("player_draw"); 142 l_sneaky_draw = LispSymbol::FindOrCreate("sneaky_draw"); 143 l_keep_backup = LispSymbol::FindOrCreate("keep_backup"); 144 l_level_loaded = LispSymbol::FindOrCreate("level_loaded"); 145 146 l_draw_fast = LispSymbol::FindOrCreate("draw_fast"); 147 l_player_tints = LispSymbol::FindOrCreate("player_tints"); 148 149 l_max_hp = LispSymbol::FindOrCreate("max_hp"); 150 l_max_hp->SetNumber(200); 151 l_max_power = LispSymbol::FindOrCreate("max_power"); 152 l_main_menu = LispSymbol::FindOrCreate("main_menu"); 153 l_max_power->SetNumber(999); 154 155 LispSymbol::FindOrCreate("run_state")->SetNumber(RUN_STATE); 156 LispSymbol::FindOrCreate("pause_state")->SetNumber(PAUSE_STATE); 157 LispSymbol::FindOrCreate("menu_state")->SetNumber(MENU_STATE); 158 LispSymbol::FindOrCreate("scene_state")->SetNumber(SCENE_STATE); 159 160 l_statbar_ammo_x = LispSymbol::FindOrCreate("statbar_ammo_x"); 161 l_statbar_ammo_y = LispSymbol::FindOrCreate("statbar_ammo_y"); 162 l_statbar_ammo_w = LispSymbol::FindOrCreate("statbar_ammo_w"); 163 l_statbar_ammo_h = LispSymbol::FindOrCreate("statbar_ammo_h"); 164 l_statbar_ammo_bg_color = LispSymbol::FindOrCreate("statbar_ammo_bg_color"); 165 166 l_statbar_health_x = LispSymbol::FindOrCreate("statbar_health_x"); 167 l_statbar_health_y = LispSymbol::FindOrCreate("statbar_health_y"); 168 l_statbar_health_w = LispSymbol::FindOrCreate("statbar_health_w"); 169 l_statbar_health_h = LispSymbol::FindOrCreate("statbar_health_h"); 170 l_statbar_health_bg_color = LispSymbol::FindOrCreate("statbar_health_bg_color"); 171 172 l_statbar_logo_x = LispSymbol::FindOrCreate("statbar_logo_x"); 173 l_statbar_logo_y = LispSymbol::FindOrCreate("statbar_logo_y"); 174 l_object = LispSymbol::FindOrCreate("object"); 175 l_tile = LispSymbol::FindOrCreate("tile"); 176 l_cdc_logo = LispSymbol::FindOrCreate("logo"); 177 178 l_switch_to_powerful = LispSymbol::FindOrCreate("switch_to_powerful"); 179 l_mouse_can_switch = LispSymbol::FindOrCreate("mouse_can_switch"); 180 l_ask_save_slot = LispSymbol::FindOrCreate("ask_save_slot"); 181 182 l_level_load_start = LispSymbol::FindOrCreate("level_load_start"); 183 l_level_load_end = LispSymbol::FindOrCreate("level_load_end"); 184 l_get_local_input = LispSymbol::FindOrCreate("get_local_input"); 185 l_chat_input = LispSymbol::FindOrCreate("chat_input"); 186 l_player_text_color = LispSymbol::FindOrCreate("player_text_color"); 182 187 183 188 int i; 184 189 for (i=0;i<MAX_STATE;i++) 185 set_symbol_number(make_find_symbol(state_names[i]),i);190 LispSymbol::FindOrCreate(state_names[i])->SetNumber(i); 186 191 for (i=0;i<TOTAL_ABILITIES;i++) 187 set_symbol_number(make_find_symbol(ability_names[i]),i);192 LispSymbol::FindOrCreate(ability_names[i])->SetNumber(i); 188 193 for (i=0;i<TOTAL_CFLAGS;i++) 189 set_symbol_number(make_find_symbol(cflag_names[i]),i);190 191 l_song_list =make_find_symbol("song_list");192 l_post_render =make_find_symbol("post_render");194 LispSymbol::FindOrCreate(cflag_names[i])->SetNumber(i); 195 196 l_song_list = LispSymbol::FindOrCreate("song_list"); 197 l_post_render = LispSymbol::FindOrCreate("post_render"); 193 198 194 199 add_c_function("distx",0,0, 1); … … 756 761 if (item_type(sym)!=L_SYMBOL) 757 762 { 758 lbreak("expecting first arg to def-character to be a symbol!\n");759 exit(0);763 lbreak("expecting first arg to def-character to be a symbol!\n"); 764 exit(0); 760 765 } 761 766 int sp=current_space; 762 767 current_space=PERM_SPACE; 763 s et_symbol_number(sym,total_objects); // set the symbol value to the object number768 sym->SetNumber(total_objects); // set the symbol value to the object number 764 769 current_space=sp; 765 770 if (!total_objects) … … 774 779 } 775 780 776 object_names[total_objects] = strdup(lstring_value(sym bol_name(sym)));781 object_names[total_objects] = strdup(lstring_value(sym->GetName())); 777 782 figures[total_objects]=new character_type(CDR(args),sym); 778 783 total_objects++; … … 794 799 { 795 800 #ifdef __linux__ 796 return make_find_symbol("LINUX");801 return LispSymbol::FindOrCreate("LINUX"); 797 802 #endif 798 803 #ifdef __sgi 799 return make_find_symbol("IRIX");804 return LispSymbol::FindOrCreate("IRIX"); 800 805 #endif 801 806 #ifdef __WIN32 802 return make_find_symbol("WIN32");807 return LispSymbol::FindOrCreate("WIN32"); 803 808 #endif 804 809 } break; … … 1366 1371 int id=cache.reg(lstring_value(lcar(args)),NULL,SPEC_EXTERN_SFX,1); 1367 1372 if (sym) 1368 s et_symbol_number(sym,id); // set the symbol value to sfx id1373 sym->SetNumber(id); // set the symbol value to sfx id 1369 1374 current_space=sp; 1370 1375 return id; -
abuse/trunk/src/clisp.h
r481 r484 14 14 15 15 // variables for the status bar 16 extern LispSymbol *l_chat_input, *l_post_render; 17 18 // FIXME: port these to LispSymbol 16 19 extern void *l_statbar_ammo_x,*l_statbar_ammo_y, 17 20 *l_statbar_ammo_w,*l_statbar_ammo_h, … … 34 37 *l_ask_save_slot, 35 38 *l_get_local_input, 36 *l_post_render,37 *l_chat_input,38 39 *l_player_text_color, 39 40 *l_level_loaded; // called when a new level is loaded … … 41 42 42 43 /******************************** Lisp objects **********************************/ 43 extern void *l_difficulty,*l_easy,*l_hard,*l_medium,*l_extreme,*l_main_menu, 44 extern LispSymbol *l_difficulty, *l_easy, *l_hard, *l_medium, *l_extreme, 45 *l_max_hp, *l_max_power, 46 *l_empty_cache; 47 48 // FIXME: port these to LispSymbol 49 extern void *l_main_menu, 44 50 *l_logo,*l_state_art,*l_default_abilities,*l_abilities, 45 *l_default_ai_function,*l_state_sfx, 46 *l_morph,*l_max_power, 47 *l_song_list,*l_filename,*l_sfx_directory,*l_max_hp,*l_default_font, 48 *l_empty_cache,*l_range,*l_joy_file,*l_death_handler, 51 *l_default_ai_function,*l_state_sfx, *l_morph, 52 *l_song_list,*l_filename,*l_sfx_directory,*l_default_font, 53 *l_range,*l_joy_file,*l_death_handler, 49 54 *l_title_screen,*l_console_font,*l_fields,*l_FIRE,*l_fire_object, 50 55 *l_cop_dead_parts,*l_restart_player,*l_help_screens,*l_save_order; -
abuse/trunk/src/compiled.cpp
r482 r484 42 42 static int32_t c_state(char const *name) 43 43 { 44 void *sym =find_symbol(name);44 void *sym = LispSymbol::Find(name); 45 45 if (sym) 46 46 { … … 122 122 S_DELETE_SND= c_state("DEL_OBJECT_SND"); 123 123 124 void *b =make_find_symbol("bad_guy_list");124 void *b = LispSymbol::FindOrCreate("bad_guy_list"); 125 125 if (b && DEFINEDP(symbol_value(b))) 126 126 { … … 138 138 } 139 139 140 void *v =symbol_value(make_find_symbol("last_save_game"));140 void *v = LispSymbol::FindOrCreate("last_save_game")->GetValue(); 141 141 if (DEFINEDP(v)) 142 142 last_save_game_number=lnumber_value(v); -
abuse/trunk/src/configuration.cpp
r481 r484 36 36 char tmp[40]; 37 37 sprintf( tmp, "player%d", player ); 38 Cell *f = find_symbol( tmp);39 if( !NILP( f ) && DEFINEDP( symbol_value( f ) ))40 { 41 void *what = symbol_value( f);42 if( what == make_find_symbol( "keyboard" ))38 LispSymbol *f = LispSymbol::Find(tmp); 39 if( !NILP(f) && DEFINEDP(f->GetValue())) 40 { 41 void *what = f->GetValue(); 42 if(what == LispSymbol::FindOrCreate("keyboard")) 43 43 return 1; 44 else if( what == make_find_symbol( "joystick" ))44 else if(what == LispSymbol::FindOrCreate("joystick")) 45 45 return 2; 46 46 } -
abuse/trunk/src/cop.cpp
r483 r484 727 727 if (o->lvars[just_fired_var]) 728 728 { 729 o->draw_double_tint(lnumber_value(((LispArray *) symbol_value(l_player_tints))->Get(num)),S_bright_tint);729 o->draw_double_tint(lnumber_value(((LispArray *)((LispSymbol *)l_player_tints)->GetValue())->Get(num)), S_bright_tint); 730 730 o->lvars[just_fired_var]=0; 731 731 } else 732 o->draw_tint(lnumber_value(((LispArray *) symbol_value(l_player_tints))->Get(num)));732 o->draw_tint(lnumber_value(((LispArray *)((LispSymbol *)l_player_tints)->GetValue())->Get(num))); 733 733 } 734 734 return NULL; … … 1021 1021 for (i=0;i<tp;i++) 1022 1022 { 1023 int color=lnumber_value(((LispArray *) symbol_value(l_player_text_color))->Get(sorted_players[i]->get_tint()));1023 int color=lnumber_value(((LispArray *)((LispSymbol *)l_player_text_color)->GetValue())->Get(sorted_players[i]->get_tint())); 1024 1024 sprintf(msg,"%3ld %s",(long)sorted_players[i]->kills,sorted_players[i]->name); 1025 1025 if (sorted_players[i]==local) … … 1062 1062 { 1063 1063 enum { NAME_LEN=18 } ; 1064 int color=lnumber_value(((LispArray *) symbol_value(l_player_text_color))->Get(v->get_tint()));1064 int color=lnumber_value(((LispArray *)((LispSymbol *)l_player_text_color)->GetValue())->Get(v->get_tint())); 1065 1065 char max_name[NAME_LEN]; 1066 1066 strncpy(max_name,v->name,NAME_LEN-1); -
abuse/trunk/src/demo.cpp
r481 r484 169 169 170 170 the_game->load_level(tname); 171 initial_difficulty =l_difficulty;171 initial_difficulty = l_difficulty; 172 172 173 173 switch (diff) 174 174 { 175 case 0 : 176 { set_symbol_value(l_difficulty,l_easy); } break; 177 case 1 : 178 { set_symbol_value(l_difficulty,l_medium); } break; 179 case 2 : 180 { set_symbol_value(l_difficulty,l_hard); } break; 181 case 3 : 182 { set_symbol_value(l_difficulty,l_extreme); } break; 175 case 0: l_difficulty->SetValue(l_easy); break; 176 case 1: l_difficulty->SetValue(l_medium); break; 177 case 2: l_difficulty->SetValue(l_hard); break; 178 case 3: l_difficulty->SetValue(l_extreme); break; 183 179 } 184 180 … … 207 203 */ 208 204 delete record_file; 209 l_difficulty =initial_difficulty;205 l_difficulty = initial_difficulty; 210 206 the_game->set_state(MENU_STATE); 211 207 wm->push_event(new event(ID_NULL,NULL)); -
abuse/trunk/src/demo.h
r481 r484 11 11 #define __DEMO_HPP_ 12 12 13 #include "lisp.h" 13 14 #include "jwindow.h" 14 15 15 16 class demo_manager 16 17 { 17 void*initial_difficulty;18 LispSymbol *initial_difficulty; 18 19 bFILE *record_file; 19 20 int skip_next; -
abuse/trunk/src/dev.cpp
r481 r484 42 42 char const *symbol_str(char const *name) 43 43 { 44 void *sym=make_find_symbol(name);45 if (sym bol_value(sym) && item_type(symbol_value(sym))==L_STRING)46 return lstring_value(sym bol_value(sym));44 LispSymbol *sym = LispSymbol::FindOrCreate(name); 45 if (sym->GetValue() && item_type(sym->GetValue())==L_STRING) 46 return lstring_value(sym->GetValue()); 47 47 48 48 … … 67 67 68 68 // check again to see if the symbol is there 69 sym =make_find_symbol(name);70 if (sym bol_value(sym) && item_type(symbol_value(sym))==L_STRING)71 return lstring_value(sym bol_value(sym));69 sym = LispSymbol::FindOrCreate(name); 70 if (sym->GetValue() && item_type(sym->GetValue())==L_STRING) 71 return lstring_value(sym->GetValue()); 72 72 73 73 74 74 // check to see if there is a missing symbol definition 75 sym =make_find_symbol("missing_sym");76 if (sym bol_value(sym) && item_type(symbol_value(sym))==L_STRING)77 return lstring_value(sym bol_value(sym));75 sym = LispSymbol::FindOrCreate("missing_sym"); 76 if (sym->GetValue() && item_type(sym->GetValue())==L_STRING) 77 return lstring_value(sym->GetValue()); 78 78 79 79 // last resort, return english string -
abuse/trunk/src/director.cpp
r481 r484 126 126 pan_time=frame_time=text_time=NULL; 127 127 int done=0; 128 void *pan_symbol=make_find_symbol("pan"),129 *text_symbol=make_find_symbol("text");128 LispSymbol *pan_symbol = LispSymbol::FindOrCreate("pan"), 129 *text_symbol = LispSymbol::FindOrCreate("text"); 130 130 131 131 JCFont *font=wm->font(); -
abuse/trunk/src/endgame.cpp
r481 r484 153 153 154 154 155 int explo_snd =lnumber_value(symbol_value(make_find_symbol("P_EXPLODE_SND")));156 int space_snd =lnumber_value(symbol_value(make_find_symbol("SPACE_SND")));157 int zip_snd =lnumber_value(symbol_value(make_find_symbol("SHIP_ZIP_SND")));155 int explo_snd = lnumber_value(LispSymbol::FindOrCreate("P_EXPLODE_SND")->GetValue()); 156 int space_snd = lnumber_value(LispSymbol::FindOrCreate("SPACE_SND")->GetValue()); 157 int zip_snd = lnumber_value(LispSymbol::FindOrCreate("SHIP_ZIP_SND")->GetValue()); 158 158 159 159 … … 370 370 cmap[i]=pal->find_closest(i*256/32,i*256/32,i*256/32); 371 371 372 void *end_plot =symbol_value(make_find_symbol("plot_end"));372 void *end_plot = LispSymbol::FindOrCreate("plot_end")->GetValue(); 373 373 374 374 … … 427 427 image *im=cache.img(cache.reg("art/endgame.spe","tbc",SPEC_IMAGE,1)); 428 428 429 void *to_be =symbol_value(make_find_symbol("to_be_continued"));429 void *to_be = LispSymbol::FindOrCreate("to_be_continued")->GetValue(); 430 430 p_ref r1(to_be); 431 431 432 void *mid_plot =symbol_value(make_find_symbol("plot_middle"));432 void *mid_plot = LispSymbol::FindOrCreate("plot_middle")->GetValue(); 433 433 p_ref r2(mid_plot); 434 435 434 436 435 int dx=(xres+1)/2-im->width()/2,dy=(yres+1)/2-im->height()/2; … … 486 485 int dx=(xres+1)/2-320/2,dy=(yres+1)/2-200/2; 487 486 488 void *end_plot =symbol_value(make_find_symbol("plot_end"));487 void *end_plot = LispSymbol::FindOrCreate("plot_end")->GetValue(); 489 488 p_ref r2(end_plot); 490 489 -
abuse/trunk/src/game.cpp
r482 r484 686 686 static void post_render() 687 687 { 688 if(DEFINEDP( symbol_function(l_post_render)))688 if(DEFINEDP(l_post_render->GetFunction())) 689 689 { 690 690 screen->dirt_off(); 691 691 clear_tmp(); 692 eval_function( (LispSymbol *)l_post_render, NULL);692 eval_function(l_post_render, NULL); 693 693 clear_tmp(); 694 694 screen->dirt_on(); … … 1232 1232 } 1233 1233 1234 void *logo_snd = symbol_value(make_find_symbol("LOGO_SND"));1234 void *logo_snd = LispSymbol::FindOrCreate("LOGO_SND")->GetValue(); 1235 1235 1236 1236 if(DEFINEDP(logo_snd) && (sound_avail & SFX_INITIALIZED)) … … 1249 1249 milli_wait(400); 1250 1250 1251 void *space_snd = symbol_value(make_find_symbol("SPACE_SND"));1251 void *space_snd = LispSymbol::FindOrCreate("SPACE_SND")->GetValue(); 1252 1252 1253 1253 fade_out(32); … … 1255 1255 1256 1256 int i; 1257 char *str = lstring_value(eval( make_find_symbol("plot_start")));1257 char *str = lstring_value(eval(LispSymbol::FindOrCreate("plot_start"))); 1258 1258 1259 1259 bFILE *fp = open_file("art/smoke.spe", "rb"); … … 2637 2637 if(!(main_net_cfg && main_net_cfg->restart_state())) 2638 2638 { 2639 void *end_msg = make_find_symbol("end_msg");2640 if(DEFINEDP( symbol_value(end_msg)))2641 printf("%s\n", lstring_value( symbol_value(end_msg)));2639 LispSymbol *end_msg = LispSymbol::FindOrCreate("end_msg"); 2640 if(DEFINEDP(end_msg->GetValue())) 2641 printf("%s\n", lstring_value(end_msg->GetValue())); 2642 2642 } 2643 2643 -
abuse/trunk/src/gamma.cpp
r481 r484 57 57 static char const *lang_string(char const *symbol) 58 58 { 59 void *v=find_symbol(symbol); 60 if (!v || !DEFINEDP(symbol_value(v))) return "Language symbol missing!"; 61 else return lstring_value(symbol_value(v)); 59 LispSymbol *v = LispSymbol::Find(symbol); 60 if (!v || !DEFINEDP(v->GetValue())) 61 return "Language symbol missing!"; 62 return lstring_value(v->GetValue()); 62 63 } 63 64 … … 68 69 69 70 // see if user has already done this routine 70 Cell *gs = find_symbol("darkest_gray");71 LispSymbol *gs = LispSymbol::Find("darkest_gray"); 71 72 72 73 if(old_pal) … … 77 78 } 78 79 79 if(gs && DEFINEDP( symbol_value(gs)) && !force_menu)80 { 81 dg = lnumber_value( symbol_value(gs));80 if(gs && DEFINEDP(gs->GetValue()) && !force_menu) 81 { 82 dg = lnumber_value(gs->GetValue()); 82 83 } 83 84 else 84 85 { 85 if(gs && DEFINEDP( symbol_value(gs)))86 { 87 dg = old_dg = lnumber_value( symbol_value(gs));86 if(gs && DEFINEDP(gs->GetValue())) 87 { 88 dg = old_dg = lnumber_value(gs->GetValue()); 88 89 } 89 90 // load in a fine gray palette they can chose from … … 181 182 int sp = current_space; 182 183 current_space = PERM_SPACE; 183 set_symbol_value(make_find_symbol("darkest_gray"), new_lisp_number(dg));184 LispSymbol::FindOrCreate("darkest_gray")->SetNumber(dg); 184 185 185 186 current_space = sp; -
abuse/trunk/src/level.cpp
r482 r484 1080 1080 { 1081 1081 if (figures[new_type]->seq[k] && 1082 !strcmp(lstring_value( symbol_name(figures[new_type]->seq_syms[k])),old_name))1082 !strcmp(lstring_value(((LispSymbol *)figures[new_type]->seq_syms[k])->GetName()),old_name)) 1083 1083 *(s_remap[i]+j)=k; 1084 1084 } … … 1119 1119 if (figures[new_type]->vars[k]) 1120 1120 { 1121 if (!strcmp(lstring_value( symbol_name(figures[new_type]->vars[k])),old_name))1121 if (!strcmp(lstring_value(((LispSymbol *)figures[new_type]->vars[k])->GetName()),old_name)) 1122 1122 *(v_remap[i]+j)=figures[new_type]->var_index[k]; 1123 1123 } … … 1560 1560 for (;j<figures[i]->ts;j++) 1561 1561 if (figures[i]->seq[j]) 1562 size+=1+strlen(lstring_value( symbol_name(figures[i]->seq_syms[j])))+1;1562 size+=1+strlen(lstring_value(((LispSymbol *)figures[i]->seq_syms[j])->GetName()))+1; 1563 1563 } 1564 1564 sd.add_by_hand(new spec_entry(SPEC_DATA_ARRAY,"describe_states",NULL,size,0)); … … 1573 1573 for (;j<figures[i]->tiv;j++) 1574 1574 if (figures[i]->vars[j]) 1575 size+=1+strlen(lstring_value( symbol_name(figures[i]->vars[j])))+1;1575 size+=1+strlen(lstring_value(((LispSymbol *)figures[i]->vars[j])->GetName()))+1; 1576 1576 } 1577 1577 sd.add_by_hand(new spec_entry(SPEC_DATA_ARRAY,"describe_lvars",NULL,size,0)); … … 1827 1827 } else 1828 1828 { 1829 void *fun=make_find_symbol("set_player_defaults");1830 if (DEFINEDP( symbol_function(fun)))1829 LispSymbol *fun = LispSymbol::FindOrCreate("set_player_defaults"); 1830 if (DEFINEDP(fun->GetFunction())) 1831 1831 { 1832 1832 view *f; … … 1838 1838 current_object=f->focus; 1839 1839 void *m=mark_heap(TMP_SPACE); 1840 eval_function( (LispSymbol *)fun,NULL);1840 eval_function(fun,NULL); 1841 1841 restore_heap(m,TMP_SPACE); 1842 1842 } … … 1887 1887 if (figures[i]->seq[j]) 1888 1888 { 1889 char *state_name=lstring_value( symbol_name(figures[i]->seq_syms[j]));1889 char *state_name=lstring_value(((LispSymbol *)figures[i]->seq_syms[j])->GetName()); 1890 1890 fp->write_uint8(strlen(state_name)+1); 1891 1891 fp->write(state_name,strlen(state_name)+1); … … 1906 1906 if (figures[i]->vars[j] && figures[i]->var_index[j]==x) 1907 1907 { 1908 char *var_name=lstring_value( symbol_name(figures[i]->vars[j]));1908 char *var_name=lstring_value(((LispSymbol *)figures[i]->vars[j])->GetName()); 1909 1909 fp->write_uint8(strlen(var_name)+1); 1910 1910 fp->write(var_name,strlen(var_name)+1); -
abuse/trunk/src/lisp/lisp.cpp
r483 r484 820 820 */ 821 821 822 LispSymbol *find_symbol(char const *name) 823 { 824 LispSymbol *p=lsym_root; 825 while (p) 826 { 827 int cmp=strcmp(name, ((char *)p->name)+sizeof(LispString)); 828 if (cmp==0) return p; 829 else if (cmp<0) p=p->left; 830 else p=p->right; 831 } 832 return NULL; 833 } 834 835 836 837 LispSymbol *make_find_symbol(char const *name) 838 { 839 LispSymbol *p=lsym_root; 840 LispSymbol **parent=&lsym_root; 841 while (p) 842 { 843 int cmp=strcmp(name, ((char *)p->name)+sizeof(LispString)); 844 if (cmp==0) return p; 845 else if (cmp<0) 846 { 847 parent=&p->left; 848 p=p->left; 849 } 850 else 851 { 852 parent=&p->right; 853 p=p->right; 854 } 855 } 856 int sp=current_space; 857 if (current_space!=GC_SPACE) 858 current_space=PERM_SPACE; // make sure all symbols get defined in permanant space 859 860 p=(LispSymbol *)malloc(sizeof(LispSymbol)); 861 p->type=L_SYMBOL; 862 p->name=new_lisp_string(name); 863 864 if (name[0]==':') // constant, set the value to ourself 865 p->value=p; 866 else 867 p->value=l_undefined; 868 p->function=l_undefined; 822 LispSymbol *LispSymbol::Find(char const *name) 823 { 824 LispSymbol *p = lsym_root; 825 while (p) 826 { 827 int cmp = strcmp(name, ((char *)p->name) + sizeof(LispString)); 828 if (cmp == 0) 829 return p; 830 p = (cmp < 0) ? p->left : p->right; 831 } 832 return NULL; 833 } 834 835 LispSymbol *LispSymbol::FindOrCreate(char const *name) 836 { 837 LispSymbol *p = lsym_root; 838 LispSymbol **parent = &lsym_root; 839 while (p) 840 { 841 int cmp = strcmp(name, ((char *)p->name) + sizeof(LispString)); 842 if (cmp == 0) 843 return p; 844 parent = (cmp < 0) ? &p->left : &p->right; 845 p = *parent; 846 } 847 848 // Make sure all symbols get defined in permanant space 849 int sp = current_space; 850 if (current_space != GC_SPACE) 851 current_space = PERM_SPACE; 852 853 p = (LispSymbol *)malloc(sizeof(LispSymbol)); 854 p->type = L_SYMBOL; 855 p->name = new_lisp_string(name); 856 857 // If constant, set the value to ourself 858 p->value = (name[0] == ':') ? p : l_undefined; 859 p->function = l_undefined; 869 860 #ifdef L_PROFILE 870 p->time_taken=0; 871 #endif 872 p->left=p->right=NULL; 873 *parent=p; 874 ltotal_syms++; 875 876 current_space=sp; 877 return p; 878 } 879 861 p->time_taken = 0; 862 #endif 863 p->left = p->right = NULL; 864 *parent = p; 865 ltotal_syms++; 866 867 current_space = sp; 868 return p; 869 } 880 870 881 871 void ldelete_syms(LispSymbol *root) … … 898 888 { 899 889 if (lisp_eq(CAR(CAR(list)), item)) 900 return lcar(list); 890 return lcar(list); 901 891 list=(LispList *)(CDR(list)); 902 892 } … … 967 957 } 968 958 969 void *lookup_symbol_function(void *symbol) 970 { 971 return ((LispSymbol *)symbol)->function; 972 } 973 974 void set_symbol_function(void *symbol, void *function) 975 { 976 ((LispSymbol *)symbol)->function=function; 977 } 978 979 void *lookup_symbol_value(void *symbol) 980 { 981 #ifdef TYPE_CHECKING 982 if (((LispSymbol *)symbol)->value!=l_undefined) 983 #endif 984 return ((LispSymbol *)symbol)->value; 985 #ifdef TYPE_CHECKING 986 else 987 { 988 lprint(symbol); 989 lbreak(" has no value\n"); 990 exit(0); 991 } 992 #endif 993 return NULL; 994 } 995 996 void set_variable_value(void *symbol, void *value) 997 { 998 ((LispSymbol *) symbol)->value=value; 959 void LispSymbol::SetFunction(void *fun) 960 { 961 function = fun; 999 962 } 1000 963 … … 1002 965 { 1003 966 need_perm_space("add_sys_function"); 1004 LispSymbol *s =make_find_symbol(name);967 LispSymbol *s = LispSymbol::FindOrCreate(name); 1005 968 if (s->function!=l_undefined) 1006 969 { … … 1018 981 if (s->value!=l_undefined) 1019 982 { 1020 lbreak("add_c_object -> symbol %s already has a value\n", lstring_value(s ymbol_name(s)));983 lbreak("add_c_object -> symbol %s already has a value\n", lstring_value(s->GetName())); 1021 984 exit(0); 1022 985 } … … 1029 992 total_user_functions++; 1030 993 need_perm_space("add_c_function"); 1031 LispSymbol *s =make_find_symbol(name);994 LispSymbol *s = LispSymbol::FindOrCreate(name); 1032 995 if (s->function!=l_undefined) 1033 996 { … … 1043 1006 total_user_functions++; 1044 1007 need_perm_space("add_c_bool_fun"); 1045 LispSymbol *s =make_find_symbol(name);1008 LispSymbol *s = LispSymbol::FindOrCreate(name); 1046 1009 if (s->function!=l_undefined) 1047 1010 { … … 1058 1021 total_user_functions++; 1059 1022 need_perm_space("add_c_bool_fun"); 1060 LispSymbol *s =make_find_symbol(name);1023 LispSymbol *s = LispSymbol::FindOrCreate(name); 1061 1024 if (s->function!=l_undefined) 1062 1025 { … … 1286 1249 void *cs=new_cons_cell(), *c2=NULL, *tmp; 1287 1250 p_ref r4(cs), r5(c2); 1288 tmp =make_find_symbol("function");1251 tmp = LispSymbol::FindOrCreate("function"); 1289 1252 ((LispList *)cs)->car=tmp; 1290 1253 c2=new_cons_cell(); … … 1300 1263 } 1301 1264 } else { 1302 ret = make_find_symbol(n);1265 ret = LispSymbol::FindOrCreate(n); 1303 1266 } 1304 1267 return ret; … … 1587 1550 { 1588 1551 char st[100]; 1589 sprintf(st, "%20s %f\n", lstring_value( symbol_name(p)), ((LispSymbol *)p)->time_taken);1552 sprintf(st, "%20s %f\n", lstring_value(p->GetName()), p->time_taken); 1590 1553 out->write(st, strlen(st)); 1591 1554 } … … 2149 2112 case SYS_FUNC_DEFUN: 2150 2113 { 2151 void *symbol=CAR(arg_list);2114 LispSymbol *symbol = (LispSymbol *)CAR(arg_list); 2152 2115 #ifdef TYPE_CHECKING 2153 2116 if (item_type(symbol)!=L_SYMBOL) … … 2174 2137 LispUserFunction *ufun=new_lisp_user_function(lcar(lcdr(arg_list)), block_list); 2175 2138 #endif 2176 s et_symbol_function(symbol,ufun);2139 symbol->SetFunction(ufun); 2177 2140 ret=symbol; 2178 2141 } break; … … 2279 2242 } break; 2280 2243 case SYS_FUNC_FUNCTION: 2281 ret =lookup_symbol_function(eval(CAR(arg_list)));2244 ret = ((LispSymbol *)eval(CAR(arg_list)))->GetFunction(); 2282 2245 break; 2283 2246 case SYS_FUNC_MAPCAR: … … 2402 2365 { 2403 2366 delete fp; 2404 if( DEFINEDP(symbol_value(load_warning)) && symbol_value(load_warning) ) 2367 if( DEFINEDP(((LispSymbol *)load_warning)->GetValue()) 2368 && ((LispSymbol *)load_warning)->GetValue()) 2405 2369 dprintf("Warning : file %s does not exist\n", st); 2406 2370 ret = NULL; … … 2560 2524 case SYS_FUNC_FOR: 2561 2525 { 2562 void *bind_var=CAR(arg_list); arg_list=CDR(arg_list); 2526 LispSymbol *bind_var = (LispSymbol *)CAR(arg_list); 2527 arg_list = CDR(arg_list); 2563 2528 p_ref r1(bind_var); 2564 2529 if (item_type(bind_var)!=L_SYMBOL) … … 2578 2543 void *block=NULL, *ret=NULL; 2579 2544 p_ref r3(block); 2580 l_user_stack.push( symbol_value(bind_var)); // save old symbol value2545 l_user_stack.push(bind_var->GetValue()); // save old symbol value 2581 2546 while (ilist) 2582 2547 { 2583 set_symbol_value(bind_var,CAR(ilist));2548 bind_var->SetValue(CAR(ilist)); 2584 2549 for (block=arg_list;block;block=CDR(block)) 2585 2550 ret=eval(CAR(block)); 2586 2551 ilist=CDR(ilist); 2587 2552 } 2588 set_symbol_value(bind_var, l_user_stack.pop(1));2553 bind_var->SetValue(l_user_stack.pop(1)); // restore symbol value 2589 2554 ret=ret; 2590 2555 } break; … … 2729 2694 p_ref r1(init_var); 2730 2695 int i, ustack_start=l_user_stack.son; // restore stack at end 2731 void *sym=NULL;2696 LispSymbol *sym = NULL; 2732 2697 p_ref r2(sym); 2733 2698 … … 2735 2700 for (init_var=CAR(arg_list);init_var;init_var=CDR(init_var)) 2736 2701 { 2737 sym =CAR(CAR(init_var));2702 sym = (LispSymbol *)CAR(CAR(init_var)); 2738 2703 if (item_type(sym)!=L_SYMBOL) 2739 2704 { lbreak("expecting symbol name for iteration var\n"); exit(0); } 2740 l_user_stack.push(sym bol_value(sym));2705 l_user_stack.push(sym->GetValue()); 2741 2706 } 2742 2707 … … 2749 2714 for (init_var=CAR(arg_list);init_var;init_var=CDR(init_var), do_evaled++) 2750 2715 { 2751 sym =CAR(CAR(init_var));2752 s et_symbol_value(sym,*do_evaled);2716 sym = (LispSymbol *)CAR(CAR(init_var)); 2717 sym->SetValue(*do_evaled); 2753 2718 } 2754 2719 … … 2771 2736 for (init_var=CAR(arg_list);init_var;init_var=CDR(init_var), do_evaled++) 2772 2737 { 2773 sym =CAR(CAR(init_var));2774 s et_symbol_value(sym,*do_evaled);2738 sym = (LispSymbol *)CAR(CAR(init_var)); 2739 sym->SetValue(*do_evaled); 2775 2740 } 2776 2741 … … 3050 3015 else 3051 3016 { 3052 ret =lookup_symbol_value(prog);3017 ret = ((LispSymbol *)prog)->GetValue(); 3053 3018 if (item_type(ret)==L_OBJECT_VAR) 3054 3019 ret=l_obj_get(((LispObjectVar *)ret)->number); … … 3162 3127 } 3163 3128 3164 void *symbol_name(void *symbol) 3165 { 3166 return ((LispSymbol *)symbol)->name; 3167 } 3168 3169 3170 void *set_symbol_number(void *symbol, long num) 3129 void *LispSymbol::GetName() 3171 3130 { 3172 3131 #ifdef TYPE_CHECKING 3173 if (item_type(symbol)!=L_SYMBOL) 3174 { 3175 lprint(symbol); 3176 lbreak("is not a symbol\n"); 3177 exit(0); 3178 } 3179 #endif 3180 if (((LispSymbol *)symbol)->value!=l_undefined && 3181 item_type(((LispSymbol *)symbol)->value)==L_NUMBER) 3182 ((LispNumber *)((LispSymbol *)symbol)->value)->num=num; 3183 else 3184 ((LispSymbol *)(symbol))->value=new_lisp_number(num); 3185 3186 return ((LispSymbol *)(symbol))->value; 3187 } 3188 3189 void *set_symbol_value(void *symbol, void *value) 3132 if (item_type(this) != L_SYMBOL) 3133 { 3134 lprint(this); 3135 lbreak("is not a symbol\n"); 3136 exit(0); 3137 } 3138 #endif 3139 return name; 3140 } 3141 3142 void *LispSymbol::SetNumber(long num) 3190 3143 { 3191 3144 #ifdef TYPE_CHECKING 3192 if (item_type(symbol)!=L_SYMBOL) 3193 { 3194 lprint(symbol); 3195 lbreak("is not a symbol\n"); 3196 exit(0); 3197 } 3198 #endif 3199 ((LispSymbol *)(symbol))->value=value; 3200 return value; 3201 } 3202 3203 void *symbol_function(void *symbol) 3145 if (item_type(this) != L_SYMBOL) 3146 { 3147 lprint(this); 3148 lbreak("is not a symbol\n"); 3149 exit(0); 3150 } 3151 #endif 3152 if (value != l_undefined && item_type(value) == L_NUMBER) 3153 ((LispNumber *)value)->num = num; 3154 else 3155 value = new_lisp_number(num); 3156 3157 return value; 3158 } 3159 3160 void *LispSymbol::SetValue(void *val) 3204 3161 { 3205 3162 #ifdef TYPE_CHECKING 3206 if (item_type(symbol)!=L_SYMBOL) 3207 { 3208 lprint(symbol); 3209 lbreak("is not a symbol\n"); 3210 exit(0); 3211 } 3212 #endif 3213 return ((LispSymbol *)symbol)->function; 3214 } 3215 3216 void *symbol_value(void *symbol) 3163 if (item_type(this) != L_SYMBOL) 3164 { 3165 lprint(this); 3166 lbreak("is not a symbol\n"); 3167 exit(0); 3168 } 3169 #endif 3170 value = val; 3171 return value; 3172 } 3173 3174 void *LispSymbol::GetFunction() 3217 3175 { 3218 3176 #ifdef TYPE_CHECKING 3219 if (item_type(symbol)!=L_SYMBOL) 3220 { 3221 lprint(symbol); 3222 lbreak("is not a symbol\n"); 3223 exit(0); 3224 } 3225 #endif 3226 return ((LispSymbol *)symbol)->value; 3227 } 3228 3229 3230 3231 3232 3233 3177 if (item_type(this) != L_SYMBOL) 3178 { 3179 lprint(this); 3180 lbreak("is not a symbol\n"); 3181 exit(0); 3182 } 3183 #endif 3184 return function; 3185 } 3186 3187 void *LispSymbol::GetValue() 3188 { 3189 #ifdef TYPE_CHECKING 3190 if (item_type(this) != L_SYMBOL) 3191 { 3192 lprint(this); 3193 lbreak("is not a symbol\n"); 3194 exit(0); 3195 } 3196 #endif 3197 return value; 3198 } 3199 -
abuse/trunk/src/lisp/lisp.h
r483 r484 71 71 }; 72 72 73 struct LispString : LispObject 74 { 75 }; 76 73 77 struct LispSymbol : LispObject 74 78 { 79 static LispSymbol *Find(char const *name); 80 static LispSymbol *FindOrCreate(char const *name); 81 82 void *GetName(); 83 void *GetFunction(); 84 void *GetValue(); 85 86 void SetFunction(void *fun); 87 void *SetValue(void *value); 88 void *SetNumber(long num); 89 75 90 #ifdef L_PROFILE 76 91 float time_taken; 77 92 #endif 78 void *value, *function, *name; 93 void *value, *function; 94 LispString *name; 79 95 LispSymbol *left, *right; // tree structure 80 96 }; … … 107 123 private: 108 124 LispObject *data[1]; 109 };110 111 struct LispString : LispObject112 {113 125 }; 114 126 … … 147 159 void *lisp_eq(void *n1, void *n2); 148 160 void *lisp_equal(void *n1, void *n2); 149 LispSymbol *find_symbol(char const *name);150 161 long list_length(void *i); 151 162 void lprint(void *i); … … 155 166 void *eval_user_fun(LispSymbol *sym, void *arg_list); 156 167 void *compile(char const *&s); 157 void *symbol_value(void *symbol);158 void *symbol_function(void *symbol);159 void *set_symbol_number(void *symbol, long num);160 void *set_symbol_value(void *symbol, void *value);161 void *symbol_name(void *symbol);162 168 void *assoc(void *item, void *list); 163 169 void resize_tmp(int new_size); 164 170 void resize_perm(int new_size); 165 LispSymbol *make_find_symbol(char const *name);166 171 167 172 void push_onto_list(void *object, void *&list); … … 222 227 extern void l_obj_print(long number); // exten lisp function switches on number 223 228 224 225 226 #endif 229 // FIXME: get rid of this later 230 static inline void *symbol_value(void *sym) { return ((LispSymbol *)sym)->GetValue(); } 231 232 233 234 #endif -
abuse/trunk/src/lisp/lisp_gc.cpp
r483 r484 224 224 root->value = collect_object(root->value); 225 225 root->function = collect_object(root->function); 226 root->name = collect_object(root->name);226 root->name = (LispString *)collect_object(root->name); 227 227 collect_symbols(root->left); 228 228 collect_symbols(root->right); -
abuse/trunk/src/lisp/lisp_gc.h
r483 r484 25 25 p_ref(LispObject *&ref) { l_ptr_stack.push((void **)&ref); } 26 26 p_ref(LispArray *&ref) { l_ptr_stack.push((void **)&ref); } 27 p_ref(LispSymbol *&ref) { l_ptr_stack.push((void **)&ref); } 27 28 ~p_ref() { l_ptr_stack.pop(1); } 28 29 } ; -
abuse/trunk/src/lisp/lisp_opt.cpp
r482 r484 91 91 } 92 92 93 94 93 void l_comp_init() 95 94 { 96 l_undefined=make_find_symbol(":UNDEFINED"); // this needs to be defined first 97 ((LispSymbol *)l_undefined)->function=NULL; // collection problems result if we don't do this 98 ((LispSymbol *)l_undefined)->value=NULL; 95 // This needs to be defined first 96 l_undefined = LispSymbol::FindOrCreate(":UNDEFINED"); 99 97 98 // Collection problems result if we don't do this 99 ((LispSymbol *)l_undefined)->function = NULL; 100 ((LispSymbol *)l_undefined)->value = NULL; 100 101 101 true_symbol=make_find_symbol("T");102 true_symbol = LispSymbol::FindOrCreate("T"); 102 103 104 list_symbol = LispSymbol::FindOrCreate("list"); 105 string_symbol = LispSymbol::FindOrCreate("string"); 106 quote_symbol = LispSymbol::FindOrCreate("quote"); 107 backquote_symbol = LispSymbol::FindOrCreate("backquote"); 108 comma_symbol = LispSymbol::FindOrCreate("comma"); 109 in_symbol = LispSymbol::FindOrCreate("in"); 110 do_symbol = LispSymbol::FindOrCreate("do"); 111 aref_symbol = LispSymbol::FindOrCreate("aref"); 112 colon_initial_contents = LispSymbol::FindOrCreate(":initial-contents"); 113 colon_initial_element = LispSymbol::FindOrCreate(":initial-element"); 103 114 104 list_symbol=make_find_symbol("list"); 105 string_symbol=make_find_symbol("string"); 106 quote_symbol=make_find_symbol("quote"); 107 backquote_symbol=make_find_symbol("backquote"); 108 comma_symbol=make_find_symbol("comma"); 109 in_symbol=make_find_symbol("in"); 110 do_symbol=make_find_symbol("do"); 111 aref_symbol=make_find_symbol("aref"); 112 colon_initial_contents=make_find_symbol(":initial-contents"); 113 colon_initial_element=make_find_symbol(":initial-element"); 115 if_1progn = LispSymbol::FindOrCreate("if-1progn"); 116 if_2progn = LispSymbol::FindOrCreate("if-2progn"); 117 if_12progn = LispSymbol::FindOrCreate("if-12progn"); 118 if_symbol = LispSymbol::FindOrCreate("if"); 119 progn_symbol = LispSymbol::FindOrCreate("progn"); 120 not_symbol = LispSymbol::FindOrCreate("not"); 121 eq_symbol = LispSymbol::FindOrCreate("eq"); 122 zero_symbol = LispSymbol::FindOrCreate("0"); 123 eq0_symbol = LispSymbol::FindOrCreate("eq0"); 124 car_symbol = LispSymbol::FindOrCreate("car"); 125 cdr_symbol = LispSymbol::FindOrCreate("cdr"); 126 load_warning = LispSymbol::FindOrCreate("load_warning"); 127 } 114 128 115 if_1progn=make_find_symbol("if-1progn");116 if_2progn=make_find_symbol("if-2progn");117 if_12progn=make_find_symbol("if-12progn");118 if_symbol=make_find_symbol("if");119 progn_symbol=make_find_symbol("progn");120 not_symbol=make_find_symbol("not");121 eq_symbol=make_find_symbol("eq");122 zero_symbol=make_find_symbol("0");123 eq0_symbol=make_find_symbol("eq0");124 car_symbol=make_find_symbol("car");125 cdr_symbol=make_find_symbol("cdr");126 load_warning=make_find_symbol("load_warning");127 } -
abuse/trunk/src/loader2.cpp
r481 r484 367 367 368 368 char const *ff; 369 if (DEFINEDP(symbol_value(make_find_symbol("frame_file")))) 370 ff=lstring_value(symbol_value(make_find_symbol("frame_file"))); 369 // FIXME: unnecessary duplicate call 370 if (DEFINEDP(LispSymbol::FindOrCreate("frame_file")->GetValue())) 371 ff = lstring_value(LispSymbol::FindOrCreate("frame_file")->GetValue()); 371 372 else 372 ff ="art/frame.spe";373 ff = "art/frame.spe"; 373 374 374 375 ok_button = cache.reg(ff,"dev_ok",SPEC_IMAGE); … … 415 416 { 416 417 if (!strcmp(argv[i],"-ec")) 417 set_symbol_value(l_empty_cache,true_symbol);418 l_empty_cache->SetValue(true_symbol); 418 419 if (!strcmp(argv[i],"-t")) 419 420 { -
abuse/trunk/src/menu.cpp
r481 r484 377 377 void show_sell(int abortable) 378 378 { 379 void *ss=make_find_symbol("sell_screens");380 if (!DEFINEDP(s ymbol_value(ss)))379 LispSymbol *ss = LispSymbol::FindOrCreate("sell_screens"); 380 if (!DEFINEDP(ss->GetValue())) 381 381 { 382 382 int sp=current_space; … … 385 385 // char *prog="((\"art/endgame.spe\" . \"credit\") (\"art/help.spe\" . \"sell6\"))"; 386 386 char const *prog="((\"art/endgame.spe\" . \"credit\"))"; 387 s et_symbol_value(ss,compile(prog));387 ss->SetValue(compile(prog)); 388 388 current_space=sp; 389 389 } 390 390 391 if (DEFINEDP(s ymbol_value(ss)))391 if (DEFINEDP(ss->GetValue())) 392 392 { 393 393 image blank(2,2); blank.clear(); 394 394 wm->set_mouse_shape(blank.copy(),0,0); // don't show mouse 395 395 396 ss=symbol_value(ss);396 LispObject *tmp = (LispObject *)ss->GetValue(); 397 397 int quit=0; 398 while ( ss&& !quit)399 { 400 int im=cache.reg_object("art/help.spe",CAR( ss),SPEC_IMAGE,1);398 while (tmp && !quit) 399 { 400 int im=cache.reg_object("art/help.spe",CAR(tmp),SPEC_IMAGE,1); 401 401 fade_in(cache.img(im),16); 402 402 … … 409 409 quit=1; 410 410 fade_out(16); 411 ss=CDR(ss);411 tmp = (LispObject *)CDR(tmp); 412 412 } 413 413 wm->set_mouse_shape(cache.img(c_normal)->copy(),1,1); … … 469 469 case ID_MEDIUM : 470 470 { 471 set_symbol_value(l_difficulty,l_medium);471 l_difficulty->SetValue(l_medium); 472 472 save_difficulty(); 473 473 } break; 474 474 case ID_HARD : 475 475 { 476 set_symbol_value(l_difficulty,l_hard);476 l_difficulty->SetValue(l_hard); 477 477 save_difficulty(); 478 478 } break; 479 479 case ID_EXTREME : 480 480 { 481 set_symbol_value(l_difficulty,l_extreme);481 l_difficulty->SetValue(l_extreme); 482 482 save_difficulty(); 483 483 } break; 484 484 case ID_EASY : 485 485 { 486 set_symbol_value(l_difficulty,l_easy);486 l_difficulty->SetValue(l_easy); 487 487 save_difficulty(); 488 488 } break; … … 696 696 if (!current_demo) 697 697 { 698 void *d=make_find_symbol("demos");699 if (DEFINEDP( symbol_value(d)))700 current_demo =symbol_value(d);698 LispSymbol *d = LispSymbol::FindOrCreate("demos"); 699 if (DEFINEDP(d->GetValue())) 700 current_demo = d->GetValue(); 701 701 } 702 702 if (current_demo) -
abuse/trunk/src/objects.cpp
r482 r484 105 105 for (i=0;i<figures[otype]->tiv;i++) 106 106 { 107 if (!strcmp(lstring_value( symbol_name(figures[otype]->vars[i])),name))107 if (!strcmp(lstring_value(((LispSymbol *)figures[otype]->vars[i])->GetName()),name)) 108 108 { 109 109 return lvars[figures[otype]->var_index[i]]; … … 135 135 } 136 136 for (i=0;i<figures[otype]->tiv;i++) 137 if (!strcmp(lstring_value( symbol_name(figures[otype]->vars[i])),name))137 if (!strcmp(lstring_value(((LispSymbol *)figures[otype]->vars[i])->GetName()),name)) 138 138 { 139 139 lvars[figures[otype]->var_index[i]]=value; -
abuse/trunk/src/particle.cpp
r482 r484 70 70 int sp=current_space; 71 71 current_space=PERM_SPACE; 72 s et_symbol_number(sym,total_pseqs);// set the symbol value to the object number72 sym->SetNumber(total_pseqs); // set the symbol value to the object number 73 73 current_space=sp; 74 74 pseqs=(part_sequence **)realloc(pseqs,sizeof(part_sequence *)*(total_pseqs+1)); -
abuse/trunk/src/statbar.cpp
r481 r484 41 41 char sbname[100]; 42 42 char iname[20]; 43 void *l_name =make_find_symbol("sbar_file");43 void *l_name = LispSymbol::FindOrCreate("sbar_file"); 44 44 if (symbol_value(l_name)!=l_undefined) 45 45 strcpy(sbname,lstring_value(symbol_value(l_name))); -
abuse/trunk/src/view.cpp
r482 r484 453 453 if (len>38 || key==JK_ENTER) 454 454 { 455 if (DEFINEDP( symbol_function(l_chat_input)))455 if (DEFINEDP(l_chat_input->GetFunction())) 456 456 { 457 457 game_object *o=current_object;
Note: See TracChangeset
for help on using the changeset viewer.