浏览代码

- Script label db now utilizes `DBMap`'s ability to store integer-type data (follow-up to r15682).
- Some minor code cleanups.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15734 54d463be-8e91-2dee-dedb-b68131a5f0ec

gepard1984 13 年之前
父节点
当前提交
b610cb1a7c
共有 2 个文件被更改,包括 8 次插入8 次删除
  1. 2 2
      src/map/npc.c
  2. 6 6
      src/map/script.c

+ 2 - 2
src/map/npc.c

@@ -2148,7 +2148,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
 int npc_convertlabel_db(DBKey key, DBData *data, va_list ap)
 {
 	const char* lname = (const char*)key.str;
-	int lpos = (int)db_data2ptr(data);
+	int lpos = db_data2i(data);
 	struct npc_label_list** label_list;
 	int* label_list_num;
 	const char* filepath;
@@ -2299,7 +2299,7 @@ static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, cons
 	{
 		DBMap* label_db = script_get_label_db();
 		label_db->foreach(label_db, npc_convertlabel_db, &label_list, &label_list_num, filepath);
-		label_db->clear(label_db, NULL); // not needed anymore, so clear the db
+		db_clear(label_db); // not needed anymore, so clear the db
 	}
 
 	CREATE(nd, struct npc_data, 1);

+ 6 - 6
src/map/script.c

@@ -214,8 +214,8 @@ int str_hash[SCRIPT_HASH_SIZE];
 static DBMap* scriptlabel_db=NULL; // const char* label_name -> int script_pos
 static DBMap* userfunc_db=NULL; // const char* func_name -> struct script_code*
 static int parse_options=0;
-DBMap* script_get_label_db(){ return scriptlabel_db; }
-DBMap* script_get_userfunc_db(){ return userfunc_db; }
+DBMap* script_get_label_db(void){ return scriptlabel_db; }
+DBMap* script_get_userfunc_db(void){ return userfunc_db; }
 
 // Caches compiled autoscript item code. 
 // Note: This is not cleared when reloading itemdb.
@@ -1627,7 +1627,7 @@ const char* parse_syntax(const char* p)
 					str_data[l].type = C_USERFUNC;
 					set_label(l, script_pos, p);
 					if( parse_options&SCRIPT_USE_LABEL_DB )
-						strdb_put(scriptlabel_db, get_str(l), (void*)script_pos);
+						strdb_iput(scriptlabel_db, get_str(l), script_pos);
 				}
 				else
 					disp_error_message("parse_syntax:function: function name is invalid", func_name);
@@ -2096,7 +2096,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o
 
 	// who called parse_script is responsible for clearing the database after using it, but just in case... lets clear it here
 	if( options&SCRIPT_USE_LABEL_DB )
-		scriptlabel_db->clear(scriptlabel_db, NULL);
+		db_clear(scriptlabel_db);
 	parse_options = options;
 
 	if( setjmp( error_jump ) != 0 ) {
@@ -2170,7 +2170,7 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o
 			i=add_word(p);
 			set_label(i,script_pos,p);
 			if( parse_options&SCRIPT_USE_LABEL_DB )
-				strdb_put(scriptlabel_db, get_str(i), (void*)script_pos);
+				strdb_iput(scriptlabel_db, get_str(i), script_pos);
 			p=tmpp+1;
 			p=skip_space(p);
 			continue;
@@ -3823,7 +3823,7 @@ int do_final_script()
 int do_init_script()
 {
 	userfunc_db=strdb_alloc(DB_OPT_DUP_KEY,0);
-	scriptlabel_db=strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA,50);
+	scriptlabel_db=strdb_alloc(DB_OPT_DUP_KEY,50);
 	autobonus_db = strdb_alloc(DB_OPT_DUP_KEY,0);
 
 	mapreg_init();