From 3ce598dc1ef86c5fe319536a999246a49c3406bc Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 19 Feb 2016 14:53:45 +0100 Subject: Added const qualifier to some typecasts Signed-off-by: Haru --- src/map/atcommand.c | 28 ++++++++---------- src/map/intif.c | 4 +-- src/map/script.c | 85 +++++++++++++++++++++++++++-------------------------- src/map/storage.c | 4 +-- src/map/vending.c | 6 ++-- 5 files changed, 64 insertions(+), 63 deletions(-) (limited to 'src/map') diff --git a/src/map/atcommand.c b/src/map/atcommand.c index e422a5de4..963f5c970 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -547,7 +547,7 @@ ACMD(jumpto) { return false; } - if((pl_sd=map->nick2sd((const char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { + if ((pl_sd=map->nick2sd(message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -2747,7 +2747,7 @@ ACMD(recall) { return false; } - if((pl_sd=map->nick2sd((const char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { + if ((pl_sd=map->nick2sd(message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -3072,7 +3072,7 @@ ACMD(kick) return false; } - if((pl_sd=map->nick2sd((const char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { + if ((pl_sd=map->nick2sd(message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -5125,8 +5125,7 @@ ACMD(follow) { return true; } - if ((pl_sd = map->nick2sd((const char *)message)) == NULL) - { + if ((pl_sd = map->nick2sd(message)) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -5603,7 +5602,7 @@ ACMD(changegm) { return false; } - if ((pl_sd=map->nick2sd((const char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) { + if ((pl_sd=map->nick2sd(message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) { clif->message(fd, msg_fd(fd,1184)); // Target character must be online and be a guild member. return false; } @@ -5623,7 +5622,7 @@ ACMD(changeleader) { return false; } - if (party->changeleader(sd, map->nick2sd((const char *) message))) + if (party->changeleader(sd, map->nick2sd(message))) return true; return false; } @@ -6382,7 +6381,7 @@ ACMD(trade) { return false; } - if ( (pl_sd = map->nick2sd((const char *)message)) == NULL ) { + if ((pl_sd = map->nick2sd(message)) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -6425,8 +6424,7 @@ ACMD(unmute) { return false; } - if ((pl_sd = map->nick2sd((const char *)message)) == NULL) - { + if ((pl_sd = map->nick2sd(message)) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } @@ -7667,9 +7665,10 @@ ACMD(showdelay) * @reject - reject invitation * @leave - leave duel *------------------------------------------*/ -ACMD(invite) { +ACMD(invite) +{ unsigned int did = sd->duel_group; - struct map_session_data *target_sd = map->nick2sd((const char *)message); + struct map_session_data *target_sd = map->nick2sd(message); if (did == 0) { @@ -7741,8 +7740,7 @@ ACMD(duel) { } duel->create(sd, maxpl); } else { - struct map_session_data *target_sd; - target_sd = map->nick2sd((const char *)message); + struct map_session_data *target_sd = map->nick2sd(message); if (target_sd != NULL) { unsigned int newduel; if ((newduel = duel->create(sd, 2)) != -1) { @@ -7884,7 +7882,7 @@ ACMD(clone) { return false; } - if ((pl_sd=map->nick2sd((const char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { + if ((pl_sd=map->nick2sd(message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) { clif->message(fd, msg_fd(fd,3)); // Character not found. return false; } diff --git a/src/map/intif.c b/src/map/intif.c index 7d2493d46..4b3e913e1 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -1110,7 +1110,7 @@ void intif_parse_Registers(int fd) safestrncpy(sval, RFIFOP(fd, cursor + 1), min((int)sizeof(sval), len)); cursor += len + 1; - script->set_reg(NULL,sd,reference_uid(script->add_str(key), index), key, (void*)sval, NULL); + script->set_reg(NULL,sd,reference_uid(script->add_str(key), index), key, sval, NULL); } /** * Vessel! @@ -1132,7 +1132,7 @@ void intif_parse_Registers(int fd) ival = RFIFOL(fd, cursor); cursor += 4; - script->set_reg(NULL,sd,reference_uid(script->add_str(key), index), key, (void*)h64BPTRSIZE(ival), NULL); + script->set_reg(NULL,sd,reference_uid(script->add_str(key), index), key, (const void *)h64BPTRSIZE(ival), NULL); } } script->parser_current_file = NULL;/* reset */ diff --git a/src/map/script.c b/src/map/script.c index fd653523d..c054d3bc4 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -6386,16 +6386,13 @@ BUILDIN(input) } else { // take received text/value and store it in the designated variable sd->state.menu_or_input = 0; - if( is_string_variable(name) ) - { + if (is_string_variable(name)) { int len = (int)strlen(sd->npc_str); - script->set_reg(st, sd, uid, name, (void*)sd->npc_str, script_getref(st,2)); + script->set_reg(st, sd, uid, name, sd->npc_str, script_getref(st,2)); script_pushint(st, (len > max ? 1 : len < min ? -1 : 0)); - } - else - { + } else { int amount = sd->npc_amount; - script->set_reg(st, sd, uid, name, (void*)h64BPTRSIZE(cap_value(amount,min,max)), script_getref(st,2)); + script->set_reg(st, sd, uid, name, (const void *)h64BPTRSIZE(cap_value(amount,min,max)), script_getref(st,2)); script_pushint(st, (amount > max ? 1 : amount < min ? -1 : 0)); } st->state = RUN; @@ -6482,9 +6479,9 @@ BUILDIN(__setr) } if (is_string_variable(name)) - script->set_reg(st,sd,num,name,(void*)script_getstr(st,3),script_getref(st,2)); + script->set_reg(st, sd, num, name, script_getstr(st, 3), script_getref(st, 2)); else - script->set_reg(st,sd,num,name,(void*)h64BPTRSIZE(script_getnum(st,3)),script_getref(st,2)); + script->set_reg(st, sd, num, name, (const void *)h64BPTRSIZE(script_getnum(st, 3)), script_getref(st, 2)); return true; } @@ -6531,15 +6528,14 @@ BUILDIN(setarray) if( end > SCRIPT_MAX_ARRAYSIZE ) end = SCRIPT_MAX_ARRAYSIZE; - if( is_string_variable(name) ) - {// string array - for( i = 3; start < end; ++start, ++i ) - script->set_reg(st, sd, reference_uid(id, start), name, (void*)script_getstr(st,i), reference_getref(data)); - } - else - {// int array - for( i = 3; start < end; ++start, ++i ) - script->set_reg(st, sd, reference_uid(id, start), name, (void*)h64BPTRSIZE(script_getnum(st,i)), reference_getref(data)); + if (is_string_variable(name)) { + // string array + for (i = 3; start < end; ++start, ++i) + script->set_reg(st, sd, reference_uid(id, start), name, script_getstr(st, i), reference_getref(data)); + } else { + // int array + for (i = 3; start < end; ++start, ++i) + script->set_reg(st, sd, reference_uid(id, start), name, (const void *)h64BPTRSIZE(script_getnum(st, i)), reference_getref(data)); } return true; } @@ -6555,7 +6551,7 @@ BUILDIN(cleararray) uint32 start; uint32 end; int32 id; - void* v; + const void *v = NULL; struct map_session_data *sd = NULL; data = script_getdata(st, 2); @@ -6578,10 +6574,10 @@ BUILDIN(cleararray) return true;// no player attached } - if( is_string_variable(name) ) - v = (void*)script_getstr(st, 3); + if (is_string_variable(name)) + v = script_getstr(st, 3); else - v = (void*)h64BPTRSIZE(script_getnum(st, 3)); + v = (const void *)h64BPTRSIZE(script_getnum(st, 3)); end = start + script_getnum(st, 4); if( end > SCRIPT_MAX_ARRAYSIZE ) @@ -6667,7 +6663,12 @@ BUILDIN(copyarray) script_removetop(st, -1, 0); } else { // out of range - assume ""/0 - script->set_reg(st, sd, reference_uid(id1, idx1 + i), name1, (is_string_variable(name1)?(void*)"":(void*)0), reference_getref(data1)); + const void *value; + if (is_string_variable(name1)) + value = ""; + else + value = (const void *)0; + script->set_reg(st, sd, reference_uid(id1, idx1 + i), name1, value, reference_getref(data1)); } } } @@ -6696,8 +6697,9 @@ BUILDIN(getarraysize) script_pushint(st, script->array_highest_key(st,st->rid ? script->rid2sd(st) : NULL,reference_getname(data),reference_getref(data))); return true; } -int script_array_index_cmp(const void *a, const void *b) { - return ( *(const unsigned int*)a - *(const unsigned int*)b ); +int script_array_index_cmp(const void *a, const void *b) +{ + return (*(const unsigned int *)a - *(const unsigned int *)b); // FIXME: Is the unsigned difference really intended here? } /// Deletes count or all the elements in an array, from the starting index. @@ -11054,9 +11056,9 @@ BUILDIN(getstatus) case 4: script_pushint(st, sd->sc.data[id]->val4); break; case 5: { - const struct TimerData* td = (const struct TimerData*)timer->get(sd->sc.data[id]->timer); + const struct TimerData *td = timer->get(sd->sc.data[id]->timer); - if( td ) { + if (td != NULL) { // return the amount of time remaining script_pushint(st, (int)(td->tick - timer->gettick())); // TODO: change this to int64 when we'll support 64 bit script values } @@ -14407,7 +14409,7 @@ BUILDIN(getmapxy) sd=script->rid2sd(st); else sd=NULL; - script->set_reg(st,sd,num,name,(void*)mapname,script_getref(st,2)); + script->set_reg(st, sd, num, name, mapname, script_getref(st, 2)); //Set MapX num=st->stack->stack_data[st->start+3].u.num; @@ -14418,7 +14420,7 @@ BUILDIN(getmapxy) sd=script->rid2sd(st); else sd=NULL; - script->set_reg(st,sd,num,name,(void*)h64BPTRSIZE(x),script_getref(st,3)); + script->set_reg(st, sd, num, name, (const void *)h64BPTRSIZE(x), script_getref(st, 3)); //Set MapY num=st->stack->stack_data[st->start+4].u.num; @@ -14429,7 +14431,7 @@ BUILDIN(getmapxy) sd=script->rid2sd(st); else sd=NULL; - script->set_reg(st,sd,num,name,(void*)h64BPTRSIZE(y),script_getref(st,4)); + script->set_reg(st, sd, num, name, (const void *)h64BPTRSIZE(y), script_getref(st, 4)); //Return Success value script_pushint(st,0); @@ -15089,7 +15091,7 @@ BUILDIN(explode) if (str[i] == delimiter && (int64)start + k < (int64)(SCRIPT_MAX_ARRAYSIZE-1)) { // FIXME[Haru]: SCRIPT_MAX_ARRAYSIZE should really be unsigned (and INT32_MAX) //break at delimiter but ignore after reaching last array index temp[j] = '\0'; - script->set_reg(st, sd, reference_uid(id, start + k), name, (void*)temp, reference_getref(data)); + script->set_reg(st, sd, reference_uid(id, start + k), name, temp, reference_getref(data)); k++; j = 0; } else { @@ -15098,7 +15100,7 @@ BUILDIN(explode) } //set last string temp[j] = '\0'; - script->set_reg(st, sd, reference_uid(id, start + k), name, (void*)temp, reference_getref(data)); + script->set_reg(st, sd, reference_uid(id, start + k), name, temp, reference_getref(data)); aFree(temp); @@ -15418,12 +15420,12 @@ BUILDIN(sscanf) { if(sscanf(str, buf, ref_str)==0) { break; } - script->set_reg(st, sd, reference_uid( reference_getid(data), reference_getindex(data) ), buf_p, (void *)(ref_str), reference_getref(data)); + script->set_reg(st, sd, reference_uid( reference_getid(data), reference_getindex(data) ), buf_p, ref_str, reference_getref(data)); } else { // Number if(sscanf(str, buf, &ref_int)==0) { break; } - script->set_reg(st, sd, reference_uid( reference_getid(data), reference_getindex(data) ), buf_p, (void *)h64BPTRSIZE(ref_int), reference_getref(data)); + script->set_reg(st, sd, reference_uid( reference_getid(data), reference_getindex(data) ), buf_p, (const void *)h64BPTRSIZE(ref_int), reference_getref(data)); } arg++; @@ -15863,8 +15865,8 @@ BUILDIN(swap) value2 = script_getstr(st,3); if (strcmpi(value1, value2)) { - script->set_reg(st, sd, uid1, varname1, (void*)(value2), script_getref(st,3)); - script->set_reg(st, sd, uid2, varname2, (void*)(value1), script_getref(st,2)); + script->set_reg(st, sd, uid1, varname1, value2, script_getref(st,3)); + script->set_reg(st, sd, uid2, varname2, value1, script_getref(st,2)); } } else { @@ -15874,8 +15876,8 @@ BUILDIN(swap) value2 = script_getnum(st,3); if (value1 != value2) { - script->set_reg(st, sd, uid1, varname1, (void*)h64BPTRSIZE(value2), script_getref(st,3)); - script->set_reg(st, sd, uid2, varname2, (void*)h64BPTRSIZE(value1), script_getref(st,2)); + script->set_reg(st, sd, uid1, varname1, (const void *)h64BPTRSIZE(value2), script_getref(st,3)); + script->set_reg(st, sd, uid2, varname2, (const void *)h64BPTRSIZE(value1), script_getref(st,2)); } } return true; @@ -16529,7 +16531,7 @@ BUILDIN(searchitem) for( i = 0; i < count; ++start, ++i ) {// Set array - void* v = (void*)h64BPTRSIZE((int)items[i]->nameid); + const void *v = (const void *)h64BPTRSIZE((int)items[i]->nameid); script->set_reg(st, sd, reference_uid(id, start), name, v, reference_getref(data)); } @@ -19743,9 +19745,10 @@ BUILDIN(checkbound) /* bg_match_over( arena_name {, optional canceled } ) */ /* returns 0 when successful, 1 otherwise */ -BUILDIN(bg_match_over) { +BUILDIN(bg_match_over) +{ bool canceled = script_hasdata(st,3) ? true : false; - struct bg_arena *arena = bg->name2arena((const char*)script_getstr(st, 2)); + struct bg_arena *arena = bg->name2arena(script_getstr(st, 2)); if( arena ) { bg->match_over(arena,canceled); diff --git a/src/map/storage.c b/src/map/storage.c index ceac85916..b8ec1e31e 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -52,8 +52,8 @@ struct guild_storage_interface *gstorage; *------------------------------------------*/ int storage_comp_item(const void *i1_, const void *i2_) { - const struct item *i1 = (const struct item *)i1_; - const struct item *i2 = (const struct item *)i2_; + const struct item *i1 = i1_; + const struct item *i2 = i2_; if (i1->nameid == i2->nameid) return 0; diff --git a/src/map/vending.c b/src/map/vending.c index 2346932ba..d9001f6f5 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -118,7 +118,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, // some checks z = 0; // zeny counter w = 0; // weight counter - for( i = 0; i < count; i++ ) { + for (i = 0; i < count; i++) { short amount = *(const uint16*)(data + 4*i + 0); short idx = *(const uint16*)(data + 4*i + 2); idx -= 2; @@ -184,7 +184,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid, z -= apply_percentrate64(z, battle_config.vending_tax, 10000); pc->getzeny(vsd, (int)z, LOG_TYPE_VENDING, sd); - for( i = 0; i < count; i++ ) { + for (i = 0; i < count; i++) { short amount = *(const uint16*)(data + 4*i + 0); short idx = *(const uint16*)(data + 4*i + 2); idx -= 2; @@ -265,7 +265,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const // filter out invalid items i = 0; - for( j = 0; j < count; j++ ) { + for (j = 0; j < count; j++) { short index = *(const uint16*)(data + 8*j + 0); short amount = *(const uint16*)(data + 8*j + 2); unsigned int value = *(const uint32*)(data + 8*j + 4); -- cgit v1.2.3-70-g09d2 From 63c4304fb3226b53550e9d413820ed3ff7340d08 Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 19 Feb 2016 18:03:22 +0100 Subject: Changed script->get_val to return a const pointer Signed-off-by: Haru --- src/map/script.c | 31 +++++++++++++++++-------------- src/map/script.h | 2 +- 2 files changed, 18 insertions(+), 15 deletions(-) (limited to 'src/map') diff --git a/src/map/script.c b/src/map/script.c index c054d3bc4..d2e474fa3 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -2957,12 +2957,16 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) { * @param ref[in] the container to look up the reference into. * @return the retrieved value of the reference. */ -void* get_val2(struct script_state* st, int64 uid, struct reg_db *ref) { +const void *get_val2(struct script_state *st, int64 uid, struct reg_db *ref) +{ struct script_data* data; script->push_val(st->stack, C_NAME, uid, ref); data = script_getdatatop(st, -1); script->get_val(st, data); - return (data->type == C_INT ? (void*)h64BPTRSIZE((int32)data->u.num) : (void*)h64BPTRSIZE(data->u.str)); // u.num is int32 because it comes from script->get_val + if (data->type == C_INT) // u.num is int32 because it comes from script->get_val + return (const void *)h64BPTRSIZE((int32)data->u.num); + else + return (const void *)h64BPTRSIZE(data->u.str); } /** * Because, currently, array members with key 0 are indifferenciable from normal variables, we should ensure its actually in @@ -2979,8 +2983,8 @@ void script_array_ensure_zero(struct script_state *st, struct map_session_data * insert = true; } else { if( is_string_variable(name) ) { - char* str = (char*)script->get_val2(st, uid, ref); - if( str && *str ) + const char *str = script->get_val2(st, uid, ref); + if (str != NULL && *str != '\0') insert = true; script_removetop(st, -1, 0); } else { @@ -6602,7 +6606,6 @@ BUILDIN(copyarray) int32 idx2; int32 id1; int32 id2; - void* v; int32 i; uint32 count; struct map_session_data *sd = NULL; @@ -6650,16 +6653,16 @@ BUILDIN(copyarray) if( is_same_reference(data1, data2) && idx1 > idx2 ) { // destination might be overlapping the source - copy in reverse order for( i = count - 1; i >= 0; --i ) { - v = script->get_val2(st, reference_uid(id2, idx2 + i), reference_getref(data2)); - script->set_reg(st, sd, reference_uid(id1, idx1 + i), name1, v, reference_getref(data1)); + const void *value = script->get_val2(st, reference_uid(id2, idx2 + i), reference_getref(data2)); + script->set_reg(st, sd, reference_uid(id1, idx1 + i), name1, value, reference_getref(data1)); script_removetop(st, -1, 0); } } else { // normal copy for( i = 0; i < count; ++i ) { if( idx2 + i < SCRIPT_MAX_ARRAYSIZE ) { - v = script->get_val2(st, reference_uid(id2, idx2 + i), reference_getref(data2)); - script->set_reg(st, sd, reference_uid(id1, idx1 + i), name1, v, reference_getref(data1)); + const void *value = script->get_val2(st, reference_uid(id2, idx2 + i), reference_getref(data2)); + script->set_reg(st, sd, reference_uid(id1, idx1 + i), name1, value, reference_getref(data1)); script_removetop(st, -1, 0); } else { // out of range - assume ""/0 @@ -6772,7 +6775,7 @@ BUILDIN(deletearray) // Better to iterate directly on the array, no speed-up from using sa for( ; start + count < end; ++start ) { // Compact and overwrite - void* v = script->get_val2(st, reference_uid(id, start + count), reference_getref(data)); + const void *v = script->get_val2(st, reference_uid(id, start + count), reference_getref(data)); script->set_reg(st, sd, reference_uid(id, start), name, v, reference_getref(data)); script_removetop(st, -1, 0); } @@ -6796,7 +6799,7 @@ BUILDIN(deletearray) for( ; i < size && list[i] < end; i++ ) { // Move back count positions any entries between start+count to fill the gaps - void* v = script->get_val2(st, reference_uid(id, list[i]), reference_getref(data)); + const void *v = script->get_val2(st, reference_uid(id, list[i]), reference_getref(data)); script->set_reg(st, sd, reference_uid(id, list[i]-count), name, v, reference_getref(data)); script_removetop(st, -1, 0); // Clear their originals @@ -15161,7 +15164,7 @@ BUILDIN(implode) size_t len = 0, glue_len = 0, k = 0; const char *glue = NULL, *temp; for(i = 0; i <= array_size; ++i) { - temp = (char*) script->get_val2(st, reference_uid(id, i), reference_getref(data)); + temp = script->get_val2(st, reference_uid(id, i), reference_getref(data)); len += strlen(temp); script_removetop(st, -1, 0); } @@ -15176,7 +15179,7 @@ BUILDIN(implode) //build output for(i = 0; i < array_size; ++i) { - temp = (char*) script->get_val2(st, reference_uid(id, i), reference_getref(data)); + temp = script->get_val2(st, reference_uid(id, i), reference_getref(data)); len = strlen(temp); memcpy(&output[k], temp, len); k += len; @@ -15186,7 +15189,7 @@ BUILDIN(implode) } script_removetop(st, -1, 0); } - temp = (char*) script->get_val2(st, reference_uid(id, array_size), reference_getref(data)); + temp = script->get_val2(st, reference_uid(id, array_size), reference_getref(data)); len = strlen(temp); memcpy(&output[k], temp, len); k += len; diff --git a/src/map/script.h b/src/map/script.h index fffe1fb1c..b12c84f96 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -660,7 +660,7 @@ struct script_interface { int (*get_val_scope_num) (struct script_state* st, struct reg_db *n, struct script_data* data); int (*get_val_npc_num) (struct script_state* st, struct reg_db *n, struct script_data* data); int (*get_val_instance_num) (struct script_state* st, const char* name, struct script_data* data); - void* (*get_val2) (struct script_state* st, int64 uid, struct reg_db *ref); + const void *(*get_val2) (struct script_state *st, int64 uid, struct reg_db *ref); struct script_data* (*push_str) (struct script_stack* stack, enum c_op type, char* str); struct script_data* (*push_copy) (struct script_stack* stack, int pos); void (*pop_stack) (struct script_state* st, int start, int end); -- cgit v1.2.3-70-g09d2 From 138956dcf9415353a4f67de6bc66efa23a04e61c Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 19 Feb 2016 18:22:49 +0100 Subject: Added separate char* and const char* data types to struct script_data Used, respectively, by C_STR and C_CONSTSTR Signed-off-by: Haru --- src/map/atcommand.c | 28 +++++----- src/map/script.c | 153 ++++++++++++++++++++++++++++------------------------ src/map/script.h | 27 ++++++---- 3 files changed, 116 insertions(+), 92 deletions(-) (limited to 'src/map') diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 963f5c970..78d935ddc 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -8498,30 +8498,34 @@ ACMD(set) CREATE(data, struct script_data,1); - if( is_str ) {// string variable - switch( reg[0] ) { + if (is_str) { + // string variable + const char *str = NULL; + switch (reg[0]) { case '@': - data->u.str = pc->readregstr(sd, script->add_str(reg)); + str = pc->readregstr(sd, script->add_str(reg)); break; case '$': - data->u.str = mapreg->readregstr(script->add_str(reg)); + str = mapreg->readregstr(script->add_str(reg)); break; case '#': - if( reg[1] == '#' ) - data->u.str = pc_readaccountreg2str(sd, script->add_str(reg));// global + if (reg[1] == '#') + str = pc_readaccountreg2str(sd, script->add_str(reg));// global else - data->u.str = pc_readaccountregstr(sd, script->add_str(reg));// local + str = pc_readaccountregstr(sd, script->add_str(reg));// local break; default: - data->u.str = pc_readglobalreg_str(sd, script->add_str(reg)); + str = pc_readglobalreg_str(sd, script->add_str(reg)); break; } - if( data->u.str == NULL || data->u.str[0] == '\0' ) {// empty string + if (str == NULL || str[0] == '\0') { + // empty string data->type = C_CONSTSTR; data->u.str = ""; - } else {// duplicate string + } else { + // duplicate string data->type = C_STR; - data->u.str = aStrdup(data->u.str); + data->u.mutstr = aStrdup(str); } } else {// integer variable data->type = C_INT; @@ -8549,7 +8553,7 @@ ACMD(set) safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1373),reg,data->u.num); // %s value is now :%d break; case C_STR: - safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1374),reg,data->u.str); // %s value is now :%s + safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1374),reg,data->u.mutstr); // %s value is now :%s break; case C_CONSTSTR: safesnprintf(atcmd_output, sizeof(atcmd_output),msg_fd(fd,1375),reg); // %s is empty diff --git a/src/map/script.c b/src/map/script.c index d2e474fa3..804fdd844 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -2864,43 +2864,46 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) { } } - if( postfix == '$' ) {// string variable + if (postfix == '$') { + // string variable + const char *str = NULL; - switch( prefix ) { + switch (prefix) { case '@': - data->u.str = pc->readregstr(sd, data->u.num); + str = pc->readregstr(sd, data->u.num); break; case '$': - data->u.str = mapreg->readregstr(data->u.num); + str = mapreg->readregstr(data->u.num); break; case '#': - if( name[1] == '#' ) - data->u.str = pc_readaccountreg2str(sd, data->u.num);// global + if (name[1] == '#') + str = pc_readaccountreg2str(sd, data->u.num);// global else - data->u.str = pc_readaccountregstr(sd, data->u.num);// local + str = pc_readaccountregstr(sd, data->u.num);// local break; case '.': if (data->ref) - data->u.str = script->get_val_ref_str(st, data->ref, data); + str = script->get_val_ref_str(st, data->ref, data); else if (name[1] == '@') - data->u.str = script->get_val_scope_str(st, &st->stack->scope, data); + str = script->get_val_scope_str(st, &st->stack->scope, data); else - data->u.str = script->get_val_npc_str(st, &st->script->local, data); + str = script->get_val_npc_str(st, &st->script->local, data); break; case '\'': - data->u.str = script->get_val_instance_str(st, name, data); + str = script->get_val_instance_str(st, name, data); break; default: - data->u.str = pc_readglobalreg_str(sd, data->u.num); + str = pc_readglobalreg_str(sd, data->u.num); break; } - if( data->u.str == NULL || data->u.str[0] == '\0' ) {// empty string + if (str == NULL || str[0] == '\0') { + // empty string data->type = C_CONSTSTR; data->u.str = ""; } else {// duplicate string data->type = C_STR; - data->u.str = aStrdup(data->u.str); + data->u.mutstr = aStrdup(str); } } else {// integer variable @@ -3361,53 +3364,53 @@ void setd_sub(struct script_state *st, struct map_session_data *sd, const char * } /// Converts the data to a string -const char* conv_str(struct script_state* st, struct script_data* data) +const char *conv_str(struct script_state *st, struct script_data* data) { - char* p; - script->get_val(st, data); - if( data_isstring(data) ) - {// nothing to convert + if (data_isstring(data)) { + // nothing to convert + return data->u.str; } - else if( data_isint(data) ) - {// int -> string + if (data_isint(data)) { + // int -> string + char *p; CREATE(p, char, ITEM_NAME_LENGTH); snprintf(p, ITEM_NAME_LENGTH, "%"PRId64"", data->u.num); p[ITEM_NAME_LENGTH-1] = '\0'; data->type = C_STR; - data->u.str = p; + data->u.mutstr = p; + return data->u.mutstr; } - else if( data_isreference(data) ) - {// reference -> string + if (data_isreference(data)) { + // reference -> string //##TODO when does this happen (check script->get_val) [FlavioJS] data->type = C_CONSTSTR; data->u.str = reference_getname(data); - } - else - {// unsupported data type - ShowError("script:conv_str: cannot convert to string, defaulting to \"\"\n"); - script->reportdata(data); - script->reportsrc(st); - data->type = C_CONSTSTR; - data->u.str = ""; - } + return data->u.str; + } + // unsupported data type + ShowError("script:conv_str: cannot convert to string, defaulting to \"\"\n"); + script->reportdata(data); + script->reportsrc(st); + data->type = C_CONSTSTR; + data->u.str = ""; return data->u.str; } /// Converts the data to an int -int conv_num(struct script_state* st, struct script_data* data) { - char* p; +int conv_num(struct script_state *st, struct script_data *data) +{ long num; script->get_val(st, data); - if( data_isint(data) ) - {// nothing to convert + if (data_isint(data)) { + // nothing to convert + return (int)data->u.num; } - else if( data_isstring(data) ) - {// string -> int + if (data_isstring(data)) { + // string -> int // the result does not overflow or underflow, it is capped instead // ex: 999999999999 is capped to INT_MAX (2147483647) - p = data->u.str; errno = 0; num = strtol(data->u.str, NULL, 10);// change radix to 0 to support octal numbers "o377" and hex numbers "0xFF" if( errno == ERANGE @@ -3429,22 +3432,21 @@ int conv_num(struct script_state* st, struct script_data* data) { script->reportdata(data); script->reportsrc(st); } - if( data->type == C_STR ) - aFree(p); + if (data->type == C_STR) + aFree(data->u.mutstr); data->type = C_INT; data->u.num = (int)num; + return (int)data->u.num; } #if 0 + // unsupported data type // FIXME this function is being used to retrieve the position of labels and // probably other stuff [FlavioJS] - else - {// unsupported data type - ShowError("script:conv_num: cannot convert to number, defaulting to 0\n"); - script->reportdata(data); - script->reportsrc(st); - data->type = C_INT; - data->u.num = 0; - } + ShowError("script:conv_num: cannot convert to number, defaulting to 0\n"); + script->reportdata(data); + script->reportsrc(st); + data->type = C_INT; + data->u.num = 0; #endif return (int)data->u.num; } @@ -3474,11 +3476,23 @@ struct script_data* push_val(struct script_stack* stack, enum c_op type, int64 v } /// Pushes a string into the stack -struct script_data* push_str(struct script_stack* stack, enum c_op type, char* str) +struct script_data *push_str(struct script_stack *stack, char *str) { if( stack->sp >= stack->sp_max ) script->stack_expand(stack); - stack->stack_data[stack->sp].type = type; + stack->stack_data[stack->sp].type = C_STR; + stack->stack_data[stack->sp].u.mutstr = str; + stack->stack_data[stack->sp].ref = NULL; + stack->sp++; + return &stack->stack_data[stack->sp-1]; +} + +/// Pushes a constant string into the stack +struct script_data *push_conststr(struct script_stack *stack, const char *str) +{ + if( stack->sp >= stack->sp_max ) + script->stack_expand(stack); + stack->stack_data[stack->sp].type = C_CONSTSTR; stack->stack_data[stack->sp].u.str = str; stack->stack_data[stack->sp].ref = NULL; stack->sp++; @@ -3500,10 +3514,10 @@ struct script_data* push_retinfo(struct script_stack* stack, struct script_retin struct script_data* push_copy(struct script_stack* stack, int pos) { switch( stack->stack_data[pos].type ) { case C_CONSTSTR: - return script->push_str(stack, C_CONSTSTR, stack->stack_data[pos].u.str); + return script->push_conststr(stack, stack->stack_data[pos].u.str); break; case C_STR: - return script->push_str(stack, C_STR, aStrdup(stack->stack_data[pos].u.str)); + return script->push_str(stack, aStrdup(stack->stack_data[pos].u.mutstr)); break; case C_RETINFO: ShowFatalError("script:push_copy: can't create copies of C_RETINFO. Exiting...\n"); @@ -3537,8 +3551,8 @@ void pop_stack(struct script_state* st, int start, int end) { for( i = start; i < end; i++ ) { data = &stack->stack_data[i]; - if( data->type == C_STR ) - aFree(data->u.str); + if (data->type == C_STR) + aFree(data->u.mutstr); if( data->type == C_RETINFO ) { struct script_retinfo* ri = data->u.ri; @@ -3769,12 +3783,11 @@ void op_3(struct script_state* st, int op) data = script_getdatatop(st, -3); script->get_val(st, data); - if( data_isstring(data) ) - flag = data->u.str[0];// "" -> false - else if( data_isint(data) ) + if (data_isstring(data)) { + flag = data->u.str[0]; // "" -> false + } else if (data_isint(data)) { flag = data->u.num == 0 ? 0 : 1;// 0 -> false - else - { + } else { ShowError("script:op_3: invalid data for the ternary operator test\n"); script->reportdata(data); script->reportsrc(st); @@ -3995,10 +4008,9 @@ void op_2(struct script_state *st, int op) script->op_2str(st, op, left->u.str, right->u.str); script_removetop(st, leftref.type == C_NOP ? -3 : -2, -1);// pop the two values before the top one - if (leftref.type != C_NOP) - { + if (leftref.type != C_NOP) { if (left->type == C_STR) // don't free C_CONSTSTR - aFree(left->u.str); + aFree(left->u.mutstr); *left = leftref; } } @@ -4396,7 +4408,7 @@ void run_script_main(struct script_state *st) { script->push_val(stack,c,0,NULL); break; case C_STR: - script->push_str(stack,C_CONSTSTR,(char*)(st->script->script_buf+st->pos)); + script->push_conststr(stack, (const char *)(st->script->script_buf+st->pos)); while(st->script->script_buf[st->pos++]); break; case C_LSTR: @@ -4408,7 +4420,7 @@ void run_script_main(struct script_state *st) { st->pos += sizeof(int) + sizeof(uint8); if( (!st->rid || !(lsd = map->id2sd(st->rid)) || !lsd->lang_id) && !map->default_lang_id ) - script->push_str(stack,C_CONSTSTR,script->string_list+string_id); + script->push_conststr(stack, script->string_list+string_id); else { uint8 k, wlang_id = lsd ? lsd->lang_id : map->default_lang_id; int offset = st->pos; @@ -4420,8 +4432,10 @@ void run_script_main(struct script_state *st) { break; offset += sizeof(char*); } - script->push_str(stack,C_CONSTSTR, - ( k == translations ) ? script->string_list+string_id : *(char**)(&st->script->script_buf[offset]) ); + if (k == translations) + script->push_conststr(stack, script->string_list+string_id); + else + script->push_conststr(stack, *(const char**)(&st->script->script_buf[offset]) ); } st->pos += ( ( sizeof(char*) + sizeof(uint8) ) * translations ); } @@ -6341,7 +6355,7 @@ BUILDIN(jobchange) BUILDIN(jobname) { int class_=script_getnum(st,2); - script_pushconststr(st, (char*)pc->job_name(class_)); + script_pushconststr(st, pc->job_name(class_)); return true; } @@ -21152,6 +21166,7 @@ void script_defaults(void) { script->get_val_npc_num = get_val_npcscope_num; script->get_val_instance_num = get_val_instance_num; script->push_str = push_str; + script->push_conststr = push_conststr; script->push_copy = push_copy; script->pop_stack = pop_stack; script->set_constant = script_set_constant; diff --git a/src/map/script.h b/src/map/script.h index b12c84f96..9eb473f03 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -94,11 +94,11 @@ struct item_data; /// Pushes an int into the stack #define script_pushint(st,val) (script->push_val((st)->stack, C_INT, (val),NULL)) /// Pushes a string into the stack (script engine frees it automatically) -#define script_pushstr(st,val) (script->push_str((st)->stack, C_STR, (val))) +#define script_pushstr(st,val) (script->push_str((st)->stack, (val))) /// Pushes a copy of a string into the stack -#define script_pushstrcopy(st,val) (script->push_str((st)->stack, C_STR, aStrdup(val))) +#define script_pushstrcopy(st,val) (script->push_str((st)->stack, aStrdup(val))) /// Pushes a constant string into the stack (must never change or be freed) -#define script_pushconststr(st,val) (script->push_str((st)->stack, C_CONSTSTR, (val))) +#define script_pushconststr(st,val) (script->push_conststr((st)->stack, (val))) /// Pushes a nil into the stack #define script_pushnil(st) (script->push_val((st)->stack, C_NOP, 0,NULL)) /// Pushes a copy of the data in the target index @@ -380,14 +380,18 @@ struct script_retinfo { int defsp; ///< default stack pointer }; +/** + * Represents a variable in the script stack. + */ struct script_data { - enum c_op type; + enum c_op type; ///< Data type union script_data_val { - int64 num; - char *str; - struct script_retinfo* ri; - } u; - struct reg_db *ref; + int64 num; ///< Numeric data + char *mutstr; ///< Mutable string + const char *str; ///< Constant string + struct script_retinfo *ri; ///< Function return information + } u; ///< Data (field depends on `type`) + struct reg_db *ref; ///< Reference to the scope's variables }; // Moved defsp from script_state to script_stack since @@ -661,8 +665,9 @@ struct script_interface { int (*get_val_npc_num) (struct script_state* st, struct reg_db *n, struct script_data* data); int (*get_val_instance_num) (struct script_state* st, const char* name, struct script_data* data); const void *(*get_val2) (struct script_state *st, int64 uid, struct reg_db *ref); - struct script_data* (*push_str) (struct script_stack* stack, enum c_op type, char* str); - struct script_data* (*push_copy) (struct script_stack* stack, int pos); + struct script_data *(*push_str) (struct script_stack *stack, char *str); + struct script_data *(*push_conststr) (struct script_stack *stack, const char *str); + struct script_data *(*push_copy) (struct script_stack *stack, int pos); void (*pop_stack) (struct script_state* st, int start, int end); void (*set_constant) (const char *name, int value, bool is_parameter, bool is_deprecated); void (*set_constant2) (const char *name, int value, bool is_parameter, bool is_deprecated); -- cgit v1.2.3-70-g09d2 From 8c9e9668cef87ab9595bde6608de424072cc752d Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 19 Feb 2016 18:46:18 +0100 Subject: Added const qualifier to the value argument of script->setd_sub Signed-off-by: Haru --- src/map/npc.c | 2 +- src/map/script.c | 8 ++++---- src/map/script.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/map') diff --git a/src/map/npc.c b/src/map/npc.c index 2b1a541d8..93981e312 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -3567,7 +3567,7 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c } st = script->alloc_state(ev->nd->u.scr.script, ev->pos, sd->bl.id, ev->nd->bl.id); - script->setd_sub(st, NULL, ".@atcmd_command$", 0, (void *)command, NULL); + script->setd_sub(st, NULL, ".@atcmd_command$", 0, command, NULL); len = strlen(message); if (len) { diff --git a/src/map/script.c b/src/map/script.c index 804fdd844..3482165f8 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -3358,7 +3358,7 @@ int set_var(struct map_session_data *sd, char *name, void *val) return script->set_reg(NULL, sd, reference_uid(script->add_str(name),0), name, val, NULL); } -void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, void *value, struct reg_db *ref) +void setd_sub(struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref) { script->set_reg(st, sd, reference_uid(script->add_str(varname),elem), varname, value, ref); } @@ -15923,10 +15923,10 @@ BUILDIN(setd) } } - if( is_string_variable(varname) ) { - script->setd_sub(st, sd, varname, elem, (void *)script_getstr(st, 3), NULL); + if (is_string_variable(varname)) { + script->setd_sub(st, sd, varname, elem, script_getstr(st, 3), NULL); } else { - script->setd_sub(st, sd, varname, elem, (void *)h64BPTRSIZE(script_getnum(st, 3)), NULL); + script->setd_sub(st, sd, varname, elem, (const void *)h64BPTRSIZE(script_getnum(st, 3)), NULL); } return true; diff --git a/src/map/script.h b/src/map/script.h index 9eb473f03..b8e9d1997 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -692,7 +692,7 @@ struct script_interface { int (*add_str) (const char* p); const char* (*get_str) (int id); int (*search_str) (const char* p); - void (*setd_sub) (struct script_state *st, struct map_session_data *sd, const char *varname, int elem, void *value, struct reg_db *ref); + void (*setd_sub) (struct script_state *st, struct map_session_data *sd, const char *varname, int elem, const void *value, struct reg_db *ref); void (*attach_state) (struct script_state* st); /* */ struct script_queue *(*queue) (int idx); -- cgit v1.2.3-70-g09d2 From f4fced20c769ccee7f808531221dda481f7bbcca Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 19 Feb 2016 21:37:39 +0100 Subject: Removed unnecessary typedefs from sql.h - Sql -> struct Sql - SqlStmt -> struct SqlStmt - SqlDataType -> enum SqlDataType This is expected to improve compile time, by removing #include cycles (and forward declaring instead) Signed-off-by: Haru --- src/char/char.c | 10 ++--- src/char/int_auction.c | 4 +- src/char/int_guild.c | 1 + src/char/int_homun.c | 2 +- src/char/int_mail.c | 2 +- src/char/int_quest.c | 2 +- src/char/int_storage.c | 2 +- src/char/inter.c | 1 + src/char/inter.h | 6 ++- src/common/HPMi.h | 4 +- src/common/console.c | 3 +- src/common/console.h | 8 ++-- src/common/sql.c | 114 +++++++++++++++++++++++++---------------------- src/common/sql.h | 78 +++++++++++++++----------------- src/login/account.h | 6 ++- src/login/account_sql.c | 31 +++++++------ src/login/ipban_sql.c | 2 +- src/login/loginlog_sql.c | 2 +- src/map/log.c | 17 ++++--- src/map/log.h | 4 +- src/map/map.c | 1 + src/map/map.h | 5 ++- src/map/mapreg_sql.c | 2 +- src/map/npc.c | 6 ++- src/map/pc.c | 1 + src/map/script.c | 3 +- src/map/script.h | 4 +- src/plugins/db2sql.c | 1 + 28 files changed, 174 insertions(+), 148 deletions(-) (limited to 'src/map') diff --git a/src/char/char.c b/src/char/char.c index 6cfeb7d1a..23f5d1ea0 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -702,7 +702,7 @@ int char_mmo_char_tosql(int char_id, struct mmo_charstatus* p) int char_memitemdata_to_sql(const struct item items[], int max, int id, int tableswitch) { StringBuf buf; - SqlStmt *stmt = NULL; + struct SqlStmt *stmt = NULL; int i, j; const char *tablename = NULL; const char *selectoption = NULL; @@ -915,7 +915,7 @@ int char_mmo_gender(const struct char_session_data *sd, const struct mmo_charsta // Loads the basic character rooster for the given account. Returns total buffer used. int char_mmo_chars_fromsql(struct char_session_data* sd, uint8* buf) { - SqlStmt* stmt; + struct SqlStmt *stmt; struct mmo_charstatus p; int j = 0, i; char last_map[MAP_NAME_LENGTH_EXT]; @@ -1015,7 +1015,7 @@ int char_mmo_char_fromsql(int char_id, struct mmo_charstatus* p, bool load_every char t_msg[128] = ""; struct mmo_charstatus* cp; StringBuf buf; - SqlStmt* stmt; + struct SqlStmt *stmt; char last_map[MAP_NAME_LENGTH_EXT]; char save_map[MAP_NAME_LENGTH_EXT]; char point_map[MAP_NAME_LENGTH_EXT]; @@ -2341,7 +2341,7 @@ int char_parse_fromlogin_changesex_reply(int fd) int char_id = 0, class_ = 0, guild_id = 0; int i; struct char_auth_node *node; - SqlStmt *stmt; + struct SqlStmt *stmt; int acc = RFIFOL(fd,2); int sex = RFIFOB(fd,6); @@ -3277,7 +3277,7 @@ void char_ban(int account_id, int char_id, time_t *unban_time, short year, short { time_t timestamp; struct tm *tmtime; - SqlStmt* stmt = SQL->StmtMalloc(inter->sql_handle); + struct SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle); nullpo_retv(unban_time); diff --git a/src/char/int_auction.c b/src/char/int_auction.c index 464a2092b..2c9942dac 100644 --- a/src/char/int_auction.c +++ b/src/char/int_auction.c @@ -63,7 +63,7 @@ void inter_auction_save(struct auction_data *auction) { int j; StringBuf buf; - SqlStmt* stmt; + struct SqlStmt *stmt; if( !auction ) return; @@ -93,7 +93,7 @@ unsigned int inter_auction_create(struct auction_data *auction) { int j; StringBuf buf; - SqlStmt* stmt; + struct SqlStmt *stmt; if( !auction ) return false; diff --git a/src/char/int_guild.c b/src/char/int_guild.c index c637f12fd..ab15d5ef9 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -33,6 +33,7 @@ #include "common/nullpo.h" #include "common/showmsg.h" #include "common/socket.h" +#include "common/sql.h" #include "common/strlib.h" #include "common/timer.h" diff --git a/src/char/int_homun.c b/src/char/int_homun.c index e5fde2330..bfb0009e6 100644 --- a/src/char/int_homun.c +++ b/src/char/int_homun.c @@ -163,7 +163,7 @@ bool mapif_homunculus_save(const struct s_homunculus *hd) flag = false; } else { int i; - SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle); + struct SqlStmt *stmt = SQL->StmtMalloc(inter->sql_handle); if (SQL_ERROR == SQL->StmtPrepare(stmt, "REPLACE INTO `%s` (`homun_id`, `id`, `lv`) VALUES (%d, ?, ?)", skill_homunculus_db, hd->hom_id)) { SqlStmt_ShowDebug(stmt); diff --git a/src/char/int_mail.c b/src/char/int_mail.c index b75a362fb..bf3403b5f 100644 --- a/src/char/int_mail.c +++ b/src/char/int_mail.c @@ -129,7 +129,7 @@ static int inter_mail_fromsql(int char_id, struct mail_data* md) int inter_mail_savemessage(struct mail_message* msg) { StringBuf buf; - SqlStmt* stmt; + struct SqlStmt *stmt; int j; nullpo_ret(msg); diff --git a/src/char/int_quest.c b/src/char/int_quest.c index b28c81331..cf93db51e 100644 --- a/src/char/int_quest.c +++ b/src/char/int_quest.c @@ -52,7 +52,7 @@ struct quest *mapif_quests_fromsql(int char_id, int *count) { struct quest *questlog = NULL; struct quest tmp_quest; - SqlStmt *stmt; + struct SqlStmt *stmt; StringBuf buf; int i; int sqlerror = SQL_SUCCESS; diff --git a/src/char/int_storage.c b/src/char/int_storage.c index 705aa02d2..e46a1c80f 100644 --- a/src/char/int_storage.c +++ b/src/char/int_storage.c @@ -277,7 +277,7 @@ int mapif_parse_ItemBoundRetrieve_sub(int fd) { #ifdef GP_BOUND_ITEMS StringBuf buf; - SqlStmt* stmt; + struct SqlStmt *stmt; struct item item; int j, i=0, s=0, bound_qt=0; struct item items[MAX_INVENTORY]; diff --git a/src/char/inter.c b/src/char/inter.c index 4ef94efdf..4e1adbe15 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -42,6 +42,7 @@ #include "common/nullpo.h" #include "common/showmsg.h" #include "common/socket.h" +#include "common/sql.h" #include "common/strlib.h" #include "common/timer.h" diff --git a/src/char/inter.h b/src/char/inter.h index b8bcb2def..84cb6c640 100644 --- a/src/char/inter.h +++ b/src/char/inter.h @@ -23,15 +23,17 @@ #include "common/hercules.h" #include "common/db.h" -#include "common/sql.h" #include +/* Forward Declarations */ +struct Sql; // common/sql.h + /** * inter interface **/ struct inter_interface { - Sql* sql_handle; + struct Sql *sql_handle; const char* (*msg_txt) (int msg_number); bool (*msg_config_read) (const char *cfg_name, bool allow_override); void (*do_final_msg) (void); diff --git a/src/common/HPMi.h b/src/common/HPMi.h index cf3e16277..72640b382 100644 --- a/src/common/HPMi.h +++ b/src/common/HPMi.h @@ -24,8 +24,8 @@ #include "common/console.h" #include "common/core.h" #include "common/showmsg.h" -#include "common/sql.h" +struct Sql; // common/sql.h struct script_state; struct AtCommandInfo; struct socket_data; @@ -242,7 +242,7 @@ struct HPMi_interface { /* pc group permission */ void (*addPCGPermission) (unsigned int pluginID, char *name, unsigned int *mask); - Sql *sql_handle; + struct Sql *sql_handle; }; #ifdef HERCULES_CORE #define HPM_SYMBOL(n, s) (HPM->share((s), (n)), true) diff --git a/src/common/console.c b/src/common/console.c index 10e1bee1a..0be33e5c3 100644 --- a/src/common/console.c +++ b/src/common/console.c @@ -523,7 +523,8 @@ void console_parse_init(void) { timer->add_func_list(console->input->parse_timer, "console_parse_timer"); timer->add_interval(timer->gettick() + 1000, console->input->parse_timer, 0, 0, 500);/* start listening in 1s; re-try every 0.5s */ } -void console_setSQL(Sql *SQL_handle) { +void console_setSQL(struct Sql *SQL_handle) +{ console->input->SQL = SQL_handle; } #endif /* CONSOLE_INPUT */ diff --git a/src/common/console.h b/src/common/console.h index 43f48b865..57c750a7d 100644 --- a/src/common/console.h +++ b/src/common/console.h @@ -24,9 +24,11 @@ #include "common/db.h" #include "common/mutex.h" #include "common/spinlock.h" -#include "common/sql.h" #include "common/thread.h" +/* Forward Declarations */ +struct Sql; // common/sql.h + /** * Queue Max * why is there a limit, why not make it dynamic? - I'm playing it safe, I'd rather not play with memory management between threads @@ -78,7 +80,7 @@ struct console_input_interface { VECTOR_DECL(struct CParseEntry *) command_list; VECTOR_DECL(struct CParseEntry *) commands; /* */ - Sql *SQL; + struct Sql *SQL; /* */ void (*parse_init) (void); void (*parse_final) (void); @@ -90,7 +92,7 @@ struct console_input_interface { void (*load_defaults) (void); void (*parse_list_subs) (struct CParseEntry *cmd, unsigned char depth); void (*addCommand) (char *name, CParseFunc func); - void (*setSQL) (Sql *SQL_handle); + void (*setSQL) (struct Sql *SQL_handle); #else // not CONSOLE_INPUT UNAVAILABLE_STRUCT; #endif diff --git a/src/common/sql.c b/src/common/sql.c index ed93169ea..1dcf5d374 100644 --- a/src/common/sql.c +++ b/src/common/sql.c @@ -79,11 +79,11 @@ struct SqlStmt { /////////////////////////////////////////////////////////////////////////////// /// Allocates and initializes a new Sql handle. -Sql* Sql_Malloc(void) +struct Sql *Sql_Malloc(void) { - Sql* self; + struct Sql *self; - CREATE(self, Sql, 1); + CREATE(self, struct Sql, 1); mysql_init(&self->handle); StrBuf->Init(&self->buf); self->lengths = NULL; @@ -93,10 +93,10 @@ Sql* Sql_Malloc(void) return self; } -static int Sql_P_Keepalive(Sql* self); +static int Sql_P_Keepalive(struct Sql *self); /// Establishes a connection. -int Sql_Connect(Sql* self, const char* user, const char* passwd, const char* host, uint16 port, const char* db) +int Sql_Connect(struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db) { if( self == NULL ) return SQL_ERROR; @@ -119,7 +119,7 @@ int Sql_Connect(Sql* self, const char* user, const char* passwd, const char* hos } /// Retrieves the timeout of the connection. -int Sql_GetTimeout(Sql* self, uint32* out_timeout) +int Sql_GetTimeout(struct Sql *self, uint32 *out_timeout) { if( self && out_timeout && SQL_SUCCESS == SQL->Query(self, "SHOW VARIABLES LIKE 'wait_timeout'") ) { char* data; @@ -136,7 +136,7 @@ int Sql_GetTimeout(Sql* self, uint32* out_timeout) } /// Retrieves the name of the columns of a table into out_buf, with the separator after each name. -int Sql_GetColumnNames(Sql* self, const char* table, char* out_buf, size_t buf_len, char sep) +int Sql_GetColumnNames(struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep) { char* data; size_t len; @@ -164,7 +164,7 @@ int Sql_GetColumnNames(Sql* self, const char* table, char* out_buf, size_t buf_l } /// Changes the encoding of the connection. -int Sql_SetEncoding(Sql* self, const char* encoding) +int Sql_SetEncoding(struct Sql *self, const char *encoding) { if( self && mysql_set_character_set(&self->handle, encoding) == 0 ) return SQL_SUCCESS; @@ -172,7 +172,7 @@ int Sql_SetEncoding(Sql* self, const char* encoding) } /// Pings the connection. -int Sql_Ping(Sql* self) +int Sql_Ping(struct Sql *self) { if( self && mysql_ping(&self->handle) == 0 ) return SQL_SUCCESS; @@ -184,7 +184,7 @@ int Sql_Ping(Sql* self) /// @private static int Sql_P_KeepaliveTimer(int tid, int64 tick, int id, intptr_t data) { - Sql* self = (Sql*)data; + struct Sql *self = (struct Sql *)data; ShowInfo("Pinging SQL server to keep connection alive...\n"); Sql_Ping(self); return 0; @@ -194,7 +194,7 @@ static int Sql_P_KeepaliveTimer(int tid, int64 tick, int id, intptr_t data) /// /// @return the keepalive timer id, or INVALID_TIMER /// @private -static int Sql_P_Keepalive(Sql* self) +static int Sql_P_Keepalive(struct Sql *self) { uint32 timeout, ping_interval; @@ -214,26 +214,27 @@ static int Sql_P_Keepalive(Sql* self) } /// Escapes a string. -size_t Sql_EscapeString(Sql* self, char *out_to, const char *from) +size_t Sql_EscapeString(struct Sql *self, char *out_to, const char *from) { - if( self ) + if (self != NULL) return (size_t)mysql_real_escape_string(&self->handle, out_to, from, (unsigned long)strlen(from)); else return (size_t)mysql_escape_string(out_to, from, (unsigned long)strlen(from)); } /// Escapes a string. -size_t Sql_EscapeStringLen(Sql* self, char *out_to, const char *from, size_t from_len) +size_t Sql_EscapeStringLen(struct Sql *self, char *out_to, const char *from, size_t from_len) { - if( self ) + if (self != NULL) return (size_t)mysql_real_escape_string(&self->handle, out_to, from, (unsigned long)from_len); else return (size_t)mysql_escape_string(out_to, from, (unsigned long)from_len); } /// Executes a query. -int Sql_Query(Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3))); -int Sql_Query(Sql *self, const char *query, ...) { +int Sql_Query(struct Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3))); +int Sql_Query(struct Sql *self, const char *query, ...) +{ int res; va_list args; @@ -245,7 +246,7 @@ int Sql_Query(Sql *self, const char *query, ...) { } /// Executes a query. -int Sql_QueryV(Sql* self, const char* query, va_list args) +int Sql_QueryV(struct Sql *self, const char *query, va_list args) { if( self == NULL ) return SQL_ERROR; @@ -270,7 +271,7 @@ int Sql_QueryV(Sql* self, const char* query, va_list args) } /// Executes a query. -int Sql_QueryStr(Sql* self, const char* query) +int Sql_QueryStr(struct Sql *self, const char *query) { if( self == NULL ) return SQL_ERROR; @@ -295,33 +296,34 @@ int Sql_QueryStr(Sql* self, const char* query) } /// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE query. -uint64 Sql_LastInsertId(Sql* self) +uint64 Sql_LastInsertId(struct Sql *self) { - if( self ) + if (self != NULL) return (uint64)mysql_insert_id(&self->handle); else return 0; } /// Returns the number of columns in each row of the result. -uint32 Sql_NumColumns(Sql* self) +uint32 Sql_NumColumns(struct Sql *self) { - if( self && self->result ) + if (self != NULL && self->result != NULL) return (uint32)mysql_num_fields(self->result); return 0; } /// Returns the number of rows in the result. -uint64 Sql_NumRows(Sql* self) +uint64 Sql_NumRows(struct Sql *self) { - if( self && self->result ) + if (self != NULL && self->result != NULL) return (uint64)mysql_num_rows(self->result); return 0; } /// Fetches the next row. -int Sql_NextRow(Sql* self) { - if( self && self->result ) { +int Sql_NextRow(struct Sql *self) +{ + if (self != NULL && self->result != NULL) { self->row = mysql_fetch_row(self->result); if( self->row ) { self->lengths = mysql_fetch_lengths(self->result); @@ -335,7 +337,7 @@ int Sql_NextRow(Sql* self) { } /// Gets the data of a column. -int Sql_GetData(Sql* self, size_t col, char** out_buf, size_t* out_len) +int Sql_GetData(struct Sql *self, size_t col, char **out_buf, size_t *out_len) { if( self && self->row ) { if( col < SQL->NumColumns(self) ) { @@ -351,7 +353,8 @@ int Sql_GetData(Sql* self, size_t col, char** out_buf, size_t* out_len) } /// Frees the result of the query. -void Sql_FreeResult(Sql* self) { +void Sql_FreeResult(struct Sql *self) +{ if( self && self->result ) { mysql_free_result(self->result); self->result = NULL; @@ -361,7 +364,7 @@ void Sql_FreeResult(Sql* self) { } /// Shows debug information (last query). -void Sql_ShowDebug_(Sql* self, const char* debug_file, const unsigned long debug_line) +void Sql_ShowDebug_(struct Sql *self, const char *debug_file, const unsigned long debug_line) { if( self == NULL ) ShowDebug("at %s:%lu - self is NULL\n", debug_file, debug_line); @@ -372,7 +375,7 @@ void Sql_ShowDebug_(Sql* self, const char* debug_file, const unsigned long debug } /// Frees a Sql handle returned by Sql_Malloc. -void Sql_Free(Sql* self) { +void Sql_Free(struct Sql *self) { if( self ) { SQL->FreeResult(self); @@ -515,7 +518,7 @@ static void Sql_P_ShowDebugMysqlFieldInfo(const char* prefix, enum enum_field_ty /// Reports debug information about a truncated column. /// /// @private -static void SqlStmt_P_ShowDebugTruncatedColumn(SqlStmt* self, size_t i) +static void SqlStmt_P_ShowDebugTruncatedColumn(struct SqlStmt *self, size_t i) { MYSQL_RES* meta; MYSQL_FIELD* field; @@ -535,8 +538,9 @@ static void SqlStmt_P_ShowDebugTruncatedColumn(SqlStmt* self, size_t i) } /// Allocates and initializes a new SqlStmt handle. -SqlStmt* SqlStmt_Malloc(Sql* sql) { - SqlStmt* self; +struct SqlStmt *SqlStmt_Malloc(struct Sql *sql) +{ + struct SqlStmt *self; MYSQL_STMT* stmt; if( sql == NULL ) @@ -547,7 +551,7 @@ SqlStmt* SqlStmt_Malloc(Sql* sql) { ShowSQL("DB error - %s\n", mysql_error(&sql->handle)); return NULL; } - CREATE(self, SqlStmt, 1); + CREATE(self, struct SqlStmt, 1); StrBuf->Init(&self->buf); self->stmt = stmt; self->params = NULL; @@ -562,8 +566,9 @@ SqlStmt* SqlStmt_Malloc(Sql* sql) { } /// Prepares the statement. -int SqlStmt_Prepare(SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3))); -int SqlStmt_Prepare(SqlStmt *self, const char *query, ...) { +int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3))); +int SqlStmt_Prepare(struct SqlStmt *self, const char *query, ...) +{ int res; va_list args; @@ -575,7 +580,7 @@ int SqlStmt_Prepare(SqlStmt *self, const char *query, ...) { } /// Prepares the statement. -int SqlStmt_PrepareV(SqlStmt* self, const char* query, va_list args) +int SqlStmt_PrepareV(struct SqlStmt *self, const char *query, va_list args) { if( self == NULL ) return SQL_ERROR; @@ -595,7 +600,7 @@ int SqlStmt_PrepareV(SqlStmt* self, const char* query, va_list args) } /// Prepares the statement. -int SqlStmt_PrepareStr(SqlStmt* self, const char* query) +int SqlStmt_PrepareStr(struct SqlStmt *self, const char *query) { if( self == NULL ) return SQL_ERROR; @@ -615,7 +620,7 @@ int SqlStmt_PrepareStr(SqlStmt* self, const char* query) } /// Returns the number of parameters in the prepared statement. -size_t SqlStmt_NumParams(SqlStmt* self) +size_t SqlStmt_NumParams(struct SqlStmt *self) { if( self ) return (size_t)mysql_stmt_param_count(self->stmt); @@ -624,7 +629,7 @@ size_t SqlStmt_NumParams(SqlStmt* self) } /// Binds a parameter to a buffer. -int SqlStmt_BindParam(SqlStmt* self, size_t idx, enum SqlDataType buffer_type, void* buffer, size_t buffer_len) +int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len) { if( self == NULL ) return SQL_ERROR; @@ -652,7 +657,7 @@ int SqlStmt_BindParam(SqlStmt* self, size_t idx, enum SqlDataType buffer_type, v } /// Executes the prepared statement. -int SqlStmt_Execute(SqlStmt* self) +int SqlStmt_Execute(struct SqlStmt *self) { if( self == NULL ) return SQL_ERROR; @@ -677,7 +682,7 @@ int SqlStmt_Execute(SqlStmt* self) } /// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE statement. -uint64 SqlStmt_LastInsertId(SqlStmt* self) +uint64 SqlStmt_LastInsertId(struct SqlStmt *self) { if( self ) return (uint64)mysql_stmt_insert_id(self->stmt); @@ -686,7 +691,7 @@ uint64 SqlStmt_LastInsertId(SqlStmt* self) } /// Returns the number of columns in each row of the result. -size_t SqlStmt_NumColumns(SqlStmt* self) +size_t SqlStmt_NumColumns(struct SqlStmt *self) { if( self ) return (size_t)mysql_stmt_field_count(self->stmt); @@ -695,7 +700,8 @@ size_t SqlStmt_NumColumns(SqlStmt* self) } /// Binds the result of a column to a buffer. -int SqlStmt_BindColumn(SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null) { +int SqlStmt_BindColumn(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null) +{ if (self == NULL) return SQL_ERROR; @@ -736,16 +742,16 @@ int SqlStmt_BindColumn(SqlStmt *self, size_t idx, enum SqlDataType buffer_type, } /// Returns the number of rows in the result. -uint64 SqlStmt_NumRows(SqlStmt* self) +uint64 SqlStmt_NumRows(struct SqlStmt *self) { - if( self ) + if (self != NULL) return (uint64)mysql_stmt_num_rows(self->stmt); else return 0; } /// Fetches the next row. -int SqlStmt_NextRow(SqlStmt* self) +int SqlStmt_NextRow(struct SqlStmt *self) { int err; size_t i; @@ -828,14 +834,14 @@ int SqlStmt_NextRow(SqlStmt* self) } /// Frees the result of the statement execution. -void SqlStmt_FreeResult(SqlStmt* self) +void SqlStmt_FreeResult(struct SqlStmt *self) { if( self ) mysql_stmt_free_result(self->stmt); } /// Shows debug information (with statement). -void SqlStmt_ShowDebug_(SqlStmt* self, const char* debug_file, const unsigned long debug_line) +void SqlStmt_ShowDebug_(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line) { if( self == NULL ) ShowDebug("at %s:%lu - self is NULL\n", debug_file, debug_line); @@ -846,7 +852,7 @@ void SqlStmt_ShowDebug_(SqlStmt* self, const char* debug_file, const unsigned lo } /// Frees a SqlStmt returned by SqlStmt_Malloc. -void SqlStmt_Free(SqlStmt* self) +void SqlStmt_Free(struct SqlStmt *self) { if( self ) { @@ -919,7 +925,8 @@ void Sql_inter_server_read(const char* cfgName, bool first) { return; } -void Sql_HerculesUpdateCheck(Sql* self) { +void Sql_HerculesUpdateCheck(struct Sql *self) +{ char line[22];// "yyyy-mm-dd--hh-mm" (17) + ".sql" (4) + 1 FILE* ifp;/* index fp */ unsigned int performed = 0; @@ -980,7 +987,8 @@ void Sql_HerculesUpdateCheck(Sql* self) { StrBuf->Destroy(&buf); } -void Sql_HerculesUpdateSkip(Sql* self,const char *filename) { +void Sql_HerculesUpdateSkip(struct Sql *self, const char *filename) +{ char path[41];// "sql-files/upgrades/" (19) + "yyyy-mm-dd--hh-mm" (17) + ".sql" (4) + 1 char timestamp[11];// "1360186680" (10) + 1 FILE* ifp;/* index fp */ diff --git a/src/common/sql.h b/src/common/sql.h index e949a8280..3619895b1 100644 --- a/src/common/sql.h +++ b/src/common/sql.h @@ -71,90 +71,86 @@ enum SqlDataType { SQLDT_LASTID }; -struct Sql;// Sql handle (private access) -struct SqlStmt;// Sql statement (private access) - -typedef enum SqlDataType SqlDataType; -typedef struct Sql Sql; -typedef struct SqlStmt SqlStmt; +struct Sql; ///< Sql handle (private access) +struct SqlStmt; ///< Sql statement (private access) struct sql_interface { /// Establishes a connection. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*Connect) (Sql* self, const char* user, const char* passwd, const char* host, uint16 port, const char* db); + int (*Connect) (struct Sql *self, const char *user, const char *passwd, const char *host, uint16 port, const char *db); /// Retrieves the timeout of the connection. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*GetTimeout) (Sql* self, uint32* out_timeout); + int (*GetTimeout) (struct Sql *self, uint32 *out_timeout); /// Retrieves the name of the columns of a table into out_buf, with the separator after each name. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*GetColumnNames) (Sql* self, const char* table, char* out_buf, size_t buf_len, char sep); + int (*GetColumnNames) (struct Sql *self, const char *table, char *out_buf, size_t buf_len, char sep); /// Changes the encoding of the connection. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*SetEncoding) (Sql* self, const char* encoding); + int (*SetEncoding) (struct Sql *self, const char *encoding); /// Pings the connection. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*Ping) (Sql* self); + int (*Ping) (struct Sql *self); /// Escapes a string. /// The output buffer must be at least strlen(from)*2+1 in size. /// /// @return The size of the escaped string - size_t (*EscapeString) (Sql* self, char* out_to, const char* from); + size_t (*EscapeString) (struct Sql *self, char *out_to, const char *from); /// Escapes a string. /// The output buffer must be at least from_len*2+1 in size. /// /// @return The size of the escaped string - size_t (*EscapeStringLen) (Sql* self, char* out_to, const char* from, size_t from_len); + size_t (*EscapeStringLen) (struct Sql *self, char *out_to, const char *from, size_t from_len); /// Executes a query. /// Any previous result is freed. /// The query is constructed as if it was sprintf. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*Query) (Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3))); + int (*Query) (struct Sql *self, const char *query, ...) __attribute__((format(printf, 2, 3))); /// Executes a query. /// Any previous result is freed. /// The query is constructed as if it was svprintf. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*QueryV) (Sql* self, const char* query, va_list args); + int (*QueryV) (struct Sql *self, const char *query, va_list args); /// Executes a query. /// Any previous result is freed. /// The query is used directly. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*QueryStr) (Sql* self, const char* query); + int (*QueryStr) (struct Sql *self, const char *query); /// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE query. /// /// @return Value of the auto-increment column - uint64 (*LastInsertId) (Sql* self); + uint64 (*LastInsertId) (struct Sql *self); /// Returns the number of columns in each row of the result. /// /// @return Number of columns - uint32 (*NumColumns) (Sql* self); + uint32 (*NumColumns) (struct Sql *self); /// Returns the number of rows in the result. /// /// @return Number of rows - uint64 (*NumRows) (Sql* self); + uint64 (*NumRows) (struct Sql *self); /// Fetches the next row. /// The data of the previous row is no longer valid. /// /// @return SQL_SUCCESS, SQL_ERROR or SQL_NO_DATA - int (*NextRow) (Sql* self); + int (*NextRow) (struct Sql *self); /// Gets the data of a column. /// The data remains valid until the next row is fetched or the result is freed. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*GetData) (Sql* self, size_t col, char** out_buf, size_t* out_len); + int (*GetData) (struct Sql *self, size_t col, char **out_buf, size_t *out_len); /// Frees the result of the query. - void (*FreeResult) (Sql* self); + void (*FreeResult) (struct Sql *self); /// Shows debug information (last query). - void (*ShowDebug_) (Sql* self, const char* debug_file, const unsigned long debug_line); + void (*ShowDebug_) (struct Sql *self, const char *debug_file, const unsigned long debug_line); /// Frees a Sql handle returned by Sql_Malloc. - void (*Free) (Sql* self); + void (*Free) (struct Sql *self); /// Allocates and initializes a new Sql handle. struct Sql *(*Malloc) (void); @@ -180,56 +176,56 @@ struct sql_interface { /// Queries in Sql and SqlStmt are independent and don't affect each other. /// /// @return SqlStmt handle or NULL if an error occurred - struct SqlStmt* (*StmtMalloc)(Sql* sql); + struct SqlStmt* (*StmtMalloc)(struct Sql *sql); /// Prepares the statement. /// Any previous result is freed and all parameter bindings are removed. /// The query is constructed as if it was sprintf. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtPrepare) (SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3))); + int (*StmtPrepare) (struct SqlStmt *self, const char *query, ...) __attribute__((format(printf, 2, 3))); /// Prepares the statement. /// Any previous result is freed and all parameter bindings are removed. /// The query is constructed as if it was svprintf. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtPrepareV)(SqlStmt* self, const char* query, va_list args); + int (*StmtPrepareV)(struct SqlStmt *self, const char *query, va_list args); /// Prepares the statement. /// Any previous result is freed and all parameter bindings are removed. /// The query is used directly. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtPrepareStr)(SqlStmt* self, const char* query); + int (*StmtPrepareStr)(struct SqlStmt *self, const char *query); /// Returns the number of parameters in the prepared statement. /// /// @return Number or parameters - size_t (*StmtNumParams)(SqlStmt* self); + size_t (*StmtNumParams)(struct SqlStmt *self); /// Binds a parameter to a buffer. /// The buffer data will be used when the statement is executed. /// All parameters should have bindings. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtBindParam)(SqlStmt* self, size_t idx, SqlDataType buffer_type, void* buffer, size_t buffer_len); + int (*StmtBindParam)(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len); /// Executes the prepared statement. /// Any previous result is freed and all column bindings are removed. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtExecute)(SqlStmt* self); + int (*StmtExecute)(struct SqlStmt *self); /// Returns the number of the AUTO_INCREMENT column of the last INSERT/UPDATE statement. /// /// @return Value of the auto-increment column - uint64 (*StmtLastInsertId)(SqlStmt* self); + uint64 (*StmtLastInsertId)(struct SqlStmt *self); /// Returns the number of columns in each row of the result. /// /// @return Number of columns - size_t (*StmtNumColumns)(SqlStmt* self); + size_t (*StmtNumColumns)(struct SqlStmt *self); /// Binds the result of a column to a buffer. /// The buffer will be filled with data when the next row is fetched. @@ -237,26 +233,26 @@ struct sql_interface { /// and the null-terminator (an extra byte). /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtBindColumn)(SqlStmt* self, size_t idx, SqlDataType buffer_type, void* buffer, size_t buffer_len, uint32* out_length, int8* out_is_null); + int (*StmtBindColumn)(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len, uint32 *out_length, int8 *out_is_null); /// Returns the number of rows in the result. /// /// @return Number of rows - uint64 (*StmtNumRows)(SqlStmt* self); + uint64 (*StmtNumRows)(struct SqlStmt *self); /// Fetches the next row. /// All column bindings will be filled with data. /// /// @return SQL_SUCCESS, SQL_ERROR or SQL_NO_DATA - int (*StmtNextRow)(SqlStmt* self); + int (*StmtNextRow)(struct SqlStmt *self); /// Frees the result of the statement execution. - void (*StmtFreeResult)(SqlStmt* self); + void (*StmtFreeResult)(struct SqlStmt *self); /// Frees a SqlStmt returned by SqlStmt_Malloc. - void (*StmtFree)(SqlStmt* self); + void (*StmtFree)(struct SqlStmt *self); - void (*StmtShowDebug_)(SqlStmt* self, const char* debug_file, const unsigned long debug_line); + void (*StmtShowDebug_)(struct SqlStmt *self, const char *debug_file, const unsigned long debug_line); }; @@ -265,8 +261,8 @@ void sql_defaults(void); void Sql_Init(void); -void Sql_HerculesUpdateCheck(Sql* self); -void Sql_HerculesUpdateSkip(Sql* self,const char *filename); +void Sql_HerculesUpdateCheck(struct Sql *self); +void Sql_HerculesUpdateSkip(struct Sql *self, const char *filename); #endif // HERCULES_CORE HPShared struct sql_interface *SQL; diff --git a/src/login/account.h b/src/login/account.h index 151a2863d..7e1930ad4 100644 --- a/src/login/account.h +++ b/src/login/account.h @@ -23,7 +23,9 @@ #include "common/cbasetypes.h" #include "common/mmo.h" // ACCOUNT_REG2_NUM -#include "common/sql.h" // Sql + +/* Forward declarations */ +struct Sql; // common/sql.h typedef struct AccountDB AccountDB; typedef struct AccountDBIterator AccountDBIterator; @@ -158,7 +160,7 @@ struct AccountDB }; #ifdef HERCULES_CORE -Sql *account_db_sql_up(AccountDB* self); +struct Sql *account_db_sql_up(AccountDB* self); void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id); void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id); diff --git a/src/login/account_sql.c b/src/login/account_sql.c index 2a7401f1b..6d0e795f6 100644 --- a/src/login/account_sql.c +++ b/src/login/account_sql.c @@ -43,7 +43,7 @@ typedef struct AccountDB_SQL { AccountDB vtable; // public interface - Sql* accounts; // SQL accounts storage + struct Sql *accounts; // SQL accounts storage // global sql settings char global_db_hostname[32]; @@ -144,7 +144,7 @@ AccountDB* account_db_sql(void) static bool account_db_sql_init(AccountDB* self) { AccountDB_SQL* db = (AccountDB_SQL*)self; - Sql* sql_handle; + struct Sql *sql_handle; const char* username; const char* password; const char* hostname; @@ -379,7 +379,7 @@ static bool account_db_sql_set_property(AccountDB* self, const char* key, const static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc) { AccountDB_SQL* db = (AccountDB_SQL*)self; - Sql* sql_handle; + struct Sql *sql_handle; // decide on the account id to assign int account_id; @@ -433,7 +433,7 @@ static bool account_db_sql_create(AccountDB* self, struct mmo_account* acc) static bool account_db_sql_remove(AccountDB* self, const int account_id) { AccountDB_SQL* db = (AccountDB_SQL*)self; - Sql* sql_handle; + struct Sql *sql_handle; bool result = false; nullpo_ret(db); @@ -470,7 +470,7 @@ static bool account_db_sql_load_num(AccountDB* self, struct mmo_account* acc, co static bool account_db_sql_load_str(AccountDB* self, struct mmo_account* acc, const char* userid) { AccountDB_SQL* db = (AccountDB_SQL*)self; - Sql* sql_handle; + struct Sql *sql_handle; char esc_userid[2*NAME_LENGTH+1]; int account_id; char* data; @@ -540,7 +540,7 @@ static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account { AccountDBIterator_SQL* iter = (AccountDBIterator_SQL*)self; AccountDB_SQL* db; - Sql* sql_handle; + struct Sql *sql_handle; char* data; nullpo_ret(iter); @@ -575,7 +575,7 @@ static bool account_db_sql_iter_next(AccountDBIterator* self, struct mmo_account static bool mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc, int account_id) { - Sql* sql_handle; + struct Sql *sql_handle; char* data; nullpo_ret(db); @@ -620,8 +620,8 @@ static bool mmo_auth_fromsql(AccountDB_SQL* db, struct mmo_account* acc, int acc static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, bool is_new) { - Sql* sql_handle; - SqlStmt* stmt; + struct Sql *sql_handle; + struct SqlStmt *stmt; bool result = false; nullpo_ret(db); @@ -701,12 +701,14 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo return result; } -Sql* account_db_sql_up(AccountDB* self) { +struct Sql *account_db_sql_up(AccountDB* self) +{ AccountDB_SQL* db = (AccountDB_SQL*)self; return db ? db->accounts : NULL; } -void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id) { - Sql* sql_handle; +void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id) +{ + struct Sql *sql_handle; AccountDB_SQL* db = (AccountDB_SQL*)self; int count = RFIFOW(fd, 12); @@ -756,8 +758,9 @@ void mmo_save_accreg2(AccountDB* self, int fd, int account_id, int char_id) { } } -void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id) { - Sql* sql_handle; +void mmo_send_accreg2(AccountDB* self, int fd, int account_id, int char_id) +{ + struct Sql *sql_handle; AccountDB_SQL* db = (AccountDB_SQL*)self; char* data; int plen = 0; diff --git a/src/login/ipban_sql.c b/src/login/ipban_sql.c index 301d22c18..bec0217f4 100644 --- a/src/login/ipban_sql.c +++ b/src/login/ipban_sql.c @@ -49,7 +49,7 @@ static char ipban_codepage[32] = ""; static char ipban_table[32] = "ipbanlist"; // globals -static Sql* sql_handle = NULL; +static struct Sql *sql_handle = NULL; static int cleanup_timer_id = INVALID_TIMER; static bool ipban_inited = false; diff --git a/src/login/loginlog_sql.c b/src/login/loginlog_sql.c index 356bba3b4..16accfada 100644 --- a/src/login/loginlog_sql.c +++ b/src/login/loginlog_sql.c @@ -47,7 +47,7 @@ static char log_db_database[32] = ""; static char log_codepage[32] = ""; static char log_login_db[256] = "loginlog"; -static Sql* sql_handle = NULL; +static struct Sql *sql_handle = NULL; static bool enabled = false; diff --git a/src/map/log.c b/src/map/log.c index 072f7b6fd..245229a15 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -119,8 +119,9 @@ bool should_log_item(int nameid, int amount, int refine, struct item_data *id) { return false; } -void log_branch_sub_sql(struct map_session_data* sd) { - SqlStmt* stmt; +void log_branch_sub_sql(struct map_session_data* sd) +{ + struct SqlStmt *stmt; nullpo_retv(sd); stmt = SQL->StmtMalloc(logs->mysql_handle); @@ -279,8 +280,9 @@ void log_mvpdrop(struct map_session_data* sd, int monster_id, int* log_mvp) logs->mvpdrop_sub(sd,monster_id,log_mvp); } -void log_atcommand_sub_sql(struct map_session_data* sd, const char* message) { - SqlStmt* stmt; +void log_atcommand_sub_sql(struct map_session_data* sd, const char* message) +{ + struct SqlStmt *stmt; nullpo_retv(sd); nullpo_retv(message); @@ -322,8 +324,9 @@ void log_atcommand(struct map_session_data* sd, const char* message) logs->atcommand_sub(sd,message); } -void log_npc_sub_sql(struct map_session_data *sd, const char *message) { - SqlStmt* stmt; +void log_npc_sub_sql(struct map_session_data *sd, const char *message) +{ + struct SqlStmt *stmt; nullpo_retv(sd); nullpo_retv(message); @@ -379,7 +382,7 @@ void log_npc(struct map_session_data* sd, const char* message) */ void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char *mapname, int x, int y, const char *dst_charname, const char *message) { - SqlStmt* stmt; + struct SqlStmt* stmt; nullpo_retv(dst_charname); nullpo_retv(message); diff --git a/src/map/log.h b/src/map/log.h index 69622adc6..0a5e13208 100644 --- a/src/map/log.h +++ b/src/map/log.h @@ -22,11 +22,11 @@ #define MAP_LOG_H #include "common/hercules.h" -#include "common/sql.h" /** * Declarations **/ +struct Sql; // common/sql.h struct item; struct item_data; struct map_session_data; @@ -127,7 +127,7 @@ struct log_interface { char db_id[32]; char db_pw[100]; char db_name[32]; - Sql* mysql_handle; + struct Sql *mysql_handle; /* */ void (*pick_pc) (struct map_session_data* sd, e_log_pick_type type, int amount, struct item* itm, struct item_data *data); void (*pick_mob) (struct mob_data* md, e_log_pick_type type, int amount, struct item* itm, struct item_data *data); diff --git a/src/map/map.c b/src/map/map.c index f2e47be74..a93fb3fd3 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -69,6 +69,7 @@ #include "common/random.h" #include "common/showmsg.h" #include "common/socket.h" // WFIFO*() +#include "common/sql.h" #include "common/strlib.h" #include "common/timer.h" #include "common/utils.h" diff --git a/src/map/map.h b/src/map/map.h index 54b0c3575..e61c64f2d 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -27,11 +27,12 @@ #include "common/db.h" #include "common/mapindex.h" #include "common/mmo.h" -#include "common/sql.h" #include #include +/* Forward Declarations */ +struct Sql; // common/sql.h struct mob_data; struct npc_data; struct channel_data; @@ -993,7 +994,7 @@ struct map_interface { char server_id[32]; char server_pw[100]; char server_db[32]; - Sql* mysql_handle; + struct Sql *mysql_handle; int port; int users; diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c index 46962ac14..f3ab36950 100644 --- a/src/map/mapreg_sql.c +++ b/src/map/mapreg_sql.c @@ -190,7 +190,7 @@ void script_load_mapreg(void) { | varname | index | value | +-------------------------+ */ - SqlStmt* stmt = SQL->StmtMalloc(map->mysql_handle); + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); char varname[SCRIPT_VARNAME_LENGTH+1]; int index; char value[255+1]; diff --git a/src/map/npc.c b/src/map/npc.c index 93981e312..7fad5dd7c 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -47,6 +47,7 @@ #include "common/nullpo.h" #include "common/showmsg.h" #include "common/socket.h" +#include "common/sql.h" #include "common/strlib.h" #include "common/timer.h" #include "common/utils.h" @@ -1514,8 +1515,9 @@ int npc_buylist_sub(struct map_session_data *sd, struct itemlist *item_list, str /** * Loads persistent NPC Market Data from SQL **/ -void npc_market_fromsql(void) { - SqlStmt* stmt = SQL->StmtMalloc(map->mysql_handle); +void npc_market_fromsql(void) +{ + struct SqlStmt *stmt = SQL->StmtMalloc(map->mysql_handle); char name[NAME_LENGTH+1]; int itemid; int amount; diff --git a/src/map/pc.c b/src/map/pc.c index e958f32b6..4b70a49f3 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -63,6 +63,7 @@ #include "common/random.h" #include "common/showmsg.h" #include "common/socket.h" +#include "common/sql.h" #include "common/strlib.h" // safestrncpy() #include "common/sysinfo.h" #include "common/timer.h" diff --git a/src/map/script.c b/src/map/script.c index 3482165f8..aeff221d4 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -63,6 +63,7 @@ #include "common/random.h" #include "common/showmsg.h" #include "common/socket.h" // usage: getcharip +#include "common/sql.h" #include "common/strlib.h" #include "common/sysinfo.h" #include "common/timer.h" @@ -15932,7 +15933,7 @@ BUILDIN(setd) return true; } -int buildin_query_sql_sub(struct script_state* st, Sql* handle) +int buildin_query_sql_sub(struct script_state *st, struct Sql *handle) { int i, j; struct map_session_data *sd = NULL; diff --git a/src/map/script.h b/src/map/script.h index b8e9d1997..e5a8d3edd 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -25,7 +25,6 @@ #include "common/hercules.h" #include "common/db.h" #include "common/mmo.h" // struct item -#include "common/sql.h" // Sql #include "common/strlib.h" //StringBuf #include @@ -34,6 +33,7 @@ /** * Declarations **/ +struct Sql; // common/sql.h struct eri; struct item_data; @@ -773,7 +773,7 @@ struct script_interface { int (*playbgm_sub) (struct block_list *bl, va_list ap); int (*playbgm_foreachpc_sub) (struct map_session_data *sd, va_list args); int (*soundeffect_sub) (struct block_list *bl, va_list ap); - int (*buildin_query_sql_sub) (struct script_state *st, Sql *handle); + int (*buildin_query_sql_sub) (struct script_state *st, struct Sql *handle); int (*buildin_instance_warpall_sub) (struct block_list *bl, va_list ap); int (*buildin_mobuseskill_sub) (struct block_list *bl, va_list ap); int (*cleanfloor_sub) (struct block_list *bl, va_list ap); diff --git a/src/plugins/db2sql.c b/src/plugins/db2sql.c index 86708ebbc..510a56e2c 100644 --- a/src/plugins/db2sql.c +++ b/src/plugins/db2sql.c @@ -25,6 +25,7 @@ #include "common/memmgr.h" #include "common/mmo.h" #include "common/nullpo.h" +#include "common/sql.h" #include "common/strlib.h" #include "map/battle.h" #include "map/itemdb.h" -- cgit v1.2.3-70-g09d2 From 127093b5327de343f4ae3f7c8752c465eea911c8 Mon Sep 17 00:00:00 2001 From: Haru Date: Fri, 19 Feb 2016 21:40:53 +0100 Subject: Changed buffer argument of SQL->StmtBindParam() to const Parameters are supposed to be read-only Signed-off-by: Haru --- src/char/char.c | 4 ++-- src/char/int_homun.c | 4 ++-- src/common/sql.c | 19 +++++++++++---- src/common/sql.h | 2 +- src/login/account_sql.c | 62 ++++++++++++++++++++++++------------------------- src/map/log.c | 16 ++++++------- 6 files changed, 58 insertions(+), 49 deletions(-) (limited to 'src/map') diff --git a/src/char/char.c b/src/char/char.c index 23f5d1ea0..df59eafc9 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -3298,8 +3298,8 @@ void char_ban(int account_id, int char_id, time_t *unban_time, short year, short if( SQL_SUCCESS != SQL->StmtPrepare(stmt, "UPDATE `%s` SET `unban_time` = ? WHERE `char_id` = ? LIMIT 1", char_db) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_LONG, (void*)×tamp, sizeof(timestamp)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_INT, (void*)&char_id, sizeof(char_id)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_LONG, ×tamp, sizeof(timestamp)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_INT, &char_id, sizeof(char_id)) || SQL_SUCCESS != SQL->StmtExecute(stmt) ) { SqlStmt_ShowDebug(stmt); diff --git a/src/char/int_homun.c b/src/char/int_homun.c index bfb0009e6..90643699c 100644 --- a/src/char/int_homun.c +++ b/src/char/int_homun.c @@ -171,8 +171,8 @@ bool mapif_homunculus_save(const struct s_homunculus *hd) } else { for (i = 0; i < MAX_HOMUNSKILL; ++i) { if (hd->hskill[i].id > 0 && hd->hskill[i].lv != 0) { - SQL->StmtBindParam(stmt, 0, SQLDT_USHORT, (void*)&hd->hskill[i].id, 0); // FIXME: StmtBindParam should take const void - SQL->StmtBindParam(stmt, 1, SQLDT_USHORT, (void*)&hd->hskill[i].lv, 0); // FIXME: StmtBindParam should take const void + SQL->StmtBindParam(stmt, 0, SQLDT_USHORT, &hd->hskill[i].id, 0); + SQL->StmtBindParam(stmt, 1, SQLDT_USHORT, &hd->hskill[i].lv, 0); if (SQL_ERROR == SQL->StmtExecute(stmt)) { SqlStmt_ShowDebug(stmt); flag = false; diff --git a/src/common/sql.c b/src/common/sql.c index 1dcf5d374..65960d8ea 100644 --- a/src/common/sql.c +++ b/src/common/sql.c @@ -629,7 +629,7 @@ size_t SqlStmt_NumParams(struct SqlStmt *self) } /// Binds a parameter to a buffer. -int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len) +int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len) { if( self == NULL ) return SQL_ERROR; @@ -650,10 +650,19 @@ int SqlStmt_BindParam(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_ self->params[i].buffer_type = MYSQL_TYPE_NULL; self->bind_params = true; } - if( idx < self->max_params ) - return Sql_P_BindSqlDataType(self->params+idx, buffer_type, buffer, buffer_len, NULL, NULL); - else - return SQL_SUCCESS;// out of range - ignore + if (idx >= self->max_params) + return SQL_SUCCESS; // out of range - ignore + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" + /* + * MySQL uses the same struct with a non-const buffer for both + * parameters (input) and columns (output). + * As such, we get to close our eyes and pretend we didn't see we're + * dropping a const qualifier here. + */ + return Sql_P_BindSqlDataType(self->params+idx, buffer_type, (void *)buffer, buffer_len, NULL, NULL); +#pragma GCC diagnostic pop } /// Executes the prepared statement. diff --git a/src/common/sql.h b/src/common/sql.h index 3619895b1..07be829fc 100644 --- a/src/common/sql.h +++ b/src/common/sql.h @@ -209,7 +209,7 @@ struct sql_interface { /// All parameters should have bindings. /// /// @return SQL_SUCCESS or SQL_ERROR - int (*StmtBindParam)(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, void *buffer, size_t buffer_len); + int (*StmtBindParam)(struct SqlStmt *self, size_t idx, enum SqlDataType buffer_type, const void *buffer, size_t buffer_len); /// Executes the prepared statement. /// Any previous result is freed and all column bindings are removed. diff --git a/src/login/account_sql.c b/src/login/account_sql.c index 6d0e795f6..195a10233 100644 --- a/src/login/account_sql.c +++ b/src/login/account_sql.c @@ -644,22 +644,22 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo if( SQL_SUCCESS != SQL->StmtPrepare(stmt, "INSERT INTO `%s` (`account_id`, `userid`, `user_pass`, `sex`, `email`, `group_id`, `state`, `unban_time`, `expiration_time`, `logincount`, `lastlogin`, `last_ip`, `birthdate`, `character_slots`, `pincode`, `pincode_change`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", db->account_db) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_INT, (void*)&acc->account_id, sizeof(acc->account_id)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, (void*)acc->userid, strlen(acc->userid)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_STRING, (void*)acc->pass, strlen(acc->pass)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_ENUM, (void*)&acc->sex, sizeof(acc->sex)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_STRING, (void*)&acc->email, strlen(acc->email)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_INT, (void*)&acc->group_id, sizeof(acc->group_id)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_UINT, (void*)&acc->state, sizeof(acc->state)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_LONG, (void*)&acc->unban_time, sizeof(acc->unban_time)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_INT, (void*)&acc->expiration_time, sizeof(acc->expiration_time)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 9, SQLDT_UINT, (void*)&acc->logincount, sizeof(acc->logincount)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 10, SQLDT_STRING, (void*)&acc->lastlogin, strlen(acc->lastlogin)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 11, SQLDT_STRING, (void*)&acc->last_ip, strlen(acc->last_ip)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 12, SQLDT_STRING, (void*)&acc->birthdate, strlen(acc->birthdate)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_UCHAR, (void*)&acc->char_slots, sizeof(acc->char_slots)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_STRING, (void*)&acc->pincode, strlen(acc->pincode)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 15, SQLDT_LONG, (void*)&acc->pincode_change, sizeof(acc->pincode_change)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_INT, &acc->account_id, sizeof(acc->account_id)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, acc->userid, strlen(acc->userid)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_STRING, acc->pass, strlen(acc->pass)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_ENUM, &acc->sex, sizeof(acc->sex)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_STRING, &acc->email, strlen(acc->email)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_INT, &acc->group_id, sizeof(acc->group_id)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_UINT, &acc->state, sizeof(acc->state)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_LONG, &acc->unban_time, sizeof(acc->unban_time)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_INT, &acc->expiration_time, sizeof(acc->expiration_time)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 9, SQLDT_UINT, &acc->logincount, sizeof(acc->logincount)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 10, SQLDT_STRING, &acc->lastlogin, strlen(acc->lastlogin)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 11, SQLDT_STRING, &acc->last_ip, strlen(acc->last_ip)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 12, SQLDT_STRING, &acc->birthdate, strlen(acc->birthdate)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_UCHAR, &acc->char_slots, sizeof(acc->char_slots)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_STRING, &acc->pincode, strlen(acc->pincode)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 15, SQLDT_LONG, &acc->pincode_change, sizeof(acc->pincode_change)) || SQL_SUCCESS != SQL->StmtExecute(stmt) ) { SqlStmt_ShowDebug(stmt); @@ -667,21 +667,21 @@ static bool mmo_auth_tosql(AccountDB_SQL* db, const struct mmo_account* acc, boo } } else {// update account table if( SQL_SUCCESS != SQL->StmtPrepare(stmt, "UPDATE `%s` SET `userid`=?,`user_pass`=?,`sex`=?,`email`=?,`group_id`=?,`state`=?,`unban_time`=?,`expiration_time`=?,`logincount`=?,`lastlogin`=?,`last_ip`=?,`birthdate`=?,`character_slots`=?,`pincode`=?,`pincode_change`=? WHERE `account_id` = '%d'", db->account_db, acc->account_id) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, (void*)acc->userid, strlen(acc->userid)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, (void*)acc->pass, strlen(acc->pass)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_ENUM, (void*)&acc->sex, sizeof(acc->sex)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_STRING, (void*)acc->email, strlen(acc->email)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_INT, (void*)&acc->group_id, sizeof(acc->group_id)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_UINT, (void*)&acc->state, sizeof(acc->state)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_LONG, (void*)&acc->unban_time, sizeof(acc->unban_time)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_LONG, (void*)&acc->expiration_time, sizeof(acc->expiration_time)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_UINT, (void*)&acc->logincount, sizeof(acc->logincount)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 9, SQLDT_STRING, (void*)&acc->lastlogin, strlen(acc->lastlogin)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 10, SQLDT_STRING, (void*)&acc->last_ip, strlen(acc->last_ip)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 11, SQLDT_STRING, (void*)&acc->birthdate, strlen(acc->birthdate)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 12, SQLDT_UCHAR, (void*)&acc->char_slots, sizeof(acc->char_slots)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_STRING, (void*)&acc->pincode, strlen(acc->pincode)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_LONG, (void*)&acc->pincode_change, sizeof(acc->pincode_change)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, acc->userid, strlen(acc->userid)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, acc->pass, strlen(acc->pass)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 2, SQLDT_ENUM, &acc->sex, sizeof(acc->sex)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 3, SQLDT_STRING, acc->email, strlen(acc->email)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 4, SQLDT_INT, &acc->group_id, sizeof(acc->group_id)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 5, SQLDT_UINT, &acc->state, sizeof(acc->state)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 6, SQLDT_LONG, &acc->unban_time, sizeof(acc->unban_time)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 7, SQLDT_LONG, &acc->expiration_time, sizeof(acc->expiration_time)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 8, SQLDT_UINT, &acc->logincount, sizeof(acc->logincount)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 9, SQLDT_STRING, &acc->lastlogin, strlen(acc->lastlogin)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 10, SQLDT_STRING, &acc->last_ip, strlen(acc->last_ip)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 11, SQLDT_STRING, &acc->birthdate, strlen(acc->birthdate)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 12, SQLDT_UCHAR, &acc->char_slots, sizeof(acc->char_slots)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 13, SQLDT_STRING, &acc->pincode, strlen(acc->pincode)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 14, SQLDT_LONG, &acc->pincode_change, sizeof(acc->pincode_change)) || SQL_SUCCESS != SQL->StmtExecute(stmt) ) { SqlStmt_ShowDebug(stmt); diff --git a/src/map/log.c b/src/map/log.c index 245229a15..c19190d90 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -289,7 +289,7 @@ void log_atcommand_sub_sql(struct map_session_data* sd, const char* message) stmt = SQL->StmtMalloc(logs->mysql_handle); if( SQL_SUCCESS != SQL->StmtPrepare(stmt, LOG_QUERY " INTO `%s` (`atcommand_date`, `account_id`, `char_id`, `char_name`, `map`, `command`) VALUES (NOW(), '%d', '%d', ?, '%s', ?)", logs->config.log_gm, sd->status.account_id, sd->status.char_id, mapindex_id2name(sd->mapindex) ) || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, sd->status.name, strnlen(sd->status.name, NAME_LENGTH)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, (char*)message, safestrnlen(message, 255)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, message, safestrnlen(message, 255)) || SQL_SUCCESS != SQL->StmtExecute(stmt) ) { SqlStmt_ShowDebug(stmt); @@ -331,11 +331,11 @@ void log_npc_sub_sql(struct map_session_data *sd, const char *message) nullpo_retv(sd); nullpo_retv(message); stmt = SQL->StmtMalloc(logs->mysql_handle); - if( SQL_SUCCESS != SQL->StmtPrepare(stmt, LOG_QUERY " INTO `%s` (`npc_date`, `account_id`, `char_id`, `char_name`, `map`, `mes`) VALUES (NOW(), '%d', '%d', ?, '%s', ?)", logs->config.log_npc, sd->status.account_id, sd->status.char_id, mapindex_id2name(sd->mapindex) ) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, sd->status.name, strnlen(sd->status.name, NAME_LENGTH)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, (char*)message, safestrnlen(message, 255)) - || SQL_SUCCESS != SQL->StmtExecute(stmt) ) - { + if (SQL_SUCCESS != SQL->StmtPrepare(stmt, LOG_QUERY " INTO `%s` (`npc_date`, `account_id`, `char_id`, `char_name`, `map`, `mes`) VALUES (NOW(), '%d', '%d', ?, '%s', ?)", logs->config.log_npc, sd->status.account_id, sd->status.char_id, mapindex_id2name(sd->mapindex) ) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, sd->status.name, strnlen(sd->status.name, NAME_LENGTH)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, message, safestrnlen(message, 255)) + || SQL_SUCCESS != SQL->StmtExecute(stmt) + ) { SqlStmt_ShowDebug(stmt); SQL->StmtFree(stmt); return; @@ -388,8 +388,8 @@ void log_chat_sub_sql(e_log_chat_type type, int type_id, int src_charid, int src nullpo_retv(message); stmt = SQL->StmtMalloc(logs->mysql_handle); if( SQL_SUCCESS != SQL->StmtPrepare(stmt, LOG_QUERY " INTO `%s` (`time`, `type`, `type_id`, `src_charid`, `src_accountid`, `src_map`, `src_map_x`, `src_map_y`, `dst_charname`, `message`) VALUES (NOW(), '%c', '%d', '%d', '%d', '%s', '%d', '%d', ?, ?)", logs->config.log_chat, logs->chattype2char(type), type_id, src_charid, src_accid, mapname, x, y) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, (char*)dst_charname, safestrnlen(dst_charname, NAME_LENGTH)) - || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, (char*)message, safestrnlen(message, CHAT_SIZE_MAX)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 0, SQLDT_STRING, dst_charname, safestrnlen(dst_charname, NAME_LENGTH)) + || SQL_SUCCESS != SQL->StmtBindParam(stmt, 1, SQLDT_STRING, message, safestrnlen(message, CHAT_SIZE_MAX)) || SQL_SUCCESS != SQL->StmtExecute(stmt) ) { SqlStmt_ShowDebug(stmt); -- cgit v1.2.3-70-g09d2 From 13dcf1e6c32b672e72f70a6cdbb42b4c3a2df3d8 Mon Sep 17 00:00:00 2001 From: Haru Date: Sat, 20 Feb 2016 03:00:09 +0100 Subject: Dropped typedefs from union DBKey and struct DBData Signed-off-by: Haru --- src/char/char.c | 12 ++-- src/char/char.h | 12 ++-- src/char/int_guild.c | 4 +- src/char/int_guild.h | 2 +- src/char/inter.c | 2 +- src/char/inter.h | 2 +- src/common/db.c | 190 ++++++++++++++++++++++++------------------------- src/common/db.h | 118 +++++++++++++++--------------- src/login/login.c | 6 +- src/login/login.h | 6 +- src/map/atcommand.c | 11 +-- src/map/atcommand.h | 2 +- src/map/battleground.c | 6 +- src/map/battleground.h | 4 +- src/map/chrif.c | 9 ++- src/map/chrif.h | 6 +- src/map/guild.c | 24 ++++--- src/map/guild.h | 16 ++--- src/map/intif.c | 4 +- src/map/itemdb.c | 12 ++-- src/map/itemdb.h | 6 +- src/map/map.c | 16 +++-- src/map/map.h | 12 ++-- src/map/mapreg.h | 2 +- src/map/mapreg_sql.c | 3 +- src/map/npc.c | 16 ++--- src/map/npc.h | 10 +-- src/map/party.c | 3 +- src/map/party.h | 2 +- src/map/pc.c | 9 +-- src/map/pc.h | 5 +- src/map/pc_groups.c | 2 +- src/map/script.c | 11 +-- src/map/script.h | 8 +-- src/map/skill.c | 3 +- src/map/skill.h | 2 +- src/map/storage.c | 4 +- src/map/storage.h | 4 +- 38 files changed, 293 insertions(+), 273 deletions(-) (limited to 'src/map') diff --git a/src/char/char.c b/src/char/char.c index df59eafc9..01262fdcb 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -171,7 +171,7 @@ static DBMap* auth_db; // int account_id -> struct char_auth_node* /** * @see DBCreateData */ -static DBData char_create_online_char_data(DBKey key, va_list args) +static struct DBData char_create_online_char_data(union DBKey key, va_list args) { struct online_char_data* character; CREATE(character, struct online_char_data, 1); @@ -313,7 +313,7 @@ void char_set_char_offline(int char_id, int account_id) /** * @see DBApply */ -static int char_db_setoffline(DBKey key, DBData *data, va_list ap) +static int char_db_setoffline(union DBKey key, struct DBData *data, va_list ap) { struct online_char_data* character = (struct online_char_data*)DB->data2ptr(data); int server_id = va_arg(ap, int); @@ -333,7 +333,7 @@ static int char_db_setoffline(DBKey key, DBData *data, va_list ap) /** * @see DBApply */ -static int char_db_kickoffline(DBKey key, DBData *data, va_list ap) +static int char_db_kickoffline(union DBKey key, struct DBData *data, va_list ap) { struct online_char_data* character = (struct online_char_data*)DB->data2ptr(data); int server_id = va_arg(ap, int); @@ -388,7 +388,7 @@ void char_set_all_offline_sql(void) /** * @see DBCreateData */ -static DBData char_create_charstatus(DBKey key, va_list args) +static struct DBData char_create_charstatus(union DBKey key, va_list args) { struct mmo_charstatus *cp; cp = (struct mmo_charstatus *) aCalloc(1,sizeof(struct mmo_charstatus)); @@ -5249,7 +5249,7 @@ int char_broadcast_user_count(int tid, int64 tick, int id, intptr_t data) { * Load this character's account id into the 'online accounts' packet * @see DBApply */ -static int char_send_accounts_tologin_sub(DBKey key, DBData *data, va_list ap) +static int char_send_accounts_tologin_sub(union DBKey key, struct DBData *data, va_list ap) { struct online_char_data* character = DB->data2ptr(data); int* i = va_arg(ap, int*); @@ -5318,7 +5318,7 @@ static int char_waiting_disconnect(int tid, int64 tick, int id, intptr_t data) { /** * @see DBApply */ -static int char_online_data_cleanup_sub(DBKey key, DBData *data, va_list ap) +static int char_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_list ap) { struct online_char_data *character= DB->data2ptr(data); nullpo_ret(character); diff --git a/src/char/char.h b/src/char/char.h index aedc52fbe..4fe602c45 100644 --- a/src/char/char.h +++ b/src/char/char.h @@ -115,18 +115,18 @@ struct char_interface { int (*waiting_disconnect) (int tid, int64 tick, int id, intptr_t data); int (*delete_char_sql) (int char_id); - DBData (*create_online_char_data) (DBKey key, va_list args); + struct DBData (*create_online_char_data) (union DBKey key, va_list args); void (*set_account_online) (int account_id); void (*set_account_offline) (int account_id); void (*set_char_charselect) (int account_id); void (*set_char_online) (int map_id, int char_id, int account_id); void (*set_char_offline) (int char_id, int account_id); - int (*db_setoffline) (DBKey key, DBData *data, va_list ap); - int (*db_kickoffline) (DBKey key, DBData *data, va_list ap); + int (*db_setoffline) (union DBKey key, struct DBData *data, va_list ap); + int (*db_kickoffline) (union DBKey key, struct DBData *data, va_list ap); void (*set_login_all_offline) (void); void (*set_all_offline) (int id); void (*set_all_offline_sql) (void); - DBData (*create_charstatus) (DBKey key, va_list args); + struct DBData (*create_charstatus) (union DBKey key, va_list args); int (*mmo_char_tosql) (int char_id, struct mmo_charstatus* p); int (*memitemdata_to_sql) (const struct item items[], int max, int id, int tableswitch); int (*mmo_gender) (const struct char_session_data *sd, const struct mmo_charstatus *p, char sex); @@ -263,10 +263,10 @@ struct char_interface { int (*parse_char_unknown_packet) (int fd, uint32 ipl); int (*parse_char) (int fd); int (*broadcast_user_count) (int tid, int64 tick, int id, intptr_t data); - int (*send_accounts_tologin_sub) (DBKey key, DBData *data, va_list ap); + int (*send_accounts_tologin_sub) (union DBKey key, struct DBData *data, va_list ap); int (*send_accounts_tologin) (int tid, int64 tick, int id, intptr_t data); int (*check_connect_login_server) (int tid, int64 tick, int id, intptr_t data); - int (*online_data_cleanup_sub) (DBKey key, DBData *data, va_list ap); + int (*online_data_cleanup_sub) (union DBKey key, struct DBData *data, va_list ap); int (*online_data_cleanup) (int tid, int64 tick, int id, intptr_t data); void (*sql_config_read) (const char* cfgName); void (*config_dispatch) (char *w1, char *w2); diff --git a/src/char/int_guild.c b/src/char/int_guild.c index ab15d5ef9..c269a8f6f 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -60,7 +60,7 @@ int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) { static int last_id = 0; //To know in which guild we were. int state = 0; //0: Have not reached last guild. 1: Reached last guild, ready for save. 2: Some guild saved, don't do further saving. DBIterator *iter = db_iterator(inter_guild->guild_db); - DBKey key; + union DBKey key; struct guild* g; if( last_id == 0 ) //Save the first guild in the list. @@ -749,7 +749,7 @@ int inter_guild_sql_init(void) /** * @see DBApply */ -int inter_guild_db_final(DBKey key, DBData *data, va_list ap) +int inter_guild_db_final(union DBKey key, struct DBData *data, va_list ap) { struct guild *g = DB->data2ptr(data); nullpo_ret(g); diff --git a/src/char/int_guild.h b/src/char/int_guild.h index 40728c3b2..31c334cbf 100644 --- a/src/char/int_guild.h +++ b/src/char/int_guild.h @@ -58,7 +58,7 @@ struct inter_guild_interface { int (*CharOnline) (int char_id, int guild_id); int (*CharOffline) (int char_id, int guild_id); int (*sql_init) (void); - int (*db_final) (DBKey key, DBData *data, va_list ap); + int (*db_final) (union DBKey key, struct DBData *data, va_list ap); void (*sql_final) (void); int (*search_guildname) (const char *str); bool (*check_empty) (struct guild *g); diff --git a/src/char/inter.c b/src/char/inter.c index 4e1adbe15..cf648c238 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -1038,7 +1038,7 @@ int mapif_disconnectplayer(int fd, int account_id, int char_id, int reason) * Existence check of WISP data * @see DBApply */ -int inter_check_ttl_wisdata_sub(DBKey key, DBData *data, va_list ap) +int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap) { int64 tick; struct WisData *wd = DB->data2ptr(data); diff --git a/src/char/inter.h b/src/char/inter.h index 84cb6c640..4e8d113ce 100644 --- a/src/char/inter.h +++ b/src/char/inter.h @@ -47,7 +47,7 @@ struct inter_interface { int (*log) (char* fmt, ...); int (*init_sql) (const char *file); int (*mapif_init) (int fd); - int (*check_ttl_wisdata_sub) (DBKey key, DBData *data, va_list ap); + int (*check_ttl_wisdata_sub) (union DBKey key, struct DBData *data, va_list ap); int (*check_ttl_wisdata) (void); int (*check_length) (int fd, int length); int (*parse_frommap) (int fd); diff --git a/src/common/db.c b/src/common/db.c index 4b8e16b5d..639d42156 100644 --- a/src/common/db.c +++ b/src/common/db.c @@ -161,8 +161,8 @@ typedef struct dbn { struct dbn *left; struct dbn *right; // Node data - DBKey key; - DBData data; + union DBKey key; + struct DBData data; // Other enum DBNodeColor color; unsigned deleted : 1; @@ -447,7 +447,7 @@ static void db_rotate_right(DBNode *node, DBNode **root) * @private * @see #db_rotate_left(DBNode *,DBNode **) * @see #db_rotate_right(DBNode *,DBNode **) - * @see #db_obj_put(DBMap*,DBKey,DBData) + * @see #db_obj_put() */ static void db_rebalance(DBNode *node, DBNode **root) { @@ -648,11 +648,11 @@ static void db_rebalance_erase(DBNode *node, DBNode **root) * @param key Key being tested * @return not 0 if considered NULL, 0 otherwise * @private - * @see #db_obj_get(DBMap*,DBKey) - * @see #db_obj_put(DBMap*,DBKey,DBData) - * @see #db_obj_remove(DBMap*,DBKey) + * @see #db_obj_get() + * @see #db_obj_put() + * @see #db_obj_remove() */ -static int db_is_key_null(enum DBType type, DBKey key) +static int db_is_key_null(enum DBType type, union DBKey key) { DB_COUNTSTAT(db_is_key_null); switch (type) { @@ -673,10 +673,10 @@ static int db_is_key_null(enum DBType type, DBKey key) * @private * @see #db_free_add(DBMap_impl*,DBNode *,DBNode **) * @see #db_free_remove(DBMap_impl*,DBNode *) - * @see #db_obj_put(DBMap*,DBKey,void *) - * @see #db_dup_key_free(DBMap_impl*,DBKey) + * @see #db_obj_put() + * @see #db_dup_key_free() */ -static DBKey db_dup_key(DBMap_impl* db, DBKey key) +static union DBKey db_dup_key(DBMap_impl* db, union DBKey key) { char *str; size_t len; @@ -702,9 +702,9 @@ static DBKey db_dup_key(DBMap_impl* db, DBKey key) * @param db Database the key is being used in * @param key Key to be freed * @private - * @see #db_dup_key(DBMap_impl*,DBKey) + * @see #db_dup_key() */ -static void db_dup_key_free(DBMap_impl* db, DBKey key) +static void db_dup_key_free(DBMap_impl* db, union DBKey key) { DB_COUNTSTAT(db_dup_key_free); switch (db->type) { @@ -730,12 +730,12 @@ static void db_dup_key_free(DBMap_impl* db, DBKey key) * @see DBMap_impl#free_list * @see DBMap_impl#free_count * @see DBMap_impl#free_max - * @see #db_obj_remove(DBMap*,DBKey) + * @see #db_obj_remove() * @see #db_free_remove(DBMap_impl*,DBNode *) */ static void db_free_add(DBMap_impl* db, DBNode *node, DBNode **root) { - DBKey old_key; + union DBKey old_key; DB_COUNTSTAT(db_free_add); if (db->free_lock == (unsigned int)~0) { @@ -779,7 +779,7 @@ static void db_free_add(DBMap_impl* db, DBNode *node, DBNode **root) * @see #struct db_free * @see DBMap_impl#free_list * @see DBMap_impl#free_count - * @see #db_obj_put(DBMap*,DBKey,DBData) + * @see #db_obj_put() * @see #db_free_add(DBMap_impl*,DBNode**,DBNode*) */ static void db_free_remove(DBMap_impl* db, DBNode *node) @@ -893,7 +893,7 @@ static void db_free_unlock(DBMap_impl* db) * @see #DBComparator * @see #db_default_cmp() */ -static int db_int_cmp(DBKey key1, DBKey key2, unsigned short maxlen) +static int db_int_cmp(union DBKey key1, union DBKey key2, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_int_cmp); @@ -915,7 +915,7 @@ static int db_int_cmp(DBKey key1, DBKey key2, unsigned short maxlen) * @see #DBComparator * @see #db_default_cmp() */ -static int db_uint_cmp(DBKey key1, DBKey key2, unsigned short maxlen) +static int db_uint_cmp(union DBKey key1, union DBKey key2, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_uint_cmp); @@ -936,7 +936,7 @@ static int db_uint_cmp(DBKey key1, DBKey key2, unsigned short maxlen) * @see #DBComparator * @see #db_default_cmp() */ -static int db_string_cmp(DBKey key1, DBKey key2, unsigned short maxlen) +static int db_string_cmp(union DBKey key1, union DBKey key2, unsigned short maxlen) { DB_COUNTSTAT(db_string_cmp); return strncmp((const char *)key1.str, (const char *)key2.str, maxlen); @@ -954,7 +954,7 @@ static int db_string_cmp(DBKey key1, DBKey key2, unsigned short maxlen) * @see #DBComparator * @see #db_default_cmp() */ -static int db_istring_cmp(DBKey key1, DBKey key2, unsigned short maxlen) +static int db_istring_cmp(union DBKey key1, union DBKey key2, unsigned short maxlen) { DB_COUNTSTAT(db_istring_cmp); return strncasecmp((const char *)key1.str, (const char *)key2.str, maxlen); @@ -973,7 +973,7 @@ static int db_istring_cmp(DBKey key1, DBKey key2, unsigned short maxlen) * @see #DBComparator * @see #db_default_cmp() */ -static int db_int64_cmp(DBKey key1, DBKey key2, unsigned short maxlen) +static int db_int64_cmp(union DBKey key1, union DBKey key2, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_int64_cmp); @@ -995,7 +995,7 @@ static int db_int64_cmp(DBKey key1, DBKey key2, unsigned short maxlen) * @see #DBComparator * @see #db_default_cmp() */ -static int db_uint64_cmp(DBKey key1, DBKey key2, unsigned short maxlen) +static int db_uint64_cmp(union DBKey key1, union DBKey key2, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_uint64_cmp); @@ -1016,7 +1016,7 @@ static int db_uint64_cmp(DBKey key1, DBKey key2, unsigned short maxlen) * @see #DBHasher * @see #db_default_hash() */ -static uint64 db_int_hash(DBKey key, unsigned short maxlen) +static uint64 db_int_hash(union DBKey key, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_int_hash); @@ -1034,7 +1034,7 @@ static uint64 db_int_hash(DBKey key, unsigned short maxlen) * @see #DBHasher * @see #db_default_hash() */ -static uint64 db_uint_hash(DBKey key, unsigned short maxlen) +static uint64 db_uint_hash(union DBKey key, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_uint_hash); @@ -1050,7 +1050,7 @@ static uint64 db_uint_hash(DBKey key, unsigned short maxlen) * @see #DBHasher * @see #db_default_hash() */ -static uint64 db_string_hash(DBKey key, unsigned short maxlen) +static uint64 db_string_hash(union DBKey key, unsigned short maxlen) { const char *k = key.str; unsigned int hash = 0; @@ -1076,7 +1076,7 @@ static uint64 db_string_hash(DBKey key, unsigned short maxlen) * @see enum DBType#DB_ISTRING * @see #db_default_hash() */ -static uint64 db_istring_hash(DBKey key, unsigned short maxlen) +static uint64 db_istring_hash(union DBKey key, unsigned short maxlen) { const char *k = key.str; unsigned int hash = 0; @@ -1105,7 +1105,7 @@ static uint64 db_istring_hash(DBKey key, unsigned short maxlen) * @see #DBHasher * @see #db_default_hash() */ -static uint64 db_int64_hash(DBKey key, unsigned short maxlen) +static uint64 db_int64_hash(union DBKey key, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_int64_hash); @@ -1123,7 +1123,7 @@ static uint64 db_int64_hash(DBKey key, unsigned short maxlen) * @see #DBHasher * @see #db_default_hash() */ -static uint64 db_uint64_hash(DBKey key, unsigned short maxlen) +static uint64 db_uint64_hash(union DBKey key, unsigned short maxlen) { (void)maxlen;//not used DB_COUNTSTAT(db_uint64_hash); @@ -1139,7 +1139,7 @@ static uint64 db_uint64_hash(DBKey key, unsigned short maxlen) * @see #DBReleaser * @see #db_default_releaser() */ -static void db_release_nothing(DBKey key, DBData data, enum DBReleaseOption which) +static void db_release_nothing(union DBKey key, struct DBData data, enum DBReleaseOption which) { (void)key;(void)data;(void)which;//not used DB_COUNTSTAT(db_release_nothing); @@ -1154,7 +1154,7 @@ static void db_release_nothing(DBKey key, DBData data, enum DBReleaseOption whic * @see #DBReleaser * @see #db_default_release() */ -static void db_release_key(DBKey key, DBData data, enum DBReleaseOption which) +static void db_release_key(union DBKey key, struct DBData data, enum DBReleaseOption which) { (void)data;//not used DB_COUNTSTAT(db_release_key); @@ -1167,12 +1167,12 @@ static void db_release_key(DBKey key, DBData data, enum DBReleaseOption which) * @param data Data of the database entry * @param which What is being requested to be released * @protected - * @see #DBData + * @see struct DBData * @see enum DBReleaseOption * @see #DBReleaser * @see #db_default_release() */ -static void db_release_data(DBKey key, DBData data, enum DBReleaseOption which) +static void db_release_data(union DBKey key, struct DBData data, enum DBReleaseOption which) { (void)key;//not used DB_COUNTSTAT(db_release_data); @@ -1188,13 +1188,13 @@ static void db_release_data(DBKey key, DBData data, enum DBReleaseOption which) * @param data Data of the database entry * @param which What is being requested to be released * @protected - * @see #DBKey - * @see #DBData + * @see union DBKey + * @see struct DBData * @see enum DBReleaseOption * @see #DBReleaser * @see #db_default_release() */ -static void db_release_both(DBKey key, DBData data, enum DBReleaseOption which) +static void db_release_both(union DBKey key, struct DBData data, enum DBReleaseOption which) { DB_COUNTSTAT(db_release_both); if (which&DB_RELEASE_KEY) aFree((char*)key.str); // needs to be a pointer @@ -1247,7 +1247,7 @@ static void db_release_both(DBKey key, DBData data, enum DBReleaseOption which) * @protected * @see DBIterator#first */ -DBData* dbit_obj_first(DBIterator* self, DBKey* out_key) +struct DBData *dbit_obj_first(DBIterator* self, union DBKey *out_key) { DBIterator_impl* it = (DBIterator_impl*)self; @@ -1269,7 +1269,7 @@ DBData* dbit_obj_first(DBIterator* self, DBKey* out_key) * @protected * @see DBIterator#last */ -DBData* dbit_obj_last(DBIterator* self, DBKey* out_key) +struct DBData *dbit_obj_last(DBIterator* self, union DBKey *out_key) { DBIterator_impl* it = (DBIterator_impl*)self; @@ -1291,7 +1291,7 @@ DBData* dbit_obj_last(DBIterator* self, DBKey* out_key) * @protected * @see DBIterator#next */ -DBData* dbit_obj_next(DBIterator* self, DBKey* out_key) +struct DBData *dbit_obj_next(DBIterator* self, union DBKey *out_key) { DBIterator_impl* it = (DBIterator_impl*)self; DBNode *node; @@ -1348,7 +1348,7 @@ DBData* dbit_obj_next(DBIterator* self, DBKey* out_key) {// found next entry it->node = node; if( out_key ) - memcpy(out_key, &node->key, sizeof(DBKey)); + memcpy(out_key, &node->key, sizeof(union DBKey)); return &node->data; } } @@ -1367,7 +1367,7 @@ DBData* dbit_obj_next(DBIterator* self, DBKey* out_key) * @protected * @see DBIterator#prev */ -DBData* dbit_obj_prev(DBIterator* self, DBKey* out_key) +struct DBData *dbit_obj_prev(DBIterator* self, union DBKey *out_key) { DBIterator_impl* it = (DBIterator_impl*)self; DBNode *node; @@ -1424,7 +1424,7 @@ DBData* dbit_obj_prev(DBIterator* self, DBKey* out_key) {// found previous entry it->node = node; if( out_key ) - memcpy(out_key, &node->key, sizeof(DBKey)); + memcpy(out_key, &node->key, sizeof(union DBKey)); return &node->data; } } @@ -1462,7 +1462,7 @@ bool dbit_obj_exists(DBIterator* self) * @see DBMap#remove * @see DBIterator#remove */ -int dbit_obj_remove(DBIterator* self, DBData *out_data) +int dbit_obj_remove(DBIterator* self, struct DBData *out_data) { DBIterator_impl* it = (DBIterator_impl*)self; DBNode *node; @@ -1477,7 +1477,7 @@ int dbit_obj_remove(DBIterator* self, DBData *out_data) db->cache = NULL; db->release(node->key, node->data, DB_RELEASE_DATA); if( out_data ) - memcpy(out_data, &node->data, sizeof(DBData)); + memcpy(out_data, &node->data, sizeof(struct DBData)); retval = 1; db_free_add(db, node, &db->ht[it->ht_index]); } @@ -1541,7 +1541,7 @@ static DBIterator* db_obj_iterator(DBMap* self) * @protected * @see DBMap#exists */ -static bool db_obj_exists(DBMap* self, DBKey key) +static bool db_obj_exists(DBMap* self, union DBKey key) { DBMap_impl* db = (DBMap_impl*)self; DBNode *node; @@ -1591,11 +1591,11 @@ static bool db_obj_exists(DBMap* self, DBKey key) * @protected * @see DBMap#get */ -static DBData* db_obj_get(DBMap* self, DBKey key) +static struct DBData *db_obj_get(DBMap* self, union DBKey key) { DBMap_impl* db = (DBMap_impl*)self; DBNode *node; - DBData *data = NULL; + struct DBData *data = NULL; DB_COUNTSTAT(db_get); if (db == NULL) return NULL; // nullpo candidate @@ -1650,7 +1650,7 @@ static DBData* db_obj_get(DBMap* self, DBKey key) * @protected * @see DBMap#vgetall */ -static unsigned int db_obj_vgetall(DBMap* self, DBData **buf, unsigned int max, DBMatcher match, va_list args) +static unsigned int db_obj_vgetall(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, va_list args) { DBMap_impl* db = (DBMap_impl*)self; unsigned int i; @@ -1722,7 +1722,7 @@ static unsigned int db_obj_vgetall(DBMap* self, DBData **buf, unsigned int max, * @see DBMap#vgetall * @see DBMap#getall */ -static unsigned int db_obj_getall(DBMap* self, DBData **buf, unsigned int max, DBMatcher match, ...) +static unsigned int db_obj_getall(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, ...) { va_list args; unsigned int ret; @@ -1748,14 +1748,14 @@ static unsigned int db_obj_getall(DBMap* self, DBData **buf, unsigned int max, D * @protected * @see DBMap#vensure */ -static DBData* db_obj_vensure(DBMap* self, DBKey key, DBCreateData create, va_list args) +static struct DBData *db_obj_vensure(DBMap* self, union DBKey key, DBCreateData create, va_list args) { DBMap_impl* db = (DBMap_impl*)self; DBNode *node; DBNode *parent = NULL; unsigned int hash; int c = 0; - DBData *data = NULL; + struct DBData *data = NULL; DB_COUNTSTAT(db_vensure); if (db == NULL) return NULL; // nullpo candidate @@ -1848,10 +1848,10 @@ static DBData* db_obj_vensure(DBMap* self, DBKey key, DBCreateData create, va_li * @see DBMap#vensure * @see DBMap#ensure */ -static DBData* db_obj_ensure(DBMap* self, DBKey key, DBCreateData create, ...) +static struct DBData *db_obj_ensure(DBMap* self, union DBKey key, DBCreateData create, ...) { va_list args; - DBData *ret = NULL; + struct DBData *ret = NULL; DB_COUNTSTAT(db_ensure); if (self == NULL) return NULL; // nullpo candidate @@ -1877,7 +1877,7 @@ static DBData* db_obj_ensure(DBMap* self, DBKey key, DBCreateData create, ...) * FIXME: If this method fails shouldn't it return another value? * Other functions rely on this to know if they were able to put something [Panikon] */ -static int db_obj_put(DBMap* self, DBKey key, DBData data, DBData *out_data) +static int db_obj_put(DBMap* self, union DBKey key, struct DBData data, struct DBData *out_data) { DBMap_impl* db = (DBMap_impl*)self; DBNode *node; @@ -1982,7 +1982,7 @@ static int db_obj_put(DBMap* self, DBKey key, DBData data, DBData *out_data) * @see #db_free_add(DBMap_impl*,DBNode*,DBNode **) * @see DBMap#remove */ -static int db_obj_remove(DBMap* self, DBKey key, DBData *out_data) +static int db_obj_remove(DBMap* self, union DBKey key, struct DBData *out_data) { DBMap_impl* db = (DBMap_impl*)self; DBNode *node; @@ -2372,17 +2372,17 @@ static enum DBOptions db_obj_options(DBMap* self) * db_default_release - Get the default releaser for a type of database with the specified options. * db_custom_release - Get a releaser that behaves a certain way. * db_alloc - Allocate a new database. - * db_i2key - Manual cast from 'int' to 'DBKey'. - * db_ui2key - Manual cast from 'unsigned int' to 'DBKey'. - * db_str2key - Manual cast from 'unsigned char *' to 'DBKey'. - * db_i642key - Manual cast from 'int64' to 'DBKey'. - * db_ui642key - Manual cast from 'uin64' to 'DBKey'. - * db_i2data - Manual cast from 'int' to 'DBData'. - * db_ui2data - Manual cast from 'unsigned int' to 'DBData'. - * db_ptr2data - Manual cast from 'void*' to 'DBData'. - * db_data2i - Gets 'int' value from 'DBData'. - * db_data2ui - Gets 'unsigned int' value from 'DBData'. - * db_data2ptr - Gets 'void*' value from 'DBData'. + * db_i2key - Manual cast from `int` to `union DBKey`. + * db_ui2key - Manual cast from `unsigned int` to `union DBKey`. + * db_str2key - Manual cast from `unsigned char *` to `union DBKey`. + * db_i642key - Manual cast from `int64` to `union DBKey`. + * db_ui642key - Manual cast from `uin64` to `union DBKey`. + * db_i2data - Manual cast from `int` to `struct DBData`. + * db_ui2data - Manual cast from `unsigned int` to `struct DBData`. + * db_ptr2data - Manual cast from `void*` to `struct DBData`. + * db_data2i - Gets `int` value from `struct DBData`. + * db_data2ui - Gets `unsigned int` value from `struct DBData`. + * db_data2ptr - Gets `void*` value from `struct DBData`. * db_init - Initializes the database system. * db_final - Finalizes the database system. \*****************************************************************************/ @@ -2421,12 +2421,12 @@ enum DBOptions db_fix_options(enum DBType type, enum DBOptions options) * @param type Type of database * @return Comparator for the type of database or NULL if unknown database * @public - * @see #db_int_cmp(DBKey,DBKey,unsigned short) - * @see #db_uint_cmp(DBKey,DBKey,unsigned short) - * @see #db_string_cmp(DBKey,DBKey,unsigned short) - * @see #db_istring_cmp(DBKey,DBKey,unsigned short) - * @see #db_int64_cmp(DBKey,DBKey,unsigned short) - * @see #db_uint64_cmp(DBKey,DBKey,unsigned short) + * @see #db_int_cmp() + * @see #db_uint_cmp() + * @see #db_string_cmp() + * @see #db_istring_cmp() + * @see #db_int64_cmp() + * @see #db_uint64_cmp() */ DBComparator db_default_cmp(enum DBType type) { @@ -2449,12 +2449,12 @@ DBComparator db_default_cmp(enum DBType type) * @param type Type of database * @return Hasher of the type of database or NULL if unknown database * @public - * @see #db_int_hash(DBKey,unsigned short) - * @see #db_uint_hash(DBKey,unsigned short) - * @see #db_string_hash(DBKey,unsigned short) - * @see #db_istring_hash(DBKey,unsigned short) - * @see #db_int64_hash(DBKey,unsigned short) - * @see #db_uint64_hash(DBKey,unsigned short) + * @see #db_int_hash() + * @see #db_uint_hash() + * @see #db_string_hash() + * @see #db_istring_hash() + * @see #db_int64_hash() + * @see #db_uint64_hash() */ DBHasher db_default_hash(enum DBType type) { @@ -2619,9 +2619,9 @@ DBMap* db_alloc(const char *file, const char *func, int line, enum DBType type, * @return The key as a DBKey union * @public */ -DBKey db_i2key(int key) +union DBKey db_i2key(int key) { - DBKey ret; + union DBKey ret; DB_COUNTSTAT(db_i2key); ret.i = key; @@ -2634,9 +2634,9 @@ DBKey db_i2key(int key) * @return The key as a DBKey union * @public */ -DBKey db_ui2key(unsigned int key) +union DBKey db_ui2key(unsigned int key) { - DBKey ret; + union DBKey ret; DB_COUNTSTAT(db_ui2key); ret.ui = key; @@ -2649,9 +2649,9 @@ DBKey db_ui2key(unsigned int key) * @return The key as a DBKey union * @public */ -DBKey db_str2key(const char *key) +union DBKey db_str2key(const char *key) { - DBKey ret; + union DBKey ret; DB_COUNTSTAT(db_str2key); ret.str = key; @@ -2664,9 +2664,9 @@ DBKey db_str2key(const char *key) * @return The key as a DBKey union * @public */ -DBKey db_i642key(int64 key) +union DBKey db_i642key(int64 key) { - DBKey ret; + union DBKey ret; DB_COUNTSTAT(db_i642key); ret.i64 = key; @@ -2679,9 +2679,9 @@ DBKey db_i642key(int64 key) * @return The key as a DBKey union * @public */ -DBKey db_ui642key(uint64 key) +union DBKey db_ui642key(uint64 key) { - DBKey ret; + union DBKey ret; DB_COUNTSTAT(db_ui642key); ret.ui64 = key; @@ -2694,9 +2694,9 @@ DBKey db_ui642key(uint64 key) * @return The data as a DBData struct * @public */ -DBData db_i2data(int data) +struct DBData db_i2data(int data) { - DBData ret; + struct DBData ret; DB_COUNTSTAT(db_i2data); ret.type = DB_DATA_INT; @@ -2710,9 +2710,9 @@ DBData db_i2data(int data) * @return The data as a DBData struct * @public */ -DBData db_ui2data(unsigned int data) +struct DBData db_ui2data(unsigned int data) { - DBData ret; + struct DBData ret; DB_COUNTSTAT(db_ui2data); ret.type = DB_DATA_UINT; @@ -2726,9 +2726,9 @@ DBData db_ui2data(unsigned int data) * @return The data as a DBData struct * @public */ -DBData db_ptr2data(void *data) +struct DBData db_ptr2data(void *data) { - DBData ret; + struct DBData ret; DB_COUNTSTAT(db_ptr2data); ret.type = DB_DATA_PTR; @@ -2743,7 +2743,7 @@ DBData db_ptr2data(void *data) * @return Integer value of the data. * @public */ -int db_data2i(DBData *data) +int db_data2i(struct DBData *data) { DB_COUNTSTAT(db_data2i); if (data && DB_DATA_INT == data->type) @@ -2758,7 +2758,7 @@ int db_data2i(DBData *data) * @return Unsigned int value of the data. * @public */ -unsigned int db_data2ui(DBData *data) +unsigned int db_data2ui(struct DBData *data) { DB_COUNTSTAT(db_data2ui); if (data && DB_DATA_UINT == data->type) @@ -2773,7 +2773,7 @@ unsigned int db_data2ui(DBData *data) * @return Void* value of the data. * @public */ -void* db_data2ptr(DBData *data) +void *db_data2ptr(struct DBData *data) { DB_COUNTSTAT(db_data2ptr); if (data && DB_DATA_PTR == data->type) diff --git a/src/common/db.h b/src/common/db.h index 02f917923..1c2da3917 100644 --- a/src/common/db.h +++ b/src/common/db.h @@ -43,8 +43,7 @@ * 2007/11/09 - Added an iterator to the database. * * 2.1 (Athena build #???#) - Portability fix * * - Fixed the portability of casting to union and added the functions * - * {@link DBMap#ensure(DBMap,DBKey,DBCreateData,...)} and * - * {@link DBMap#clear(DBMap,DBApply,...)}. * + * DBMap#ensure() and {@link DBMap#clear(DBMap,DBApply,...)}. * * 2.0 (Athena build 4859) - Transition version * * - Almost everything recoded with a strategy similar to objects, * * database structure is maintained. * @@ -69,9 +68,9 @@ * enum DBReleaseOption - Enumeration of release options. * * enum DBType - Enumeration of database types. * * enum DBOptions - Bitfield enumeration of database options. * - * DBKey - Union of used key types. * + * union DBKey - Union of used key types. * * enum DBDataType - Enumeration of data types. * - * DBData - Struct for used data types. * + * struct DBData - Struct for used data types. * * DBApply - Format of functions applied to the databases. * * DBMatcher - Format of matchers used in DBMap::getall. * * DBComparator - Format of the comparators used by the databases. * @@ -108,7 +107,7 @@ enum DBReleaseOption { * @param DB_UINT64 Uses uint64's for keys * @public * @see enum DBOptions - * @see #DBKey + * @see union DBKey * @see #db_fix_options() * @see #db_default_cmp() * @see #db_default_hash() @@ -167,13 +166,13 @@ enum DBOptions { * @see DBMap#put * @see DBMap#remove */ -typedef union DBKey { +union DBKey { int i; unsigned int ui; const char *str; int64 i64; uint64 ui64; -} DBKey; +}; /** * Supported types of database data. @@ -181,7 +180,7 @@ typedef union DBKey { * @param DB_DATA_UINT Uses unsigned ints for data. * @param DB_DATA_PTR Uses void pointers for data. * @public - * @see #DBData + * @see struct DBData */ enum DBDataType { DB_DATA_INT, @@ -198,14 +197,14 @@ enum DBDataType { * @param u.ptr Data of void* type * @public */ -typedef struct DBData { +struct DBData { enum DBDataType type; union { int i; unsigned int ui; void *ptr; } u; -} DBData; +}; /** * Format of functions that create the data for the key when the entry doesn't @@ -217,7 +216,7 @@ typedef struct DBData { * @see DBMap#vensure * @see DBMap#ensure */ -typedef DBData (*DBCreateData)(DBKey key, va_list args); +typedef struct DBData (*DBCreateData)(union DBKey key, va_list args); /** * Format of functions to be applied to an unspecified quantity of entries of @@ -234,7 +233,7 @@ typedef DBData (*DBCreateData)(DBKey key, va_list args); * @see DBMap#vdestroy * @see DBMap#destroy */ -typedef int (*DBApply)(DBKey key, DBData *data, va_list args); +typedef int (*DBApply)(union DBKey key, struct DBData *data, va_list args); /** * Format of functions that match database entries. @@ -247,7 +246,7 @@ typedef int (*DBApply)(DBKey key, DBData *data, va_list args); * @public * @see DBMap#getall */ -typedef int (*DBMatcher)(DBKey key, DBData data, va_list args); +typedef int (*DBMatcher)(union DBKey key, struct DBData data, va_list args); /** * Format of the comparators used internally by the database system. @@ -261,7 +260,7 @@ typedef int (*DBMatcher)(DBKey key, DBData data, va_list args); * @public * @see #db_default_cmp() */ -typedef int (*DBComparator)(DBKey key1, DBKey key2, unsigned short maxlen); +typedef int (*DBComparator)(union DBKey key1, union DBKey key2, unsigned short maxlen); /** * Format of the hashers used internally by the database system. @@ -273,7 +272,7 @@ typedef int (*DBComparator)(DBKey key1, DBKey key2, unsigned short maxlen); * @public * @see #db_default_hash() */ -typedef uint64 (*DBHasher)(DBKey key, unsigned short maxlen); +typedef uint64 (*DBHasher)(union DBKey key, unsigned short maxlen); /** * Format of the releaser used by the database system. @@ -287,7 +286,7 @@ typedef uint64 (*DBHasher)(DBKey key, unsigned short maxlen); * @see #db_default_releaser() * @see #db_custom_release() */ -typedef void (*DBReleaser)(DBKey key, DBData data, enum DBReleaseOption which); +typedef void (*DBReleaser)(union DBKey key, struct DBData data, enum DBReleaseOption which); typedef struct DBIterator DBIterator; typedef struct DBMap DBMap; @@ -313,7 +312,7 @@ struct DBIterator * @return Data of the entry * @protected */ - DBData* (*first)(DBIterator* self, DBKey* out_key); + struct DBData *(*first)(DBIterator* self, union DBKey *out_key); /** * Fetches the last entry in the database. @@ -324,7 +323,7 @@ struct DBIterator * @return Data of the entry * @protected */ - DBData* (*last)(DBIterator* self, DBKey* out_key); + struct DBData *(*last)(DBIterator* self, union DBKey *out_key); /** * Fetches the next entry in the database. @@ -335,7 +334,7 @@ struct DBIterator * @return Data of the entry * @protected */ - DBData* (*next)(DBIterator* self, DBKey* out_key); + struct DBData *(*next)(DBIterator* self, union DBKey *out_key); /** * Fetches the previous entry in the database. @@ -346,7 +345,7 @@ struct DBIterator * @return Data of the entry * @protected */ - DBData* (*prev)(DBIterator* self, DBKey* out_key); + struct DBData *(*prev)(DBIterator* self, union DBKey *out_key); /** * Returns true if the fetched entry exists. @@ -369,7 +368,7 @@ struct DBIterator * @protected * @see DBMap#remove */ - int (*remove)(DBIterator* self, DBData *out_data); + int (*remove)(DBIterator* self, struct DBData *out_data); /** * Destroys this iterator and unlocks the database. @@ -406,7 +405,7 @@ struct DBMap { * @return true is the entry exists * @protected */ - bool (*exists)(DBMap* self, DBKey key); + bool (*exists)(DBMap* self, union DBKey key); /** * Get the data of the entry identified by the key. @@ -415,7 +414,7 @@ struct DBMap { * @return Data of the entry or NULL if not found * @protected */ - DBData* (*get)(DBMap* self, DBKey key); + struct DBData *(*get)(DBMap* self, union DBKey key); /** * Just calls {@link DBMap#vgetall}. @@ -434,7 +433,7 @@ struct DBMap { * @protected * @see DBMap#vgetall(DBMap*,void **,unsigned int,DBMatcher,va_list) */ - unsigned int (*getall)(DBMap* self, DBData** buf, unsigned int max, DBMatcher match, ...); + unsigned int (*getall)(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, ...); /** * Get the data of the entries matched by match. @@ -452,22 +451,23 @@ struct DBMap { * @protected * @see DBMap#getall(DBMap*,void **,unsigned int,DBMatcher,...) */ - unsigned int (*vgetall)(DBMap* self, DBData** buf, unsigned int max, DBMatcher match, va_list args); + unsigned int (*vgetall)(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, va_list args); /** - * Just calls {@link DBMap#vensure}. - * Get the data of the entry identified by the key. - * If the entry does not exist, an entry is added with the data returned by - * create. + * Just calls DBMap#vensure. + * + * Get the data of the entry identified by the key. If the entry does + * not exist, an entry is added with the data returned by `create`. + * * @param self Database * @param key Key that identifies the entry * @param create Function used to create the data if the entry doesn't exist * @param ... Extra arguments for create * @return Data of the entry * @protected - * @see DBMap#vensure(DBMap*,DBKey,DBCreateData,va_list) + * @see DBMap#vensure() */ - DBData* (*ensure)(DBMap* self, DBKey key, DBCreateData create, ...); + struct DBData *(*ensure)(DBMap* self, union DBKey key, DBCreateData create, ...); /** * Get the data of the entry identified by the key. @@ -479,9 +479,9 @@ struct DBMap { * @param args Extra arguments for create * @return Data of the entry * @protected - * @see DBMap#ensure(DBMap*,DBKey,DBCreateData,...) + * @see DBMap#ensure() */ - DBData* (*vensure)(DBMap* self, DBKey key, DBCreateData create, va_list args); + struct DBData *(*vensure)(DBMap* self, union DBKey key, DBCreateData create, va_list args); /** * Put the data identified by the key in the database. @@ -494,7 +494,7 @@ struct DBMap { * @return 1 if if the entry already exists, 0 otherwise * @protected */ - int (*put)(DBMap* self, DBKey key, DBData data, DBData *out_data); + int (*put)(DBMap* self, union DBKey key, struct DBData data, struct DBData *out_data); /** * Remove an entry from the database. @@ -506,7 +506,7 @@ struct DBMap { * @return 1 if if the entry already exists, 0 otherwise * @protected */ - int (*remove)(DBMap* self, DBKey key, DBData *out_data); + int (*remove)(DBMap* self, union DBKey key, struct DBData *out_data); /** * Just calls {@link DBMap#vforeach}. @@ -714,7 +714,7 @@ struct DBMap { #define dbi_exists(dbi) ( (dbi)->exists(dbi) ) #define dbi_destroy(dbi) ( (dbi)->destroy(dbi) ) -/*****************************************************************************\ +/***************************************************************************** * (2) Section with public functions. * * db_fix_options - Fix the options for a type of database. * * db_default_cmp - Get the default comparator for a type of database. * @@ -723,20 +723,20 @@ struct DBMap { * with the fixed options. * * db_custom_release - Get the releaser that behaves as specified. * * db_alloc - Allocate a new database. * - * db_i2key - Manual cast from 'int' to 'DBKey'. * - * db_ui2key - Manual cast from 'unsigned int' to 'DBKey'. * - * db_str2key - Manual cast from 'unsigned char *' to 'DBKey'. * - * db_i642key - Manual cast from 'int64' to 'DBKey'. * - * db_ui642key - Manual cast from 'uint64' to 'DBKey'. * - * db_i2data - Manual cast from 'int' to 'DBData'. * - * db_ui2data - Manual cast from 'unsigned int' to 'DBData'. * - * db_ptr2data - Manual cast from 'void*' to 'DBData'. * - * db_data2i - Gets 'int' value from 'DBData'. * - * db_data2ui - Gets 'unsigned int' value from 'DBData'. * - * db_data2ptr - Gets 'void*' value from 'DBData'. * + * db_i2key - Manual cast from `int` to `union DBKey`. * + * db_ui2key - Manual cast from `unsigned int` to `union DBKey`. * + * db_str2key - Manual cast from `unsigned char *` to `union DBKey`.* + * db_i642key - Manual cast from `int64` to `union DBKey`. * + * db_ui642key - Manual cast from `uint64` to `union DBKey`. * + * db_i2data - Manual cast from `int` to `struct DBData`. * + * db_ui2data - Manual cast from `unsigned int` to `struct DBData`. * + * db_ptr2data - Manual cast from `void*` to `struct DBData`. * + * db_data2i - Gets `int` value from `struct DBData`. * + * db_data2ui - Gets `unsigned int` value from `struct DBData`. * + * db_data2ptr - Gets `void*` value from `struct DBData`. * * db_init - Initializes the database system. * * db_final - Finalizes the database system. * -\*****************************************************************************/ + *****************************************************************************/ struct db_interface { /** @@ -835,7 +835,7 @@ DBMap* (*alloc) (const char *file, const char *func, int line, enum DBType type, * @return The key as a DBKey union * @public */ -DBKey (*i2key) (int key); +union DBKey (*i2key) (int key); /** * Manual cast from 'unsigned int' to the union DBKey. @@ -843,7 +843,7 @@ DBKey (*i2key) (int key); * @return The key as a DBKey union * @public */ -DBKey (*ui2key) (unsigned int key); +union DBKey (*ui2key) (unsigned int key); /** * Manual cast from 'unsigned char *' to the union DBKey. @@ -851,7 +851,7 @@ DBKey (*ui2key) (unsigned int key); * @return The key as a DBKey union * @public */ -DBKey (*str2key) (const char *key); +union DBKey (*str2key) (const char *key); /** * Manual cast from 'int64' to the union DBKey. @@ -859,7 +859,7 @@ DBKey (*str2key) (const char *key); * @return The key as a DBKey union * @public */ -DBKey (*i642key) (int64 key); +union DBKey (*i642key) (int64 key); /** * Manual cast from 'uint64' to the union DBKey. @@ -867,7 +867,7 @@ DBKey (*i642key) (int64 key); * @return The key as a DBKey union * @public */ -DBKey (*ui642key) (uint64 key); +union DBKey (*ui642key) (uint64 key); /** * Manual cast from 'int' to the struct DBData. @@ -875,7 +875,7 @@ DBKey (*ui642key) (uint64 key); * @return The data as a DBData struct * @public */ -DBData (*i2data) (int data); +struct DBData (*i2data) (int data); /** * Manual cast from 'unsigned int' to the struct DBData. @@ -883,7 +883,7 @@ DBData (*i2data) (int data); * @return The data as a DBData struct * @public */ -DBData (*ui2data) (unsigned int data); +struct DBData (*ui2data) (unsigned int data); /** * Manual cast from 'void *' to the struct DBData. @@ -891,7 +891,7 @@ DBData (*ui2data) (unsigned int data); * @return The data as a DBData struct * @public */ -DBData (*ptr2data) (void *data); +struct DBData (*ptr2data) (void *data); /** * Gets int type data from struct DBData. @@ -900,7 +900,7 @@ DBData (*ptr2data) (void *data); * @return Integer value of the data. * @public */ -int (*data2i) (DBData *data); +int (*data2i) (struct DBData *data); /** * Gets unsigned int type data from struct DBData. @@ -909,7 +909,7 @@ int (*data2i) (DBData *data); * @return Unsigned int value of the data. * @public */ -unsigned int (*data2ui) (DBData *data); +unsigned int (*data2ui) (struct DBData *data); /** * Gets void* type data from struct DBData. @@ -918,7 +918,7 @@ unsigned int (*data2ui) (DBData *data); * @return Void* value of the data. * @public */ -void* (*data2ptr) (DBData *data); +void* (*data2ptr) (struct DBData *data); /** * Initialize the database system. diff --git a/src/login/login.c b/src/login/login.c index bd826b300..f7babde86 100644 --- a/src/login/login.c +++ b/src/login/login.c @@ -63,7 +63,7 @@ AccountDB* accounts = NULL; /** * @see DBCreateData */ -static DBData login_create_online_user(DBKey key, va_list args) +static struct DBData login_create_online_user(union DBKey key, va_list args) { struct online_login_data* p; CREATE(p, struct online_login_data, 1); @@ -112,7 +112,7 @@ static int login_waiting_disconnect_timer(int tid, int64 tick, int id, intptr_t /** * @see DBApply */ -static int login_online_db_setoffline(DBKey key, DBData *data, va_list ap) +static int login_online_db_setoffline(union DBKey key, struct DBData *data, va_list ap) { struct online_login_data* p = DB->data2ptr(data); int server_id = va_arg(ap, int); @@ -134,7 +134,7 @@ static int login_online_db_setoffline(DBKey key, DBData *data, va_list ap) /** * @see DBApply */ -static int login_online_data_cleanup_sub(DBKey key, DBData *data, va_list ap) +static int login_online_data_cleanup_sub(union DBKey key, struct DBData *data, va_list ap) { struct online_login_data *character= DB->data2ptr(data); nullpo_ret(character); diff --git a/src/login/login.h b/src/login/login.h index f79f75cb3..81d91eab3 100644 --- a/src/login/login.h +++ b/src/login/login.h @@ -158,11 +158,11 @@ struct login_interface { int (*mmo_auth) (struct login_session_data* sd, bool isServer); int (*mmo_auth_new) (const char* userid, const char* pass, const char sex, const char* last_ip); int (*waiting_disconnect_timer) (int tid, int64 tick, int id, intptr_t data); - DBData (*create_online_user) (DBKey key, va_list args); + struct DBData (*create_online_user) (union DBKey key, va_list args); struct online_login_data* (*add_online_user) (int char_server, int account_id); void (*remove_online_user) (int account_id); - int (*online_db_setoffline) (DBKey key, DBData *data, va_list ap); - int (*online_data_cleanup_sub) (DBKey key, DBData *data, va_list ap); + int (*online_db_setoffline) (union DBKey key, struct DBData *data, va_list ap); + int (*online_data_cleanup_sub) (union DBKey key, struct DBData *data, va_list ap); int (*online_data_cleanup) (int tid, int64 tick, int id, intptr_t data); int (*sync_ip_addresses) (int tid, int64 tick, int id, intptr_t data); bool (*check_encrypted) (const char* str1, const char* str2, const char* passwd); diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 78d935ddc..fbd8d6517 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -5282,8 +5282,8 @@ ACMD(skillid) { int i, found = 0; size_t skillen; DBIterator* iter; - DBKey key; - DBData *data; + union DBKey key; + struct DBData *data; char partials[MAX_SKILLID_PARTIAL_RESULTS][MAX_SKILLID_PARTIAL_RESULTS_LEN]; if (!*message) { @@ -9057,8 +9057,8 @@ ACMD(channel) { } else if (strcmpi(subcmd,"banlist") == 0) { // sub1 = channel name; sub2 = unused; sub3 = unused DBIterator *iter = NULL; - DBKey key; - DBData *data; + union DBKey key; + struct DBData *data; bool isA = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)?true:false; if (sub1[0] != '#') { clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#' @@ -10222,7 +10222,8 @@ bool atcommand_hp_add(char *name, AtCommandFunc func) { /** * @see DBApply */ -int atcommand_db_clear_sub(DBKey key, DBData *data, va_list args) { +int atcommand_db_clear_sub(union DBKey key, struct DBData *data, va_list args) +{ AtCommandInfo *cmd = DB->data2ptr(data); aFree(cmd->at_groups); aFree(cmd->char_groups); diff --git a/src/map/atcommand.h b/src/map/atcommand.h index a4f9afce7..40db16bbf 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -135,7 +135,7 @@ struct atcommand_interface { /* */ void (*commands_sub) (struct map_session_data* sd, const int fd, AtCommandType type); void (*cmd_db_clear) (void); - int (*cmd_db_clear_sub) (DBKey key, DBData *data, va_list args); + int (*cmd_db_clear_sub) (union DBKey key, struct DBData *data, va_list args); void (*doload) (void); void (*base_commands) (void); bool (*add) (char *name, AtCommandFunc func, bool replace); diff --git a/src/map/battleground.c b/src/map/battleground.c index 311690ec3..629122c87 100644 --- a/src/map/battleground.c +++ b/src/map/battleground.c @@ -279,7 +279,8 @@ bool bg_send_message(struct map_session_data *sd, const char *mes, int len) { /** * @see DBApply */ -int bg_send_xy_timer_sub(DBKey key, DBData *data, va_list ap) { +int bg_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap) +{ struct battleground_data *bgd = DB->data2ptr(data); struct map_session_data *sd; int i; @@ -925,7 +926,8 @@ void do_init_battleground(bool minimal) { /** * @see DBApply */ -int bg_team_db_final(DBKey key, DBData *data, va_list ap) { +int bg_team_db_final(union DBKey key, struct DBData *data, va_list ap) +{ struct battleground_data* bgd = DB->data2ptr(data); HPM->data_store_destroy(&bgd->hdata); diff --git a/src/map/battleground.h b/src/map/battleground.h index bb77db125..05458a9b1 100644 --- a/src/map/battleground.h +++ b/src/map/battleground.h @@ -131,10 +131,10 @@ struct battleground_interface { int (*create) (unsigned short map_index, short rx, short ry, const char *ev, const char *dev); int (*team_get_id) (struct block_list *bl); bool (*send_message) (struct map_session_data *sd, const char *mes, int len); - int (*send_xy_timer_sub) (DBKey key, DBData *data, va_list ap); + int (*send_xy_timer_sub) (union DBKey key, struct DBData *data, va_list ap); int (*send_xy_timer) (int tid, int64 tick, int id, intptr_t data); int (*afk_timer) (int tid, int64 tick, int id, intptr_t data); - int (*team_db_final) (DBKey key, DBData *data, va_list ap); + int (*team_db_final) (union DBKey key, struct DBData *data, va_list ap); /* */ enum bg_queue_types (*str2teamtype) (const char *str); /* */ diff --git a/src/map/chrif.c b/src/map/chrif.c index 70339c378..52af1137e 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -471,7 +471,8 @@ void chrif_connectack(int fd) { /** * @see DBApply */ -int chrif_reconnect(DBKey key, DBData *data, va_list ap) { +int chrif_reconnect(union DBKey key, struct DBData *data, va_list ap) +{ struct auth_node *node = DB->data2ptr(data); nullpo_ret(node); @@ -681,7 +682,8 @@ void chrif_authfail(int fd) {/* HELLO WORLD. ip in RFIFOL 15 is not being used ( * This can still happen (client times out while waiting for char to confirm auth data) * @see DBApply */ -int auth_db_cleanup_sub(DBKey key, DBData *data, va_list ap) { +int auth_db_cleanup_sub(union DBKey key, struct DBData *data, va_list ap) +{ struct auth_node *node = DB->data2ptr(data); nullpo_retr(1, node); @@ -1617,7 +1619,8 @@ void chrif_del_scdata_single(int account_id, int char_id, short type) /** * @see DBApply */ -int auth_db_final(DBKey key, DBData *data, va_list ap) { +int auth_db_final(union DBKey key, struct DBData *data, va_list ap) +{ struct auth_node *node = DB->data2ptr(data); nullpo_ret(node); diff --git a/src/map/chrif.h b/src/map/chrif.h index 6a5ec36b6..dc946b1c1 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -133,10 +133,10 @@ struct chrif_interface { int (*check_connect_char_server) (int tid, int64 tick, int id, intptr_t data); bool (*auth_logout) (struct map_session_data *sd, enum sd_state state); void (*save_ack) (int fd); - int (*reconnect) (DBKey key, DBData *data, va_list ap); - int (*auth_db_cleanup_sub) (DBKey key, DBData *data, va_list ap); + int (*reconnect) (union DBKey key, struct DBData *data, va_list ap); + int (*auth_db_cleanup_sub) (union DBKey key, struct DBData *data, va_list ap); bool (*char_ask_name_answer) (int acc, const char* player_name, uint16 type, uint16 answer); - int (*auth_db_final) (DBKey key, DBData *data, va_list ap); + int (*auth_db_final) (union DBKey key, struct DBData *data, va_list ap); int (*send_usercount_tochar) (int tid, int64 tick, int id, intptr_t data); int (*auth_db_cleanup) (int tid, int64 tick, int id, intptr_t data); diff --git a/src/map/guild.c b/src/map/guild.c index 13acfc0db..0ceaff518 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -282,7 +282,8 @@ void guild_makemember(struct guild_member *m,struct map_session_data *sd) * Server cache to be flushed to inter the Guild EXP * @see DBApply */ -int guild_payexp_timer_sub(DBKey key, DBData *data, va_list ap) { +int guild_payexp_timer_sub(union DBKey key, struct DBData *data, va_list ap) +{ int i; struct guild_expcache *c; struct guild *g; @@ -318,7 +319,7 @@ int guild_payexp_timer(int tid, int64 tick, int id, intptr_t data) { * Taken from party_send_xy_timer_sub. [Skotlex] * @see DBApply */ -int guild_send_xy_timer_sub(DBKey key, DBData *data, va_list ap) +int guild_send_xy_timer_sub(union DBKey key, struct DBData *data, va_list ap) { struct guild *g = DB->data2ptr(data); int i; @@ -423,7 +424,7 @@ int guild_npc_request_info(int guild_id,const char *event) if( event && *event ) { struct eventlist *ev; - DBData prev; + struct DBData prev; ev=(struct eventlist *)aCalloc(sizeof(struct eventlist),1); memcpy(ev->name,event,strlen(event)); //The one in the db (if present) becomes the next event from this. @@ -481,7 +482,7 @@ int guild_recv_info(const struct guild *sg) { struct guild *g,before; int i,bm,m; - DBData data; + struct DBData data; struct map_session_data *sd; bool guild_new = false; struct channel_data *aChSysSave = NULL; @@ -1262,7 +1263,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) /** * @see DBCreateData */ -DBData create_expcache(DBKey key, va_list args) +struct DBData create_expcache(union DBKey key, va_list args) { struct guild_expcache *c; struct map_session_data *sd = va_arg(args, struct map_session_data*); @@ -1720,7 +1721,7 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id * Notification for the guild disbanded * @see DBApply */ -int guild_broken_sub(DBKey key, DBData *data, va_list ap) +int guild_broken_sub(union DBKey key, struct DBData *data, va_list ap) { struct guild *g = DB->data2ptr(data); int guild_id=va_arg(ap,int); @@ -1746,7 +1747,7 @@ int guild_broken_sub(DBKey key, DBData *data, va_list ap) * Invoked on Castles when a guild is broken. [Skotlex] * @see DBApply */ -int castle_guild_broken_sub(DBKey key, DBData *data, va_list ap) +int castle_guild_broken_sub(union DBKey key, struct DBData *data, va_list ap) { struct guild_castle *gc = DB->data2ptr(data); int guild_id = va_arg(ap, int); @@ -2222,7 +2223,8 @@ void guild_flag_remove(struct npc_data *nd) { /** * @see DBApply */ -int eventlist_db_final(DBKey key, DBData *data, va_list ap) { +int eventlist_db_final(union DBKey key, struct DBData *data, va_list ap) +{ struct eventlist *next = NULL; struct eventlist *current = DB->data2ptr(data); while (current != NULL) { @@ -2236,7 +2238,8 @@ int eventlist_db_final(DBKey key, DBData *data, va_list ap) { /** * @see DBApply */ -int guild_expcache_db_final(DBKey key, DBData *data, va_list ap) { +int guild_expcache_db_final(union DBKey key, struct DBData *data, va_list ap) +{ ers_free(guild->expcache_ers, DB->data2ptr(data)); return 0; } @@ -2244,7 +2247,8 @@ int guild_expcache_db_final(DBKey key, DBData *data, va_list ap) { /** * @see DBApply */ -int guild_castle_db_final(DBKey key, DBData *data, va_list ap) { +int guild_castle_db_final(union DBKey key, struct DBData *data, va_list ap) +{ struct guild_castle* gc = DB->data2ptr(data); if( gc->temp_guardians ) aFree(gc->temp_guardians); diff --git a/src/map/guild.h b/src/map/guild.h index cd796adb3..c0191469b 100644 --- a/src/map/guild.h +++ b/src/map/guild.h @@ -166,15 +166,15 @@ struct guild_interface { struct map_session_data *(*sd_check) (int guild_id, int account_id, int char_id); bool (*read_guildskill_tree_db) (char* split[], int columns, int current); bool (*read_castledb) (char* str[], int columns, int current); - int (*payexp_timer_sub) (DBKey key, DBData *data, va_list ap); - int (*send_xy_timer_sub) (DBKey key, DBData *data, va_list ap); + int (*payexp_timer_sub) (union DBKey key, struct DBData *data, va_list ap); + int (*send_xy_timer_sub) (union DBKey key, struct DBData *data, va_list ap); int (*send_xy_timer) (int tid, int64 tick, int id, intptr_t data); - DBData (*create_expcache) (DBKey key, va_list args); - int (*eventlist_db_final) (DBKey key, DBData *data, va_list ap); - int (*expcache_db_final) (DBKey key, DBData *data, va_list ap); - int (*castle_db_final) (DBKey key, DBData *data, va_list ap); - int (*broken_sub) (DBKey key, DBData *data, va_list ap); - int (*castle_broken_sub) (DBKey key, DBData *data, va_list ap); + struct DBData (*create_expcache) (union DBKey key, va_list args); + int (*eventlist_db_final) (union DBKey key, struct DBData *data, va_list ap); + int (*expcache_db_final) (union DBKey key, struct DBData *data, va_list ap); + int (*castle_db_final) (union DBKey key, struct DBData *data, va_list ap); + int (*broken_sub) (union DBKey key, struct DBData *data, va_list ap); + int (*castle_broken_sub) (union DBKey key, struct DBData *data, va_list ap); void (*makemember) (struct guild_member *m,struct map_session_data *sd); int (*check_member) (const struct guild *g); int (*get_alliance_count) (struct guild *g,int flag); diff --git a/src/map/intif.c b/src/map/intif.c index 4b3e913e1..8106c6558 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -302,8 +302,8 @@ int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes) //Request for saving registry values. int intif_saveregistry(struct map_session_data *sd) { DBIterator *iter; - DBKey key; - DBData *data; + union DBKey key; + struct DBData *data; int plen = 0; size_t len; diff --git a/src/map/itemdb.c b/src/map/itemdb.c index ce6232965..38913249b 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -49,7 +49,7 @@ struct itemdb_interface *itemdb; * name = item alias, so we should find items aliases first. if not found then look for "jname" (full name) * @see DBApply */ -int itemdb_searchname_sub(DBKey key, DBData *data, va_list ap) +int itemdb_searchname_sub(union DBKey key, struct DBData *data, va_list ap) { struct item_data *item = DB->data2ptr(data), **dst, **dst2; char *str; @@ -112,7 +112,7 @@ struct item_data* itemdb_name2id(const char *str) { /** * @see DBMatcher */ -int itemdb_searchname_array_sub(DBKey key, DBData data, va_list ap) +int itemdb_searchname_array_sub(union DBKey key, struct DBData data, va_list ap) { struct item_data *item = DB->data2ptr(&data); char *str; @@ -170,10 +170,10 @@ int itemdb_searchname_array(struct item_data** data, int size, const char *str, // search in the db if( count < size ) { - DBData *db_data[MAX_SEARCH]; + struct DBData *db_data[MAX_SEARCH]; int db_count = 0; size -= count; - db_count = itemdb->other->getall(itemdb->other, (DBData**)&db_data, size, itemdb->searchname_array_sub, str); + db_count = itemdb->other->getall(itemdb->other, (struct DBData**)&db_data, size, itemdb->searchname_array_sub, str); for (i = 0; i < db_count; i++) data[count++] = DB->data2ptr(db_data[i]); count += db_count; @@ -2094,7 +2094,7 @@ uint64 itemdb_unique_id(struct map_session_data *sd) { */ void itemdb_read(bool minimal) { int i; - DBData prev; + struct DBData prev; const char *filename[] = { DBPATH"item_db.conf", @@ -2171,7 +2171,7 @@ void destroy_item_data(struct item_data* self, int free_self) /** * @see DBApply */ -int itemdb_final_sub(DBKey key, DBData *data, va_list ap) +int itemdb_final_sub(union DBKey key, struct DBData *data, va_list ap) { struct item_data *id = DB->data2ptr(data); diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 47446d617..58d19db05 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -612,8 +612,8 @@ struct itemdb_interface { int (*group_item) (struct item_group *group); int (*chain_item) (unsigned short chain_id, int *rate); void (*package_item) (struct map_session_data *sd, struct item_package *package); - int (*searchname_sub) (DBKey key, DBData *data, va_list ap); - int (*searchname_array_sub) (DBKey key, DBData data, va_list ap); + int (*searchname_sub) (union DBKey key, struct DBData *data, va_list ap); + int (*searchname_array_sub) (union DBKey key, struct DBData data, va_list ap); int (*searchrandomid) (struct item_group *group); const char* (*typename) (int type); void (*jobmask2mapid) (uint64 *bclass, uint64 jobmask); @@ -647,7 +647,7 @@ struct itemdb_interface { uint64 (*unique_id) (struct map_session_data *sd); void (*read) (bool minimal); void (*destroy_item_data) (struct item_data *self, int free_self); - int (*final_sub) (DBKey key, DBData *data, va_list ap); + int (*final_sub) (union DBKey key, struct DBData *data, va_list ap); void (*clear) (bool total); struct item_combo * (*id2combo) (unsigned short id); bool (*is_item_usable) (struct item_data *item); diff --git a/src/map/map.c b/src/map/map.c index a93fb3fd3..1ae094c75 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -1658,7 +1658,7 @@ int map_addflooritem(const struct block_list *bl, struct item *item_data, int am /** * @see DBCreateData */ -DBData create_charid2nick(DBKey key, va_list args) +struct DBData create_charid2nick(union DBKey key, va_list args) { struct charid2nick *p; CREATE(p, struct charid2nick, 1); @@ -1695,7 +1695,7 @@ void map_delnickdb(int charid, const char* name) { struct charid2nick* p; struct charid_request* req; - DBData data; + struct DBData data; if (!map->nick_db->remove(map->nick_db, DB->i2key(charid), &data) || (p = DB->data2ptr(&data)) == NULL) return; @@ -3069,7 +3069,7 @@ void map_iwall_remove(const char *wall_name) /** * @see DBCreateData */ -DBData create_map_data_other_server(DBKey key, va_list args) +struct DBData create_map_data_other_server(union DBKey key, va_list args) { struct map_data_other_server *mdos; unsigned short map_index = (unsigned short)key.ui; @@ -3104,7 +3104,7 @@ int map_setipport(unsigned short map_index, uint32 ip, uint16 port) * Delete all the other maps server management * @see DBApply */ -int map_eraseallipport_sub(DBKey key, DBData *data, va_list va) +int map_eraseallipport_sub(union DBKey key, struct DBData *data, va_list va) { struct map_data_other_server *mdos = DB->data2ptr(data); if(mdos->cell == NULL) { @@ -5446,7 +5446,8 @@ bool map_remove_questinfo(int m, struct npc_data *nd) { /** * @see DBApply */ -int map_db_final(DBKey key, DBData *data, va_list ap) { +int map_db_final(union DBKey key, struct DBData *data, va_list ap) +{ struct map_data_other_server *mdos = DB->data2ptr(data); if(mdos && iMalloc->verify_ptr(mdos) && mdos->cell == NULL) @@ -5458,7 +5459,7 @@ int map_db_final(DBKey key, DBData *data, va_list ap) { /** * @see DBApply */ -int nick_db_final(DBKey key, DBData *data, va_list args) +int nick_db_final(union DBKey key, struct DBData *data, va_list args) { struct charid2nick* p = DB->data2ptr(data); struct charid_request* req; @@ -5505,7 +5506,8 @@ int cleanup_sub(struct block_list *bl, va_list ap) { /** * @see DBApply */ -int cleanup_db_sub(DBKey key, DBData *data, va_list va) { +int cleanup_db_sub(union DBKey key, struct DBData *data, va_list va) +{ return map->cleanup_sub(DB->data2ptr(data), va); } diff --git a/src/map/map.h b/src/map/map.h index e61c64f2d..9df2dd586 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -1167,7 +1167,7 @@ END_ZEROED_BLOCK; int (*freeblock_timer) (int tid, int64 tick, int id, intptr_t data); int (*searchrandfreecell) (int16 m, const struct block_list *bl, int16 *x, int16 *y, int stack); int (*count_sub) (struct block_list *bl, va_list ap); - DBData (*create_charid2nick) (DBKey key, va_list args); + struct DBData (*create_charid2nick) (union DBKey key, va_list args); int (*removemobs_sub) (struct block_list *bl, va_list ap); struct mapcell (*gat2cell) (int gat); int (*cell2gat) (struct mapcell cell); @@ -1176,8 +1176,8 @@ END_ZEROED_BLOCK; int (*sub_getcellp) (struct map_data *m, const struct block_list *bl, int16 x, int16 y, cell_chk cellchk); void (*sub_setcell) (int16 m, int16 x, int16 y, cell_t cell, bool flag); void (*iwall_nextxy) (int16 x, int16 y, int8 dir, int pos, int16 *x1, int16 *y1); - DBData (*create_map_data_other_server) (DBKey key, va_list args); - int (*eraseallipport_sub) (DBKey key, DBData *data, va_list va); + struct DBData (*create_map_data_other_server) (union DBKey key, va_list args); + int (*eraseallipport_sub) (union DBKey key, struct DBData *data, va_list va); char* (*init_mapcache) (FILE *fp); int (*readfromcache) (struct map_data *m, char *buffer); int (*addmap) (const char *mapname); @@ -1198,9 +1198,9 @@ END_ZEROED_BLOCK; unsigned short (*zone_str2skillid) (const char *name); enum bl_type (*zone_bl_type) (const char *entry, enum map_zone_skill_subtype *subtype); void (*read_zone_db) (void); - int (*db_final) (DBKey key, DBData *data, va_list ap); - int (*nick_db_final) (DBKey key, DBData *data, va_list args); - int (*cleanup_db_sub) (DBKey key, DBData *data, va_list va); + int (*db_final) (union DBKey key, struct DBData *data, va_list ap); + int (*nick_db_final) (union DBKey key, struct DBData *data, va_list args); + int (*cleanup_db_sub) (union DBKey key, struct DBData *data, va_list va); int (*abort_sub) (struct map_session_data *sd, va_list ap); void (*update_cell_bl) (struct block_list *bl, bool increase); int (*get_new_bonus_id) (void); diff --git a/src/map/mapreg.h b/src/map/mapreg.h index dfe1dfb2d..d19b2bb80 100644 --- a/src/map/mapreg.h +++ b/src/map/mapreg.h @@ -59,7 +59,7 @@ struct mapreg_interface { void (*load) (void); void (*save) (void); int (*save_timer) (int tid, int64 tick, int id, intptr_t data); - int (*destroyreg) (DBKey key, DBData *data, va_list ap); + int (*destroyreg) (union DBKey key, struct DBData *data, va_list ap); void (*reload) (void); bool (*config_read) (const char *w1, const char *w2); }; diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c index f3ab36950..d9d8755c2 100644 --- a/src/map/mapreg_sql.c +++ b/src/map/mapreg_sql.c @@ -277,7 +277,8 @@ int script_autosave_mapreg(int tid, int64 tick, int id, intptr_t data) { * * @see DBApply */ -int mapreg_destroyreg(DBKey key, DBData *data, va_list ap) { +int mapreg_destroyreg(union DBKey key, struct DBData *data, va_list ap) +{ struct mapreg_save *m = NULL; if (data->type != DB_DATA_PTR) // Sanity check diff --git a/src/map/npc.c b/src/map/npc.c index 7fad5dd7c..68bb81031 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -367,7 +367,7 @@ int npc_event_dequeue(struct map_session_data* sd) /** * @see DBCreateData */ -DBData npc_event_export_create(DBKey key, va_list args) +struct DBData npc_event_export_create(union DBKey key, va_list args) { struct linkdb_node** head_ptr; CREATE(head_ptr, struct linkdb_node*, 1); @@ -2224,7 +2224,7 @@ int npc_remove_map(struct npc_data* nd) { /** * @see DBApply */ -int npc_unload_ev(DBKey key, DBData *data, va_list ap) +int npc_unload_ev(union DBKey key, struct DBData *data, va_list ap) { struct event_data* ev = DB->data2ptr(data); char* npcname = va_arg(ap, char *); @@ -2239,7 +2239,7 @@ int npc_unload_ev(DBKey key, DBData *data, va_list ap) /** * @see DBApply */ -int npc_unload_ev_label(DBKey key, DBData *data, va_list ap) +int npc_unload_ev_label(union DBKey key, struct DBData *data, va_list ap) { struct linkdb_node **label_linkdb = DB->data2ptr(data); struct npc_data* nd = va_arg(ap, struct npc_data *); @@ -3626,7 +3626,7 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c const char *npc_parse_function(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) { DBMap* func_db; - DBData old_data; + struct DBData old_data; struct script_code *scriptroot; const char* end; const char* script_start; @@ -4572,8 +4572,8 @@ void npc_read_event_script(void) for (i = 0; i < NPCE_MAX; i++) { DBIterator* iter; - DBKey key; - DBData *data; + union DBKey key; + struct DBData *data; char name[64]="::"; safestrncpy(name+2,config[i].event_name,62); @@ -4616,7 +4616,7 @@ void npc_read_event_script(void) /** * @see DBApply */ -int npc_path_db_clear_sub(DBKey key, DBData *data, va_list args) +int npc_path_db_clear_sub(union DBKey key, struct DBData *data, va_list args) { struct npc_path_data *npd = DB->data2ptr(data); if (npd->path) @@ -4627,7 +4627,7 @@ int npc_path_db_clear_sub(DBKey key, DBData *data, va_list args) /** * @see DBApply */ -int npc_ev_label_db_clear_sub(DBKey key, DBData *data, va_list args) +int npc_ev_label_db_clear_sub(union DBKey key, struct DBData *data, va_list args) { struct linkdb_node **label_linkdb = DB->data2ptr(data); linkdb_final(label_linkdb); // linked data (struct event_data*) is freed when clearing ev_db diff --git a/src/map/npc.h b/src/map/npc.h index 965a34f94..5b4707d00 100644 --- a/src/map/npc.h +++ b/src/map/npc.h @@ -203,7 +203,7 @@ struct npc_interface { int (*enable) (const char *name, int flag); struct npc_data* (*name2id) (const char *name); int (*event_dequeue) (struct map_session_data *sd); - DBData (*event_export_create) (DBKey key, va_list args); + struct DBData (*event_export_create) (union DBKey key, va_list args); int (*event_export) (struct npc_data *nd, int i); int (*event_sub) (struct map_session_data *sd, struct event_data *ev, const char *eventname); void (*event_doall_sub) (void *key, void *data, va_list ap); @@ -239,8 +239,8 @@ struct npc_interface { int (*selllist_sub) (struct map_session_data *sd, struct itemlist *item_list, struct npc_data *nd); int (*selllist) (struct map_session_data *sd, struct itemlist *item_list); int (*remove_map) (struct npc_data *nd); - int (*unload_ev) (DBKey key, DBData *data, va_list ap); - int (*unload_ev_label) (DBKey key, DBData *data, va_list ap); + int (*unload_ev) (union DBKey key, struct DBData *data, va_list ap); + int (*unload_ev_label) (union DBKey key, struct DBData *data, va_list ap); int (*unload_dup_sub) (struct npc_data *nd, va_list args); void (*unload_duplicates) (struct npc_data *nd); int (*unload) (struct npc_data *nd, bool single); @@ -282,8 +282,8 @@ struct npc_interface { int (*parsesrcfile) (const char *filepath, bool runOnInit); int (*script_event) (struct map_session_data *sd, enum npce_event type); void (*read_event_script) (void); - int (*path_db_clear_sub) (DBKey key, DBData *data, va_list args); - int (*ev_label_db_clear_sub) (DBKey key, DBData *data, va_list args); + int (*path_db_clear_sub) (union DBKey key, struct DBData *data, va_list args); + int (*ev_label_db_clear_sub) (union DBKey key, struct DBData *data, va_list args); int (*reload) (void); bool (*unloadfile) (const char *filepath); void (*do_clear_npc) (void); diff --git a/src/map/party.c b/src/map/party.c index 77f3c2b0b..049c42b1f 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -122,7 +122,8 @@ struct map_session_data *party_sd_check(int party_id, int account_id, int char_i return sd; } -int party_db_final(DBKey key, DBData *data, va_list ap) { +int party_db_final(union DBKey key, struct DBData *data, va_list ap) +{ struct party_data *p; if ((p = DB->data2ptr(data))) { diff --git a/src/map/party.h b/src/map/party.h index b66a9770c..750f7d07f 100644 --- a/src/map/party.h +++ b/src/map/party.h @@ -145,7 +145,7 @@ struct party_interface { struct map_session_data *(*sd_check) (int party_id, int account_id, int char_id); void (*check_state) (struct party_data *p); struct party_booking_ad_info* (*create_booking_data) (void); - int (*db_final) (DBKey key, DBData *data, va_list ap); + int (*db_final) (union DBKey key, struct DBData *data, va_list ap); }; #ifdef HERCULES_CORE diff --git a/src/map/pc.c b/src/map/pc.c index 4b70a49f3..57b2fe19a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -8991,7 +8991,7 @@ char* pc_readregstr(struct map_session_data* sd, int64 reg) { void pc_setregstr(struct map_session_data* sd, int64 reg, const char* str) { struct script_reg_str *p = NULL; unsigned int index = script_getvaridx(reg); - DBData prev; + struct DBData prev; if( str[0] ) { p = ers_alloc(pc->str_reg_ers, struct script_reg_str); @@ -9114,7 +9114,7 @@ int pc_setregistry(struct map_session_data *sd, int64 reg, int val) { if( !pc->reg_load ) p->flag.update = 1;/* either way, it will require either delete or replace */ } else if( val ) { - DBData prev; + struct DBData prev; if( index ) script->array_update(&sd->regs, reg, false); @@ -9167,7 +9167,7 @@ int pc_setregistry_str(struct map_session_data *sd, int64 reg, const char *val) if( !pc->reg_load ) p->flag.update = 1;/* either way, it will require either delete or replace */ } else if( val[0] ) { - DBData prev; + struct DBData prev; if( index ) script->array_update(&sd->regs, reg, false); @@ -11475,7 +11475,8 @@ void pc_autotrade_populate(struct map_session_data *sd) { /** * @see DBApply */ -int pc_autotrade_final(DBKey key, DBData *data, va_list ap) { +int pc_autotrade_final(union DBKey key, struct DBData *data, va_list ap) +{ struct autotrade_vending* at_v = DB->data2ptr(data); HPM->data_store_destroy(&at_v->hdata); return 0; diff --git a/src/map/pc.h b/src/map/pc.h index 5c5ec131d..728d02734 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -33,8 +33,9 @@ #include "map/status.h" // enum sc_type, OPTION_* #include "map/unit.h" // struct unit_data, struct view_data #include "map/vending.h" // struct s_vending -#include "common/hercules.h" +#include "common/db.h" #include "common/ers.h" // struct eri +#include "common/hercules.h" #include "common/mmo.h" // JOB_*, MAX_FAME_LIST, struct fame_list, struct mmo_charstatus, NEW_CARTS /** @@ -1084,7 +1085,7 @@ END_ZEROED_BLOCK; /* End */ void (*autotrade_start) (struct map_session_data *sd); void (*autotrade_prepare) (struct map_session_data *sd); void (*autotrade_populate) (struct map_session_data *sd); - int (*autotrade_final) (DBKey key, DBData *data, va_list ap); + int (*autotrade_final) (union DBKey key, struct DBData *data, va_list ap); int (*check_job_name) (const char *name); void (*update_idle_time) (struct map_session_data* sd, enum e_battle_config_idletime type); diff --git a/src/map/pc_groups.c b/src/map/pc_groups.c index b325a8ed7..5b12a45dd 100644 --- a/src/map/pc_groups.c +++ b/src/map/pc_groups.c @@ -465,7 +465,7 @@ void do_init_pc_groups(void) { /** * @see DBApply */ -static int group_db_clear_sub(DBKey key, DBData *data, va_list args) +static int group_db_clear_sub(union DBKey key, struct DBData *data, va_list args) { GroupSettings *group = DB->data2ptr(data); if (group->name) diff --git a/src/map/script.c b/src/map/script.c index aeff221d4..bb6651ca5 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -3052,7 +3052,8 @@ unsigned int script_array_highest_key(struct script_state *st, struct map_sessio } return 0; } -int script_free_array_db(DBKey key, DBData *data, va_list ap) { +int script_free_array_db(union DBKey key, struct DBData *data, va_list ap) +{ struct script_array *sa = DB->data2ptr(data); aFree(sa->members); ers_free(script->array_ers, sa); @@ -4595,7 +4596,7 @@ int script_config_read(char *cfgName) { /** * @see DBApply */ -int db_script_free_code_sub(DBKey key, DBData *data, va_list ap) +int db_script_free_code_sub(union DBKey key, struct DBData *data, va_list ap) { struct script_code *code = DB->data2ptr(data); if (code) @@ -4671,7 +4672,8 @@ void script_setarray_pc(struct map_session_data* sd, const char* varname, uint32 /** * Clears persistent variables from memory **/ -int script_reg_destroy(DBKey key, DBData *data, va_list ap) { +int script_reg_destroy(union DBKey key, struct DBData *data, va_list ap) +{ struct script_reg_state *src; if( data->type != DB_DATA_PTR )/* got no need for those! */ @@ -5130,7 +5132,8 @@ void script_clear_translations(bool reload) { /** * **/ -int script_translation_db_destroyer(DBKey key, DBData *data, va_list ap) { +int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap) +{ DBMap *string_db = DB->data2ptr(data); if( db_size(string_db) ) { diff --git a/src/map/script.h b/src/map/script.h index e5a8d3edd..368247c63 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -751,7 +751,7 @@ struct script_interface { void (*op_1) (struct script_state *st, int op); void (*check_buildin_argtype) (struct script_state *st, int func); void (*detach_state) (struct script_state *st, bool dequeue_event); - int (*db_free_code_sub) (DBKey key, DBData *data, va_list ap); + int (*db_free_code_sub) (union DBKey key, struct DBData *data, va_list ap); void (*add_autobonus) (const char *autobonus); int (*menu_countoptions) (const char *str, int max_count, int *total); int (*buildin_areawarp_sub) (struct block_list *bl, va_list ap); @@ -794,11 +794,11 @@ struct script_interface { void (*array_add_member) (struct script_array *sa, unsigned int idx); unsigned int (*array_size) (struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref); unsigned int (*array_highest_key) (struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref); - int (*array_free_db) (DBKey key, DBData *data, va_list ap); + int (*array_free_db) (union DBKey key, struct DBData *data, va_list ap); void (*array_ensure_zero) (struct script_state *st, struct map_session_data *sd, int64 uid, struct reg_db *ref); /* */ void (*reg_destroy_single) (struct map_session_data *sd, int64 reg, struct script_reg_state *data); - int (*reg_destroy) (DBKey key, DBData *data, va_list ap); + int (*reg_destroy) (union DBKey key, struct DBData *data, va_list ap); /* */ void (*generic_ui_array_expand) (unsigned int plus); unsigned int *(*array_cpy_list) (struct script_array *sa); @@ -808,7 +808,7 @@ struct script_interface { int (*string_dup) (char *str); void (*load_translations) (void); void (*load_translation) (const char *file, uint8 lang_id, uint32 *total); - int (*translation_db_destroyer) (DBKey key, DBData *data, va_list ap); + int (*translation_db_destroyer) (union DBKey key, struct DBData *data, va_list ap); void (*clear_translations) (bool reload); int (*parse_cleanup_timer) (int tid, int64 tick, int id, intptr_t data); uint8 (*add_language) (const char *name); diff --git a/src/map/skill.c b/src/map/skill.c index 13418fece..31be52ae3 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -16554,7 +16554,8 @@ int skill_unit_timer_sub_onplace(struct block_list* bl, va_list ap) { /** * @see DBApply */ -int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap) { +int skill_unit_timer_sub(union DBKey key, struct DBData *data, va_list ap) +{ struct skill_unit* su = DB->data2ptr(data); struct skill_unit_group* group = su->group; int64 tick = va_arg(ap,int64); diff --git a/src/map/skill.h b/src/map/skill.h index fb2acfb62..2f8525654 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -2031,7 +2031,7 @@ struct skill_interface { int (*blockmerc_end) (int tid, int64 tick, int id, intptr_t data); int (*split_atoi) (char *str, int *val); int (*unit_timer) (int tid, int64 tick, int id, intptr_t data); - int (*unit_timer_sub) (DBKey key, DBData *data, va_list ap); + int (*unit_timer_sub) (union DBKey key, struct DBData *data, va_list ap); void (*init_unit_layout) (void); bool (*parse_row_skilldb) (char* split[], int columns, int current); bool (*parse_row_requiredb) (char* split[], int columns, int current); diff --git a/src/map/storage.c b/src/map/storage.c index b8ec1e31e..91b37eb19 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -79,7 +79,7 @@ void storage_sortitem(struct item* items, unsigned int size) * Parses storage and saves 'dirty' ones upon reconnect. [Skotlex] * @see DBApply */ -int storage_reconnect_sub(DBKey key, DBData *data, va_list ap) +int storage_reconnect_sub(union DBKey key, struct DBData *data, va_list ap) { struct guild_storage *stor = DB->data2ptr(data); if (stor->dirty && stor->storage_status == 0) //Save closed storages. @@ -366,7 +366,7 @@ void storage_storage_quit(struct map_session_data* sd, int flag) { /** * @see DBCreateData */ -DBData create_guildstorage(DBKey key, va_list args) +struct DBData create_guildstorage(union DBKey key, va_list args) { struct guild_storage *gs = NULL; gs = (struct guild_storage *) aCalloc(sizeof(struct guild_storage), 1); diff --git a/src/map/storage.h b/src/map/storage.h index bddd03770..2c7ee4ffe 100644 --- a/src/map/storage.h +++ b/src/map/storage.h @@ -52,7 +52,7 @@ struct storage_interface { void (*pc_quit) (struct map_session_data *sd, int flag); int (*comp_item) (const void *i1_, const void *i2_); void (*sortitem) (struct item* items, unsigned int size); - int (*reconnect_sub) (DBKey key, DBData *data, va_list ap); + int (*reconnect_sub) (union DBKey key, struct DBData *data, va_list ap); }; struct guild_storage_interface { @@ -75,7 +75,7 @@ struct guild_storage_interface { int (*pc_quit) (struct map_session_data *sd,int flag); int (*save) (int account_id, int guild_id, int flag); int (*saved) (int guild_id); //Ack from char server that guild store was saved. - DBData (*create) (DBKey key, va_list args); + struct DBData (*create) (union DBKey key, va_list args); }; #ifdef HERCULES_CORE -- cgit v1.2.3-70-g09d2 From 9975335df7aa30d687bf47aa1fe01f0c4993849d Mon Sep 17 00:00:00 2001 From: Haru Date: Sat, 20 Feb 2016 14:43:20 +0100 Subject: Dropped typedef from DBIterator Signed-off-by: Haru --- src/char/int_auction.c | 4 ++-- src/char/int_guild.c | 2 +- src/common/db.c | 56 ++++++++++++++++++++++--------------------- src/common/db.h | 36 +++++++++++++++------------- src/common/socket.c | 2 +- src/map/atcommand.c | 18 +++++++------- src/map/channel.c | 5 ++-- src/map/clif.c | 4 ++-- src/map/guild.c | 15 ++++++------ src/map/intif.c | 5 ++-- src/map/itemdb.c | 5 ++-- src/map/map.c | 65 +++++++++++++++++++++++++------------------------- src/map/mapreg_sql.c | 7 +++--- src/map/npc.c | 12 +++++----- src/map/party.c | 14 +++++------ src/map/pc_groups.c | 2 +- src/map/script.c | 25 ++++++++++--------- 17 files changed, 144 insertions(+), 133 deletions(-) (limited to 'src/map') diff --git a/src/char/int_auction.c b/src/char/int_auction.c index 2c9942dac..51acb32a6 100644 --- a/src/char/int_auction.c +++ b/src/char/int_auction.c @@ -47,7 +47,7 @@ static int inter_auction_count(int char_id, bool buy) { int i = 0; struct auction_data *auction; - DBIterator *iter = db_iterator(inter_auction->db); + struct DBIterator *iter = db_iterator(inter_auction->db); for( auction = dbi_first(iter); dbi_exists(iter); auction = dbi_next(iter) ) { @@ -280,7 +280,7 @@ void mapif_parse_auction_requestlist(int fd) int price = RFIFOL(fd,10); short type = RFIFOW(fd,8), page = max(1,RFIFOW(fd,14)); unsigned char buf[5 * sizeof(struct auction_data)]; - DBIterator *iter = db_iterator(inter_auction->db); + struct DBIterator *iter = db_iterator(inter_auction->db); struct auction_data *auction; short i = 0, j = 0, pages = 1; diff --git a/src/char/int_guild.c b/src/char/int_guild.c index c269a8f6f..21f38d049 100644 --- a/src/char/int_guild.c +++ b/src/char/int_guild.c @@ -59,7 +59,7 @@ static const char dataToHex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9 int inter_guild_save_timer(int tid, int64 tick, int id, intptr_t data) { static int last_id = 0; //To know in which guild we were. int state = 0; //0: Have not reached last guild. 1: Reached last guild, ready for save. 2: Some guild saved, don't do further saving. - DBIterator *iter = db_iterator(inter_guild->guild_db); + struct DBIterator *iter = db_iterator(inter_guild->guild_db); union DBKey key; struct guild* g; diff --git a/src/common/db.c b/src/common/db.c index 639d42156..fa1a6d65c 100644 --- a/src/common/db.c +++ b/src/common/db.c @@ -234,17 +234,17 @@ typedef struct DBMap_impl { * @param ht_index Current index of the hashtable * @param node Current node * @private - * @see #DBIterator + * @see struct DBIterator * @see #DBMap_impl * @see #DBNode */ -typedef struct DBIterator_impl { +struct DBIterator_impl { // Iterator interface struct DBIterator vtable; DBMap_impl* db; int ht_index; DBNode *node; -} DBIterator_impl; +}; #if defined(DB_ENABLE_STATS) /** @@ -1245,11 +1245,11 @@ static void db_release_both(union DBKey key, struct DBData data, enum DBReleaseO * @param out_key Key of the entry * @return Data of the entry * @protected - * @see DBIterator#first + * @see struct DBIterator#first() */ -struct DBData *dbit_obj_first(DBIterator* self, union DBKey *out_key) +struct DBData *dbit_obj_first(struct DBIterator *self, union DBKey *out_key) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DB_COUNTSTAT(dbit_first); // position before the first entry @@ -1267,11 +1267,11 @@ struct DBData *dbit_obj_first(DBIterator* self, union DBKey *out_key) * @param out_key Key of the entry * @return Data of the entry * @protected - * @see DBIterator#last + * @see struct DBIterator#last() */ -struct DBData *dbit_obj_last(DBIterator* self, union DBKey *out_key) +struct DBData *dbit_obj_last(struct DBIterator *self, union DBKey *out_key) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DB_COUNTSTAT(dbit_last); // position after the last entry @@ -1289,11 +1289,11 @@ struct DBData *dbit_obj_last(DBIterator* self, union DBKey *out_key) * @param out_key Key of the entry * @return Data of the entry * @protected - * @see DBIterator#next + * @see struct DBIterator#next() */ -struct DBData *dbit_obj_next(DBIterator* self, union DBKey *out_key) +struct DBData *dbit_obj_next(struct DBIterator *self, union DBKey *out_key) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DBNode *node; DBNode *parent; struct dbn fake; @@ -1365,11 +1365,11 @@ struct DBData *dbit_obj_next(DBIterator* self, union DBKey *out_key) * @param out_key Key of the entry * @return Data of the entry * @protected - * @see DBIterator#prev + * @see struct DBIterator#prev() */ -struct DBData *dbit_obj_prev(DBIterator* self, union DBKey *out_key) +struct DBData *dbit_obj_prev(struct DBIterator *self, union DBKey *out_key) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DBNode *node; DBNode *parent; struct dbn fake; @@ -1440,11 +1440,11 @@ struct DBData *dbit_obj_prev(DBIterator* self, union DBKey *out_key) * @param self Iterator * @return true if the entry exists * @protected - * @see DBIterator#exists + * @see struct DBIterator#exists() */ -bool dbit_obj_exists(DBIterator* self) +bool dbit_obj_exists(struct DBIterator *self) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DB_COUNTSTAT(dbit_exists); return (it->node && !it->node->deleted); @@ -1452,19 +1452,21 @@ bool dbit_obj_exists(DBIterator* self) /** * Removes the current entry from the database. - * NOTE: {@link DBIterator#exists} will return false until another entry - * is fetched + * + * NOTE: struct DBIterator#exists() will return false until another entry is + * fetched. + * * Puts data of the removed entry in out_data, if out_data is not NULL (unless data has been released) * @param self Iterator * @param out_data Data of the removed entry. * @return 1 if entry was removed, 0 otherwise * @protected * @see DBMap#remove - * @see DBIterator#remove + * @see struct DBIterator#remove() */ -int dbit_obj_remove(DBIterator* self, struct DBData *out_data) +int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DBNode *node; int retval = 0; @@ -1489,9 +1491,9 @@ int dbit_obj_remove(DBIterator* self, struct DBData *out_data) * @param self Iterator * @protected */ -void dbit_obj_destroy(DBIterator* self) +void dbit_obj_destroy(struct DBIterator *self) { - DBIterator_impl* it = (DBIterator_impl*)self; + struct DBIterator_impl *it = (struct DBIterator_impl *)self; DB_COUNTSTAT(dbit_destroy); // unlock the database @@ -1509,10 +1511,10 @@ void dbit_obj_destroy(DBIterator* self) * @return New iterator * @protected */ -static DBIterator* db_obj_iterator(DBMap* self) +static struct DBIterator *db_obj_iterator(DBMap* self) { DBMap_impl* db = (DBMap_impl*)self; - DBIterator_impl* it; + struct DBIterator_impl *it; DB_COUNTSTAT(db_iterator); it = ers_alloc(db_iterator_ers, struct DBIterator_impl); diff --git a/src/common/db.h b/src/common/db.h index 1c2da3917..a867b011f 100644 --- a/src/common/db.h +++ b/src/common/db.h @@ -76,9 +76,9 @@ * DBComparator - Format of the comparators used by the databases. * * DBHasher - Format of the hashers used by the databases. * * DBReleaser - Format of the releasers used by the databases. * - * DBIterator - Database iterator. * + * struct DBIterator - Database iterator. * * DBMap - Database interface. * -\*****************************************************************************/ + *****************************************************************************/ /** * Bitfield with what should be released by the releaser function (if the @@ -288,21 +288,21 @@ typedef uint64 (*DBHasher)(union DBKey key, unsigned short maxlen); */ typedef void (*DBReleaser)(union DBKey key, struct DBData data, enum DBReleaseOption which); -typedef struct DBIterator DBIterator; typedef struct DBMap DBMap; /** * Database iterator. + * * Supports forward iteration, backward iteration and removing entries from the database. * The iterator is initially positioned before the first entry of the database. + * * While the iterator exists the database is locked internally, so invoke - * {@link DBIterator#destroy} as soon as possible. + * struct DBIterator#destroy() as soon as possible. + * * @public * @see #DBMap */ -struct DBIterator -{ - +struct DBIterator { /** * Fetches the first entry in the database. * Returns the data of the entry. @@ -312,7 +312,7 @@ struct DBIterator * @return Data of the entry * @protected */ - struct DBData *(*first)(DBIterator* self, union DBKey *out_key); + struct DBData *(*first)(struct DBIterator *self, union DBKey *out_key); /** * Fetches the last entry in the database. @@ -323,7 +323,7 @@ struct DBIterator * @return Data of the entry * @protected */ - struct DBData *(*last)(DBIterator* self, union DBKey *out_key); + struct DBData *(*last)(struct DBIterator *self, union DBKey *out_key); /** * Fetches the next entry in the database. @@ -334,7 +334,7 @@ struct DBIterator * @return Data of the entry * @protected */ - struct DBData *(*next)(DBIterator* self, union DBKey *out_key); + struct DBData *(*next)(struct DBIterator *self, union DBKey *out_key); /** * Fetches the previous entry in the database. @@ -345,7 +345,7 @@ struct DBIterator * @return Data of the entry * @protected */ - struct DBData *(*prev)(DBIterator* self, union DBKey *out_key); + struct DBData *(*prev)(struct DBIterator *self, union DBKey *out_key); /** * Returns true if the fetched entry exists. @@ -355,12 +355,14 @@ struct DBIterator * @return true is the entry exists * @protected */ - bool (*exists)(DBIterator* self); + bool (*exists)(struct DBIterator *self); /** * Removes the current entry from the database. - * NOTE: {@link DBIterator#exists} will return false until another entry - * is fetched + * + * NOTE: struct DBIterator#exists() will return false until another + * entry is fetched. + * * Puts data of the removed entry in out_data, if out_data is not NULL. * @param self Iterator * @param out_data Data of the removed entry. @@ -368,14 +370,14 @@ struct DBIterator * @protected * @see DBMap#remove */ - int (*remove)(DBIterator* self, struct DBData *out_data); + int (*remove)(struct DBIterator *self, struct DBData *out_data); /** * Destroys this iterator and unlocks the database. * @param self Iterator * @protected */ - void (*destroy)(DBIterator* self); + void (*destroy)(struct DBIterator *self); }; @@ -396,7 +398,7 @@ struct DBMap { * @return New iterator * @protected */ - DBIterator* (*iterator)(DBMap* self); + struct DBIterator *(*iterator)(DBMap* self); /** * Returns true if the entry exists. diff --git a/src/common/socket.c b/src/common/socket.c index 10712c78b..05ac4ca01 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -1089,7 +1089,7 @@ static int connect_check_clear(int tid, int64 tick, int id, intptr_t data) { int clear = 0; int list = 0; ConnectHistory *hist = NULL; - DBIterator *iter; + struct DBIterator *iter; if( !db_size(connect_history) ) return 0; diff --git a/src/map/atcommand.c b/src/map/atcommand.c index fbd8d6517..3da5c203f 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -1511,7 +1511,7 @@ ACMD(help) { clif->message(fd, atcmd_output); { // Display aliases - DBIterator* iter; + struct DBIterator *iter; AtCommandInfo *command_info; AliasInfo *alias_info = NULL; StringBuf buf; @@ -5278,10 +5278,11 @@ ACMD(clearcart) *------------------------------------------*/ #define MAX_SKILLID_PARTIAL_RESULTS 5 #define MAX_SKILLID_PARTIAL_RESULTS_LEN 74 /* "skill " (6) + "%d:" (up to 5) + "%s" (up to 30) + " (%s)" (up to 33) */ -ACMD(skillid) { +ACMD(skillid) +{ int i, found = 0; size_t skillen; - DBIterator* iter; + struct DBIterator *iter; union DBKey key; struct DBData *data; char partials[MAX_SKILLID_PARTIAL_RESULTS][MAX_SKILLID_PARTIAL_RESULTS_LEN]; @@ -8352,7 +8353,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand char line_buff[CHATBOX_SIZE]; char* cur = line_buff; AtCommandInfo* cmd; - DBIterator *iter = db_iterator(atcommand->db); + struct DBIterator *iter = db_iterator(atcommand->db); int count = 0; memset(line_buff,' ',CHATBOX_SIZE); @@ -8826,7 +8827,7 @@ ACMD(channel) { clif->messagecolor_self(fd, channel->config->colors[k], atcmd_output); } } else { - DBIterator *iter = db_iterator(channel->db); + struct DBIterator *iter = db_iterator(channel->db); bool show_all = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ? true : false; clif->message(fd, msg_fd(fd,1410)); // -- Public Channels if (channel->config->local) { @@ -9056,7 +9057,7 @@ ACMD(channel) { clif->message(fd, atcmd_output); } else if (strcmpi(subcmd,"banlist") == 0) { // sub1 = channel name; sub2 = unused; sub3 = unused - DBIterator *iter = NULL; + struct DBIterator *iter = NULL; union DBKey key; struct DBData *data; bool isA = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)?true:false; @@ -9733,8 +9734,7 @@ const char* atcommand_checkalias(const char *aliasname) { /// AtCommand suggestion void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool is_atcmd_cmd) { - DBIterator* atcommand_iter; - DBIterator* alias_iter; + struct DBIterator *atcommand_iter, *alias_iter; AtCommandInfo* command_info = NULL; AliasInfo* alias_info = NULL; AtCommandType type = is_atcmd_cmd ? COMMAND_ATCOMMAND : COMMAND_CHARCOMMAND; @@ -10120,7 +10120,7 @@ static inline int atcommand_command_type2idx(AtCommandType type) */ void atcommand_db_load_groups(GroupSettings **groups, struct config_setting_t **commands_, size_t sz) { - DBIterator *iter = db_iterator(atcommand->db); + struct DBIterator *iter = db_iterator(atcommand->db); AtCommandInfo *atcmd; nullpo_retv(groups); diff --git a/src/map/channel.c b/src/map/channel.c index 28ef854da..3d1b3f975 100644 --- a/src/map/channel.c +++ b/src/map/channel.c @@ -127,9 +127,8 @@ void channel_delete(struct channel_data *chan) nullpo_retv(chan); if (db_size(chan->users) && !channel->config->closing) { - DBIterator *iter; struct map_session_data *sd; - iter = db_iterator(chan->users); + struct DBIterator *iter = db_iterator(chan->users); for (sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter)) { channel->leave_sub(chan, sd); } @@ -814,7 +813,7 @@ int do_init_channel(bool minimal) void do_final_channel(void) { - DBIterator *iter = db_iterator(channel->db); + struct DBIterator *iter = db_iterator(channel->db); struct channel_data *chan; unsigned char i; diff --git a/src/map/clif.c b/src/map/clif.c index 69d9b6779..e1b4be8f4 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8971,7 +8971,7 @@ bool clif_process_message(struct map_session_data *sd, int format, const char ** void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, char *msg) { - DBIterator *iter; + struct DBIterator *iter; struct map_session_data *user; unsigned short msg_len; uint32 color; @@ -9005,7 +9005,7 @@ void clif_channel_msg(struct channel_data *chan, struct map_session_data *sd, ch void clif_channel_msg2(struct channel_data *chan, char *msg) { - DBIterator *iter; + struct DBIterator *iter; struct map_session_data *user; unsigned char buf[210]; unsigned short msg_len; diff --git a/src/map/guild.c b/src/map/guild.c index 0ceaff518..39d580bb7 100644 --- a/src/map/guild.c +++ b/src/map/guild.c @@ -178,7 +178,7 @@ struct guild* guild_search(int guild_id) struct guild* guild_searchname(char* str) { struct guild* g; - DBIterator *iter = db_iterator(guild->db); + struct DBIterator *iter = db_iterator(guild->db); nullpo_retr(NULL, str); for( g = dbi_first(iter); dbi_exists(iter); g = dbi_next(iter) ) @@ -201,7 +201,7 @@ struct guild_castle* guild_castle_search(int gcid) struct guild_castle* guild_mapindex2gc(short map_index) { struct guild_castle* gc; - DBIterator *iter = db_iterator(guild->castle_db); + struct DBIterator *iter = db_iterator(guild->castle_db); for( gc = dbi_first(iter); dbi_exists(iter); gc = dbi_next(iter) ) { @@ -1225,7 +1225,7 @@ int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data) } } {// update guardians (mobs) - DBIterator* iter = db_iterator(guild->castle_db); + struct DBIterator *iter = db_iterator(guild->castle_db); struct guild_castle* gc; for( gc = (struct guild_castle*)dbi_first(iter) ; dbi_exists(iter); gc = (struct guild_castle*)dbi_next(iter) ) { @@ -1956,7 +1956,7 @@ void guild_castle_map_init(void) if (num > 0) { struct guild_castle* gc = NULL; int *castle_ids, *cursor; - DBIterator* iter = NULL; + struct DBIterator *iter = NULL; CREATE(castle_ids, int, num); cursor = castle_ids; @@ -2154,7 +2154,7 @@ int guild_checkcastles(struct guild *g) { int nb_cas = 0; struct guild_castle* gc = NULL; - DBIterator *iter = db_iterator(guild->castle_db); + struct DBIterator *iter = db_iterator(guild->castle_db); for (gc = dbi_first(iter); dbi_exists(iter); gc = dbi_next(iter)) { if (gc->guild_id == g->guild_id) { @@ -2287,8 +2287,9 @@ void do_init_guild(bool minimal) { timer->add_interval(timer->gettick()+GUILD_SEND_XY_INVERVAL,guild->send_xy_timer,0,0,GUILD_SEND_XY_INVERVAL); } -void do_final_guild(void) { - DBIterator *iter = db_iterator(guild->db); +void do_final_guild(void) +{ + struct DBIterator *iter = db_iterator(guild->db); struct guild *g; for( g = dbi_first(iter); dbi_exists(iter); g = dbi_next(iter) ) { diff --git a/src/map/intif.c b/src/map/intif.c index 8106c6558..ec0251dad 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -300,8 +300,9 @@ int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes) } //Request for saving registry values. -int intif_saveregistry(struct map_session_data *sd) { - DBIterator *iter; +int intif_saveregistry(struct map_session_data *sd) +{ + struct DBIterator *iter; union DBKey key; struct DBData *data; int plen = 0; diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 38913249b..c59f627cc 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2307,8 +2307,9 @@ void itemdb_reload(void) { } mapit->free(iter); } -void itemdb_name_constants(void) { - DBIterator *iter = db_iterator(itemdb->names); +void itemdb_name_constants(void) +{ + struct DBIterator *iter = db_iterator(itemdb->names); struct item_data *data; #ifdef ENABLE_CASE_CHECK diff --git a/src/map/map.c b/src/map/map.c index 1ae094c75..aa4c2d84c 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2167,9 +2167,9 @@ struct map_session_data * map_nick2sd(const char *nick) /*========================================== * Convext Mirror *------------------------------------------*/ -struct mob_data * map_getmob_boss(int16 m) +struct mob_data *map_getmob_boss(int16 m) { - DBIterator* iter; + struct DBIterator *iter; struct mob_data *md = NULL; bool found = false; @@ -2231,11 +2231,11 @@ uint32 map_race_id2mask(int race) /// Applies func to all the players in the db. /// Stops iterating if func returns -1. -void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_list args) { - DBIterator* iter; - struct map_session_data* sd; +void map_vforeachpc(int (*func)(struct map_session_data* sd, va_list args), va_list args) +{ + struct DBIterator *iter = db_iterator(map->pc_db); + struct map_session_data *sd = NULL; - iter = db_iterator(map->pc_db); for( sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter) ) { va_list argscopy; @@ -2263,11 +2263,11 @@ void map_foreachpc(int (*func)(struct map_session_data* sd, va_list args), ...) /// Applies func to all the mobs in the db. /// Stops iterating if func returns -1. -void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list args) { - DBIterator* iter; - struct mob_data* md; +void map_vforeachmob(int (*func)(struct mob_data* md, va_list args), va_list args) +{ + struct DBIterator *iter = db_iterator(map->mobid_db); + struct mob_data *md = NULL; - iter = db_iterator(map->mobid_db); for (md = dbi_first(iter); dbi_exists(iter); md = dbi_next(iter)) { va_list argscopy; int ret; @@ -2294,11 +2294,11 @@ void map_foreachmob(int (*func)(struct mob_data* md, va_list args), ...) { /// Applies func to all the npcs in the db. /// Stops iterating if func returns -1. -void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list args) { - DBIterator* iter; - struct block_list* bl; +void map_vforeachnpc(int (*func)(struct npc_data* nd, va_list args), va_list args) +{ + struct DBIterator *iter = db_iterator(map->id_db); + struct block_list *bl = NULL; - iter = db_iterator(map->id_db); for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { if (bl->type == BL_NPC) { struct npc_data *nd = BL_UCAST(BL_NPC, bl); @@ -2328,11 +2328,11 @@ void map_foreachnpc(int (*func)(struct npc_data* nd, va_list args), ...) { /// Applies func to everything in the db. /// Stops iterating gif func returns -1. -void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list args) { - DBIterator* iter; - struct block_list* bl; +void map_vforeachregen(int (*func)(struct block_list* bl, va_list args), va_list args) +{ + struct DBIterator *iter = db_iterator(map->regen_db); + struct block_list *bl = NULL; - iter = db_iterator(map->regen_db); for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { va_list argscopy; int ret; @@ -2359,11 +2359,11 @@ void map_foreachregen(int (*func)(struct block_list* bl, va_list args), ...) { /// Applies func to everything in the db. /// Stops iterating if func returns -1. -void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list args) { - DBIterator* iter; - struct block_list* bl; +void map_vforeachiddb(int (*func)(struct block_list* bl, va_list args), va_list args) +{ + struct DBIterator *iter = db_iterator(map->id_db); + struct block_list *bl = NULL; - iter = db_iterator(map->id_db); for (bl = dbi_first(iter); dbi_exists(iter); bl = dbi_next(iter)) { va_list argscopy; int ret; @@ -2390,11 +2390,10 @@ void map_foreachiddb(int (*func)(struct block_list* bl, va_list args), ...) { /// Iterator. /// Can filter by bl type. -struct s_mapiterator -{ - enum e_mapitflags flags;// flags for special behaviour - enum bl_type types;// what bl types to return - DBIterator* dbi;// database iterator +struct s_mapiterator { + enum e_mapitflags flags; ///< flags for special behaviour + enum bl_type types; ///< what bl types to return + struct DBIterator *dbi; ///< database iterator }; /// Returns true if the block_list matches the description in the iterator. @@ -3023,9 +3022,10 @@ bool map_iwall_set(int16 m, int16 x, int16 y, int size, int8 dir, bool shootable return true; } -void map_iwall_get(struct map_session_data *sd) { +void map_iwall_get(struct map_session_data *sd) +{ struct iwall_data *iwall; - DBIterator* iter; + struct DBIterator *iter; int16 x1, y1; int i; @@ -3301,9 +3301,10 @@ void map_zone_clear_single(struct map_zone_data *zone) { /** * **/ -void map_zone_db_clear(void) { - struct map_zone_data *zone; - DBIterator *iter = db_iterator(map->zone_db); +void map_zone_db_clear(void) +{ + struct DBIterator *iter = db_iterator(map->zone_db); + struct map_zone_data *zone = NULL; for(zone = dbi_first(iter); dbi_exists(iter); zone = dbi_next(iter)) { map->zone_clear_single(zone); diff --git a/src/map/mapreg_sql.c b/src/map/mapreg_sql.c index d9d8755c2..8a8f9f309 100644 --- a/src/map/mapreg_sql.c +++ b/src/map/mapreg_sql.c @@ -236,10 +236,11 @@ void script_load_mapreg(void) { /** * Saves permanent variables to database. */ -void script_save_mapreg(void) { +void script_save_mapreg(void) +{ if (mapreg->dirty) { - DBIterator *iter = db_iterator(mapreg->regs.vars); - struct mapreg_save *m; + struct DBIterator *iter = db_iterator(mapreg->regs.vars); + struct mapreg_save *m = NULL; for (m = dbi_first(iter); dbi_exists(iter); m = dbi_next(iter)) { if (m->save) { int num = script_getvarid(m->uid); diff --git a/src/map/npc.c b/src/map/npc.c index 68bb81031..291f3c172 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -1632,7 +1632,7 @@ bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) { * @param master id of the original npc **/ void npc_trader_update(int master) { - DBIterator* iter; + struct DBIterator *iter; struct block_list* bl; struct npc_data *master_nd = map->id2nd(master); @@ -4569,9 +4569,8 @@ void npc_read_event_script(void) {"Kill NPC Event",script->config.kill_mob_event_name}, }; - for (i = 0; i < NPCE_MAX; i++) - { - DBIterator* iter; + for (i = 0; i < NPCE_MAX; i++) { + struct DBIterator *iter; union DBKey key; struct DBData *data; @@ -4756,8 +4755,9 @@ int npc_reload(void) { } //Unload all npc in the given file -bool npc_unloadfile( const char* filepath ) { - DBIterator * iter = db_iterator(npc->name_db); +bool npc_unloadfile(const char *filepath) +{ + struct DBIterator *iter = db_iterator(npc->name_db); struct npc_data* nd = NULL; bool found = false; diff --git a/src/map/party.c b/src/map/party.c index 049c42b1f..551c4d56f 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -147,9 +147,8 @@ struct party_data* party_searchname(const char* str) { struct party_data* p; - DBIterator *iter = db_iterator(party->db); - for( p = dbi_first(iter); dbi_exists(iter); p = dbi_next(iter) ) - { + struct DBIterator *iter = db_iterator(party->db); + for (p = dbi_first(iter); dbi_exists(iter); p = dbi_next(iter)) { if( strncmpi(p->party.name,str,NAME_LENGTH) == 0 ) break; } @@ -872,10 +871,11 @@ int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id return 0; } -int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data) { +int party_send_xy_timer(int tid, int64 tick, int id, intptr_t data) +{ + struct DBIterator *iter = db_iterator(party->db); struct party_data* p; - DBIterator *iter = db_iterator(party->db); // for each existing party, for( p = dbi_first(iter); dbi_exists(iter); p = dbi_next(iter) ) { @@ -1285,7 +1285,7 @@ void party_recruit_search(struct map_session_data *sd, short level, short mapid, int count = 0; struct party_booking_ad_info* result_list[PARTY_BOOKING_RESULTS]; bool more_result = false; - DBIterator* iter = db_iterator(party->booking_db); + struct DBIterator *iter = db_iterator(party->booking_db); memset(result_list, 0, sizeof(result_list)); @@ -1316,7 +1316,7 @@ void party_booking_search(struct map_session_data *sd, short level, short mapid, int count = 0; struct party_booking_ad_info* result_list[PARTY_BOOKING_RESULTS]; bool more_result = false; - DBIterator* iter = db_iterator(party->booking_db); + struct DBIterator *iter = db_iterator(party->booking_db); memset(result_list, 0, sizeof(result_list)); diff --git a/src/map/pc_groups.c b/src/map/pc_groups.c index 5b12a45dd..ccda34b1c 100644 --- a/src/map/pc_groups.c +++ b/src/map/pc_groups.c @@ -75,7 +75,7 @@ static void read_config(void) { if (groups != NULL) { GroupSettings *group_settings = NULL; - DBIterator *iter = NULL; + struct DBIterator *iter = NULL; int i, loop = 0; group_count = libconfig->setting_length(groups); diff --git a/src/map/script.c b/src/map/script.c index bb6651ca5..5d7698f75 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -4261,8 +4261,9 @@ void run_script(struct script_code *rootscript, int pos, int rid, int oid) { script->run_main(st); } -void script_stop_instances(struct script_code *code) { - DBIterator *iter; +void script_stop_instances(struct script_code *code) +{ + struct DBIterator *iter; struct script_state* st; if( !script->active_scripts ) @@ -4723,9 +4724,10 @@ void script_generic_ui_array_expand (unsigned int plus) { /*========================================== * Destructor *------------------------------------------*/ -void do_final_script(void) { +void do_final_script(void) +{ int i; - DBIterator *iter; + struct DBIterator *iter; struct script_state *st; #ifdef SCRIPT_DEBUG_HASH @@ -4916,8 +4918,7 @@ void script_load_translations(void) { libconfig->destroy(&translations_conf); if( total ) { - DBIterator *main_iter; - DBIterator *sub_iter; + struct DBIterator *main_iter, *sub_iter; DBMap *string_db; struct string_translation *st = NULL; uint32 j = 0; @@ -5138,7 +5139,7 @@ int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_lis if( db_size(string_db) ) { struct string_translation *st = NULL; - DBIterator *iter = db_iterator(string_db); + struct DBIterator *iter = db_iterator(string_db); for( st = dbi_first(iter); dbi_exists(iter); st = dbi_next(iter) ) { aFree(st); @@ -5218,9 +5219,10 @@ void do_init_script(bool minimal) { script->load_translations(); } -int script_reload(void) { +int script_reload(void) +{ int i; - DBIterator *iter; + struct DBIterator *iter; struct script_state *st; #ifdef ENABLE_CASE_CHECK @@ -16995,8 +16997,9 @@ BUILDIN(sleep2) { /// Awakes all the sleep timers of the target npc /// /// awake ""; -BUILDIN(awake) { - DBIterator *iter; +BUILDIN(awake) +{ + struct DBIterator *iter; struct script_state *tst; struct npc_data* nd; -- cgit v1.2.3-70-g09d2 From d9ffa7399bc88ecfaf1f3b17f9f04a743b7f2dd2 Mon Sep 17 00:00:00 2001 From: Haru Date: Sat, 20 Feb 2016 15:20:42 +0100 Subject: Dropped typedef from DBMap Signed-off-by: Haru --- src/char/char.c | 2 +- src/char/char.h | 4 +- src/char/int_auction.h | 6 +- src/char/int_guild.h | 4 +- src/char/int_party.h | 6 +- src/char/inter.c | 2 +- src/common/HPM.c | 2 +- src/common/db.c | 198 ++++++++++++++++++++++++----------------------- src/common/db.h | 107 ++++++++++++------------- src/common/mapindex.h | 6 +- src/common/socket.c | 2 +- src/login/login.h | 4 +- src/map/atcommand.h | 4 +- src/map/battleground.h | 2 +- src/map/channel.h | 8 +- src/map/chat.h | 5 +- src/map/chrif.h | 2 +- src/map/guild.h | 8 +- src/map/itemdb.h | 4 +- src/map/map.h | 20 ++--- src/map/npc.c | 2 +- src/map/npc.h | 8 +- src/map/party.h | 4 +- src/map/pc.h | 4 +- src/map/pc_groups.h | 6 +- src/map/script.c | 10 ++- src/map/script.h | 12 +-- src/map/skill.h | 12 +-- src/map/storage.h | 2 +- src/map/vending.h | 5 +- src/plugins/HPMHooking.c | 2 +- 31 files changed, 239 insertions(+), 224 deletions(-) (limited to 'src/map') diff --git a/src/char/char.c b/src/char/char.c index 01262fdcb..929473e33 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -162,7 +162,7 @@ unsigned short skillid2idx[MAX_SKILL_ID]; //----------------------------------------------------- #define AUTH_TIMEOUT 30000 -static DBMap* auth_db; // int account_id -> struct char_auth_node* +static struct DBMap *auth_db; // int account_id -> struct char_auth_node* //----------------------------------------------------- // Online User Database diff --git a/src/char/char.h b/src/char/char.h index 4fe602c45..9cde18e96 100644 --- a/src/char/char.h +++ b/src/char/char.h @@ -98,8 +98,8 @@ struct char_interface { struct mmo_map_server server[MAX_MAP_SERVERS]; int login_fd; int char_fd; - DBMap* online_char_db; // int account_id -> struct online_char_data* - DBMap* char_db_; + struct DBMap *online_char_db; // int account_id -> struct online_char_data* + struct DBMap *char_db_; char userid[NAME_LENGTH]; char passwd[NAME_LENGTH]; char server_name[20]; diff --git a/src/char/int_auction.h b/src/char/int_auction.h index 29b068dfd..ccd5bfbf5 100644 --- a/src/char/int_auction.h +++ b/src/char/int_auction.h @@ -22,14 +22,16 @@ #define CHAR_INT_AUCTION_H #include "common/hercules.h" -#include "common/db.h" #include "common/mmo.h" +/* Forward Declarations */ +struct DBMap; // common/db.h + /** * inter_auction_interface interface **/ struct inter_auction_interface { - DBMap* db; // int auction_id -> struct auction_data* + struct DBMap *db; // int auction_id -> struct auction_data* int (*count) (int char_id, bool buy); void (*save) (struct auction_data *auction); unsigned int (*create) (struct auction_data *auction); diff --git a/src/char/int_guild.h b/src/char/int_guild.h index 31c334cbf..252c2dc47 100644 --- a/src/char/int_guild.h +++ b/src/char/int_guild.h @@ -44,8 +44,8 @@ enum { * inter_guild interface **/ struct inter_guild_interface { - DBMap* guild_db; // int guild_id -> struct guild* - DBMap* castle_db; + struct DBMap *guild_db; // int guild_id -> struct guild* + struct DBMap *castle_db; unsigned int exp[MAX_GUILDLEVEL]; int (*save_timer) (int tid, int64 tick, int id, intptr_t data); diff --git a/src/char/int_party.h b/src/char/int_party.h index e6ad75bb8..62fef4192 100644 --- a/src/char/int_party.h +++ b/src/char/int_party.h @@ -22,9 +22,11 @@ #define CHAR_INT_PARTY_H #include "common/hercules.h" -#include "common/db.h" #include "common/mmo.h" +/* Forward Declarations */ +struct DBMap; // common/db.h + //Party Flags on what to save/delete. enum { PS_CREATE = 0x01, //Create a new party entry (index holds leader's info) @@ -47,7 +49,7 @@ struct party_data { **/ struct inter_party_interface { struct party_data *pt; - DBMap* db; // int party_id -> struct party_data* + struct DBMap *db; // int party_id -> struct party_data* int (*check_lv) (struct party_data *p); void (*calc_state) (struct party_data *p); int (*tosql) (struct party *p, int flag, int index); diff --git a/src/char/inter.c b/src/char/inter.c index cf648c238..9fea2885c 100644 --- a/src/char/inter.c +++ b/src/char/inter.c @@ -83,7 +83,7 @@ struct WisData { int64 tick; unsigned char src[24], dst[24], msg[512]; }; -static DBMap* wis_db = NULL; // int wis_id -> struct WisData* +static struct DBMap *wis_db = NULL; // int wis_id -> struct WisData* static int wis_dellist[WISDELLIST_MAX], wis_delnum; #define MAX_JOB_NAMES 150 diff --git a/src/common/HPM.c b/src/common/HPM.c index fa4025fb8..d3d050d27 100644 --- a/src/common/HPM.c +++ b/src/common/HPM.c @@ -55,7 +55,7 @@ struct HPM_interface *HPM; /** * (char*) data name -> (unsigned int) HPMDataCheck[] index **/ -DBMap *datacheck_db; +struct DBMap *datacheck_db; int datacheck_version; const struct s_HPMDataCheck *datacheck_data; diff --git a/src/common/db.c b/src/common/db.c index fa1a6d65c..7abe4513a 100644 --- a/src/common/db.c +++ b/src/common/db.c @@ -110,8 +110,8 @@ struct db_interface *DB; * enum DBNodeColor - Enumeration of colors of the nodes. * * DBNode - Structure of a node in RED-BLACK trees. * * struct db_free - Structure that holds a deleted node to be freed. * - * DBMap_impl - Structure of the database. * - * stats - Statistics about the database system. * + * struct DBMap_impl - Structure of the database. * + * stats - Statistics about the database system. * *****************************************************************************/ /** @@ -129,7 +129,7 @@ struct db_interface *DB; /** * Size of the hashtable in the database. * @private - * @see DBMap_impl#ht + * @see struct DBMap_impl#ht */ #define HASH_SIZE (256+27) @@ -153,7 +153,7 @@ enum DBNodeColor { * @param deleted If the node is deleted * @param color Color of the node * @private - * @see DBMap_impl#ht + * @see struct DBMap_impl#ht */ typedef struct dbn { // Tree structure @@ -173,7 +173,7 @@ typedef struct dbn { * @param node Deleted node * @param root Address to the root of the tree * @private - * @see DBMap_impl#free_list + * @see struct DBMap_impl#free_list */ struct db_free { DBNode *node; @@ -202,7 +202,7 @@ struct db_free { * @private * @see #db_alloc() */ -typedef struct DBMap_impl { +struct DBMap_impl { // Database interface struct DBMap vtable; // File and line of allocation @@ -225,7 +225,7 @@ typedef struct DBMap_impl { uint32 item_count; unsigned short maxlen; unsigned global_lock : 1; -} DBMap_impl; +}; /** * Complete iterator structure. @@ -235,13 +235,13 @@ typedef struct DBMap_impl { * @param node Current node * @private * @see struct DBIterator - * @see #DBMap_impl + * @see struct DBMap_impl * @see #DBNode */ struct DBIterator_impl { // Iterator interface struct DBIterator vtable; - DBMap_impl* db; + struct DBMap_impl *db; int ht_index; DBNode *node; }; @@ -509,7 +509,7 @@ static void db_rebalance(DBNode *node, DBNode **root) * @private * @see #db_rotate_left(DBNode *,DBNode **) * @see #db_rotate_right(DBNode *,DBNode **) - * @see #db_free_unlock(DBMap_impl*) + * @see #db_free_unlock() */ static void db_rebalance_erase(DBNode *node, DBNode **root) { @@ -671,12 +671,12 @@ static int db_is_key_null(enum DBType type, union DBKey key) * @param key Key to be duplicated * @param Duplicated key * @private - * @see #db_free_add(DBMap_impl*,DBNode *,DBNode **) - * @see #db_free_remove(DBMap_impl*,DBNode *) + * @see #db_free_add() + * @see #db_free_remove() * @see #db_obj_put() * @see #db_dup_key_free() */ -static union DBKey db_dup_key(DBMap_impl* db, union DBKey key) +static union DBKey db_dup_key(struct DBMap_impl *db, union DBKey key) { char *str; size_t len; @@ -704,7 +704,7 @@ static union DBKey db_dup_key(DBMap_impl* db, union DBKey key) * @private * @see #db_dup_key() */ -static void db_dup_key_free(DBMap_impl* db, union DBKey key) +static void db_dup_key_free(struct DBMap_impl *db, union DBKey key) { DB_COUNTSTAT(db_dup_key_free); switch (db->type) { @@ -727,13 +727,13 @@ static void db_dup_key_free(DBMap_impl* db, union DBKey key) * @param node Target node * @private * @see #struct db_free - * @see DBMap_impl#free_list - * @see DBMap_impl#free_count - * @see DBMap_impl#free_max + * @see struct DBMap_impl#free_list + * @see struct DBMap_impl#free_count + * @see struct DBMap_impl#free_max * @see #db_obj_remove() - * @see #db_free_remove(DBMap_impl*,DBNode *) + * @see #db_free_remove() */ -static void db_free_add(DBMap_impl* db, DBNode *node, DBNode **root) +static void db_free_add(struct DBMap_impl *db, DBNode *node, DBNode **root) { union DBKey old_key; @@ -777,12 +777,12 @@ static void db_free_add(DBMap_impl* db, DBNode *node, DBNode **root) * @param node Node being removed from free_list * @private * @see #struct db_free - * @see DBMap_impl#free_list - * @see DBMap_impl#free_count + * @see struct DBMap_impl#free_list + * @see struct DBMap_impl#free_count * @see #db_obj_put() - * @see #db_free_add(DBMap_impl*,DBNode**,DBNode*) + * @see #db_free_add() */ -static void db_free_remove(DBMap_impl* db, DBNode *node) +static void db_free_remove(struct DBMap_impl *db, DBNode *node) { unsigned int i; @@ -808,10 +808,10 @@ static void db_free_remove(DBMap_impl* db, DBNode *node) * Increment the free_lock of the database. * @param db Target database * @private - * @see DBMap_impl#free_lock - * @see #db_unlock(DBMap_impl*) + * @see struct DBMap_impl#free_lock + * @see #db_unlock() */ -static void db_free_lock(DBMap_impl* db) +static void db_free_lock(struct DBMap_impl *db) { DB_COUNTSTAT(db_free_lock); if (db->free_lock == (unsigned int)~0) { @@ -830,11 +830,11 @@ static void db_free_lock(DBMap_impl* db) * NOTE: Frees the duplicated keys of the nodes * @param db Target database * @private - * @see DBMap_impl#free_lock + * @see struct DBMap_impl#free_lock * @see #db_free_dbn(DBNode*) - * @see #db_lock(DBMap_impl*) + * @see #db_lock() */ -static void db_free_unlock(DBMap_impl* db) +static void db_free_unlock(struct DBMap_impl *db) { unsigned int i; @@ -1461,7 +1461,7 @@ bool dbit_obj_exists(struct DBIterator *self) * @param out_data Data of the removed entry. * @return 1 if entry was removed, 0 otherwise * @protected - * @see DBMap#remove + * @see struct DBMap#remove() * @see struct DBIterator#remove() */ int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data) @@ -1474,7 +1474,7 @@ int dbit_obj_remove(struct DBIterator *self, struct DBData *out_data) node = it->node; if( node && !node->deleted ) { - DBMap_impl* db = it->db; + struct DBMap_impl *db = it->db; if( db->cache == node ) db->cache = NULL; db->release(node->key, node->data, DB_RELEASE_DATA); @@ -1511,9 +1511,9 @@ void dbit_obj_destroy(struct DBIterator *self) * @return New iterator * @protected */ -static struct DBIterator *db_obj_iterator(DBMap* self) +static struct DBIterator *db_obj_iterator(struct DBMap *self) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; struct DBIterator_impl *it; DB_COUNTSTAT(db_iterator); @@ -1541,11 +1541,11 @@ static struct DBIterator *db_obj_iterator(DBMap* self) * @param key Key that identifies the entry * @return true is the entry exists * @protected - * @see DBMap#exists + * @see struct DBMap#exists() */ -static bool db_obj_exists(DBMap* self, union DBKey key) +static bool db_obj_exists(struct DBMap *self, union DBKey key) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; DBNode *node; bool found = false; @@ -1591,11 +1591,11 @@ static bool db_obj_exists(DBMap* self, union DBKey key) * @param key Key that identifies the entry * @return Data of the entry or NULL if not found * @protected - * @see DBMap#get + * @see struct DBMap#get() */ -static struct DBData *db_obj_get(DBMap* self, union DBKey key) +static struct DBData *db_obj_get(struct DBMap *self, union DBKey key) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; DBNode *node; struct DBData *data = NULL; @@ -1650,11 +1650,11 @@ static struct DBData *db_obj_get(DBMap* self, union DBKey key) * @param ... Extra arguments for match * @return The number of entries that matched * @protected - * @see DBMap#vgetall + * @see struct DBMap#vgetall() */ -static unsigned int db_obj_vgetall(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, va_list args) +static unsigned int db_obj_vgetall(struct DBMap *self, struct DBData **buf, unsigned int max, DBMatcher match, va_list args) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; unsigned int i; DBNode *node; DBNode *parent; @@ -1707,7 +1707,8 @@ static unsigned int db_obj_vgetall(DBMap* self, struct DBData **buf, unsigned in } /** - * Just calls {@link DBMap#vgetall}. + * Just calls struct DBMap#vgetall(). + * * Get the data of the entries matched by match. * It puts a maximum of max entries into buf. * If buf is NULL, it only counts the matches. @@ -1721,10 +1722,10 @@ static unsigned int db_obj_vgetall(DBMap* self, struct DBData **buf, unsigned in * @param ... Extra arguments for match * @return The number of entries that matched * @protected - * @see DBMap#vgetall - * @see DBMap#getall + * @see struct DBMap#vgetall() + * @see struct DBMap#getall() */ -static unsigned int db_obj_getall(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, ...) +static unsigned int db_obj_getall(struct DBMap *self, struct DBData **buf, unsigned int max, DBMatcher match, ...) { va_list args; unsigned int ret; @@ -1748,11 +1749,11 @@ static unsigned int db_obj_getall(DBMap* self, struct DBData **buf, unsigned int * @param args Extra arguments for create * @return Data of the entry * @protected - * @see DBMap#vensure + * @see struct DBMap#vensure() */ -static struct DBData *db_obj_vensure(DBMap* self, union DBKey key, DBCreateData create, va_list args) +static struct DBData *db_obj_vensure(struct DBMap *self, union DBKey key, DBCreateData create, va_list args) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; DBNode *node; DBNode *parent = NULL; unsigned int hash; @@ -1837,7 +1838,8 @@ static struct DBData *db_obj_vensure(DBMap* self, union DBKey key, DBCreateData } /** - * Just calls {@link DBMap#vensure}. + * Just calls struct DBMap#vensure(). + * * Get the data of the entry identified by the key. * If the entry does not exist, an entry is added with the data returned by * create. @@ -1847,10 +1849,10 @@ static struct DBData *db_obj_vensure(DBMap* self, union DBKey key, DBCreateData * @param ... Extra arguments for create * @return Data of the entry * @protected - * @see DBMap#vensure - * @see DBMap#ensure + * @see struct DBMap#vensure() + * @see struct DBMap#ensure() */ -static struct DBData *db_obj_ensure(DBMap* self, union DBKey key, DBCreateData create, ...) +static struct DBData *db_obj_ensure(struct DBMap *self, union DBKey key, DBCreateData create, ...) { va_list args; struct DBData *ret = NULL; @@ -1875,13 +1877,13 @@ static struct DBData *db_obj_ensure(DBMap* self, union DBKey key, DBCreateData c * @return 1 if if the entry already exists, 0 otherwise * @protected * @see #db_malloc_dbn(void) - * @see DBMap#put + * @see struct DBMap#put() * FIXME: If this method fails shouldn't it return another value? * Other functions rely on this to know if they were able to put something [Panikon] */ -static int db_obj_put(DBMap* self, union DBKey key, struct DBData data, struct DBData *out_data) +static int db_obj_put(struct DBMap *self, union DBKey key, struct DBData data, struct DBData *out_data) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; DBNode *node; DBNode *parent = NULL; int c = 0, retval = 0; @@ -1975,18 +1977,18 @@ static int db_obj_put(DBMap* self, union DBKey key, struct DBData data, struct D /** * Remove an entry from the database. * Puts the previous data in out_data, if out_data is not NULL. (unless data has been released) - * NOTE: The key (of the database) is released in {@link #db_free_add(DBMap_impl*,DBNode*,DBNode **)}. + * NOTE: The key (of the database) is released in #db_free_add(). * @param self Interface of the database * @param key Key that identifies the entry * @param out_data Previous data if the entry exists * @return 1 if if the entry already exists, 0 otherwise * @protected - * @see #db_free_add(DBMap_impl*,DBNode*,DBNode **) - * @see DBMap#remove + * @see #db_free_add() + * @see struct DBMap#remove() */ -static int db_obj_remove(DBMap* self, union DBKey key, struct DBData *out_data) +static int db_obj_remove(struct DBMap *self, union DBKey key, struct DBData *out_data) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; DBNode *node; unsigned int hash; int retval = 0; @@ -2037,11 +2039,11 @@ static int db_obj_remove(DBMap* self, union DBKey key, struct DBData *out_data) * @param args Extra arguments for func * @return Sum of the values returned by func * @protected - * @see DBMap#vforeach + * @see struct DBMap#vforeach() */ -static int db_obj_vforeach(DBMap* self, DBApply func, va_list args) +static int db_obj_vforeach(struct DBMap *self, DBApply func, va_list args) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; unsigned int i; int sum = 0; DBNode *node; @@ -2088,7 +2090,8 @@ static int db_obj_vforeach(DBMap* self, DBApply func, va_list args) } /** - * Just calls {@link DBMap#vforeach}. + * Just calls struct DBMap#vforeach(). + * * Apply func to every entry in the database. * Returns the sum of values returned by func. * @param self Interface of the database @@ -2096,10 +2099,10 @@ static int db_obj_vforeach(DBMap* self, DBApply func, va_list args) * @param ... Extra arguments for func * @return Sum of the values returned by func * @protected - * @see DBMap#vforeach - * @see DBMap#foreach + * @see struct DBMap#vforeach() + * @see struct DBMap#foreach() */ -static int db_obj_foreach(DBMap* self, DBApply func, ...) +static int db_obj_foreach(struct DBMap *self, DBApply func, ...) { va_list args; int ret; @@ -2123,11 +2126,11 @@ static int db_obj_foreach(DBMap* self, DBApply func, ...) * @param args Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#vclear + * @see struct DBMap#vclear() */ -static int db_obj_vclear(DBMap* self, DBApply func, va_list args) +static int db_obj_vclear(struct DBMap *self, DBApply func, va_list args) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; int sum = 0; unsigned int i; DBNode *node; @@ -2184,7 +2187,8 @@ static int db_obj_vclear(DBMap* self, DBApply func, va_list args) } /** - * Just calls {@link DBMap#vclear}. + * Just calls struct DBMap#vclear(). + * * Removes all entries from the database. * Before deleting an entry, func is applied to it. * Releases the key and the data. @@ -2196,10 +2200,10 @@ static int db_obj_vclear(DBMap* self, DBApply func, va_list args) * @param ... Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#vclear - * @see DBMap#clear + * @see struct DBMap#vclear() + * @see struct DBMap#clear() */ -static int db_obj_clear(DBMap* self, DBApply func, ...) +static int db_obj_clear(struct DBMap *self, DBApply func, ...) { va_list args; int ret; @@ -2224,11 +2228,11 @@ static int db_obj_clear(DBMap* self, DBApply func, ...) * @param args Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#vdestroy + * @see struct DBMap#vdestroy() */ -static int db_obj_vdestroy(DBMap* self, DBApply func, va_list args) +static int db_obj_vdestroy(struct DBMap *self, DBApply func, va_list args) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; int sum; DB_COUNTSTAT(db_vdestroy); @@ -2267,7 +2271,7 @@ static int db_obj_vdestroy(DBMap* self, DBApply func, va_list args) } /** - * Just calls {@link DBMap#db_vdestroy}. + * Just calls struct DBMap#db_vdestroy(). * Finalize the database, feeing all the memory it uses. * Before deleting an entry, func is applied to it. * Releases the key and the data. @@ -2279,10 +2283,10 @@ static int db_obj_vdestroy(DBMap* self, DBApply func, va_list args) * @param ... Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#vdestroy - * @see DBMap#destroy + * @see struct DBMap#vdestroy() + * @see struct DBMap#destroy() */ -static int db_obj_destroy(DBMap* self, DBApply func, ...) +static int db_obj_destroy(struct DBMap *self, DBApply func, ...) { va_list args; int ret; @@ -2301,12 +2305,12 @@ static int db_obj_destroy(DBMap* self, DBApply func, ...) * @param self Interface of the database * @return Size of the database * @protected - * @see DBMap_impl#item_count - * @see DBMap#size + * @see struct DBMap_impl#item_count + * @see struct DBMap#size() */ -static unsigned int db_obj_size(DBMap* self) +static unsigned int db_obj_size(struct DBMap *self) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; unsigned int item_count; DB_COUNTSTAT(db_size); @@ -2324,12 +2328,12 @@ static unsigned int db_obj_size(DBMap* self) * @param self Interface of the database * @return Type of the database * @protected - * @see DBMap_impl#type - * @see DBMap#type + * @see struct DBMap_impl#type + * @see struct DBMap#type() */ -static enum DBType db_obj_type(DBMap* self) +static enum DBType db_obj_type(struct DBMap *self) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl *db = (struct DBMap_impl *)self; enum DBType type; DB_COUNTSTAT(db_type); @@ -2348,12 +2352,12 @@ static enum DBType db_obj_type(DBMap* self) * @param self Interface of the database * @return Options of the database * @protected - * @see DBMap_impl#options - * @see DBMap#options + * @see struct DBMap_impl#options + * @see struct DBMap#options() */ -static enum DBOptions db_obj_options(DBMap* self) +static enum DBOptions db_obj_options(struct DBMap *self) { - DBMap_impl* db = (DBMap_impl*)self; + struct DBMap_impl* db = (struct DBMap_impl *)self; enum DBOptions options; DB_COUNTSTAT(db_options); @@ -2544,12 +2548,12 @@ DBReleaser db_custom_release(enum DBReleaseOption which) * databases. If 0, the maximum number of maxlen is used (64K). * @return The interface of the database * @public - * @see #DBMap_impl + * @see struct DBMap_impl * @see #db_fix_options() */ -DBMap* db_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen) +struct DBMap *db_alloc(const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen) { - DBMap_impl* db; + struct DBMap_impl *db; unsigned int i; char ers_name[50]; diff --git a/src/common/db.h b/src/common/db.h index a867b011f..60b5b32ac 100644 --- a/src/common/db.h +++ b/src/common/db.h @@ -43,7 +43,7 @@ * 2007/11/09 - Added an iterator to the database. * * 2.1 (Athena build #???#) - Portability fix * * - Fixed the portability of casting to union and added the functions * - * DBMap#ensure() and {@link DBMap#clear(DBMap,DBApply,...)}. * + * struct DBMap#ensure() and struct DBMap#clear(). * * 2.0 (Athena build 4859) - Transition version * * - Almost everything recoded with a strategy similar to objects, * * database structure is maintained. * @@ -72,12 +72,12 @@ * enum DBDataType - Enumeration of data types. * * struct DBData - Struct for used data types. * * DBApply - Format of functions applied to the databases. * - * DBMatcher - Format of matchers used in DBMap::getall. * + * DBMatcher - Format of matchers used in struct DBMap#getall(). * * DBComparator - Format of the comparators used by the databases. * * DBHasher - Format of the hashers used by the databases. * * DBReleaser - Format of the releasers used by the databases. * * struct DBIterator - Database iterator. * - * DBMap - Database interface. * + * struct DBMap - Database interface. * *****************************************************************************/ /** @@ -135,7 +135,7 @@ enum DBType { * @param DB_OPT_RELEASE_KEY Releases the key. * @param DB_OPT_RELEASE_DATA Releases the data whenever an entry is removed * from the database. - * WARNING: for functions that return the data (like DBMap::remove), + * WARNING: for functions that return the data (like struct DBMap#remove()), * a dangling pointer will be returned. * @param DB_OPT_RELEASE_BOTH Releases both key and data. * @param DB_OPT_ALLOW_NULL_KEY Allow NULL keys in the database. @@ -162,9 +162,9 @@ enum DBOptions { * @param str Type of key for DB_STRING and DB_ISTRING databases * @public * @see enum DBType - * @see DBMap#get - * @see DBMap#put - * @see DBMap#remove + * @see struct DBMap#get() + * @see struct DBMap#put() + * @see struct DBMap#remove() */ union DBKey { int i; @@ -213,8 +213,8 @@ struct DBData { * @param args Extra arguments of the function * @return Data identified by the key to be put in the database * @public - * @see DBMap#vensure - * @see DBMap#ensure + * @see struct DBMap#vensure() + * @see struct DBMap#ensure() */ typedef struct DBData (*DBCreateData)(union DBKey key, va_list args); @@ -228,10 +228,10 @@ typedef struct DBData (*DBCreateData)(union DBKey key, va_list args); * @param args Extra arguments of the function * @return Value to be added up by the function that is applying this * @public - * @see DBMap#vforeach - * @see DBMap#foreach - * @see DBMap#vdestroy - * @see DBMap#destroy + * @see struct DBMap#vforeach() + * @see struct DBMap#foreach() + * @see struct DBMap#vdestroy() + * @see struct DBMap#destroy() */ typedef int (*DBApply)(union DBKey key, struct DBData *data, va_list args); @@ -244,7 +244,7 @@ typedef int (*DBApply)(union DBKey key, struct DBData *data, va_list args); * @param args Extra arguments of the function * @return 0 if a match, another number otherwise * @public - * @see DBMap#getall + * @see struct DBMap#getall() */ typedef int (*DBMatcher)(union DBKey key, struct DBData data, va_list args); @@ -288,8 +288,6 @@ typedef uint64 (*DBHasher)(union DBKey key, unsigned short maxlen); */ typedef void (*DBReleaser)(union DBKey key, struct DBData data, enum DBReleaseOption which); -typedef struct DBMap DBMap; - /** * Database iterator. * @@ -300,7 +298,7 @@ typedef struct DBMap DBMap; * struct DBIterator#destroy() as soon as possible. * * @public - * @see #DBMap + * @see struct DBMap */ struct DBIterator { /** @@ -368,7 +366,7 @@ struct DBIterator { * @param out_data Data of the removed entry. * @return 1 if entry was removed, 0 otherwise * @protected - * @see DBMap#remove + * @see struct DBMap#remove() */ int (*remove)(struct DBIterator *self, struct DBData *out_data); @@ -398,7 +396,7 @@ struct DBMap { * @return New iterator * @protected */ - struct DBIterator *(*iterator)(DBMap* self); + struct DBIterator *(*iterator)(struct DBMap *self); /** * Returns true if the entry exists. @@ -407,7 +405,7 @@ struct DBMap { * @return true is the entry exists * @protected */ - bool (*exists)(DBMap* self, union DBKey key); + bool (*exists)(struct DBMap *self, union DBKey key); /** * Get the data of the entry identified by the key. @@ -416,10 +414,11 @@ struct DBMap { * @return Data of the entry or NULL if not found * @protected */ - struct DBData *(*get)(DBMap* self, union DBKey key); + struct DBData *(*get)(struct DBMap *self, union DBKey key); /** - * Just calls {@link DBMap#vgetall}. + * Just calls struct DBMap#vgetall(). + * * Get the data of the entries matched by match. * It puts a maximum of max entries into buf. * If buf is NULL, it only counts the matches. @@ -433,9 +432,9 @@ struct DBMap { * @param ... Extra arguments for match * @return The number of entries that matched * @protected - * @see DBMap#vgetall(DBMap*,void **,unsigned int,DBMatcher,va_list) + * @see struct DBMap#vgetall() */ - unsigned int (*getall)(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, ...); + unsigned int (*getall)(struct DBMap *self, struct DBData **buf, unsigned int max, DBMatcher match, ...); /** * Get the data of the entries matched by match. @@ -451,12 +450,12 @@ struct DBMap { * @param ... Extra arguments for match * @return The number of entries that matched * @protected - * @see DBMap#getall(DBMap*,void **,unsigned int,DBMatcher,...) + * @see struct DBMap#getall() */ - unsigned int (*vgetall)(DBMap* self, struct DBData **buf, unsigned int max, DBMatcher match, va_list args); + unsigned int (*vgetall)(struct DBMap *self, struct DBData **buf, unsigned int max, DBMatcher match, va_list args); /** - * Just calls DBMap#vensure. + * Just calls struct DBMap#vensure(). * * Get the data of the entry identified by the key. If the entry does * not exist, an entry is added with the data returned by `create`. @@ -467,9 +466,9 @@ struct DBMap { * @param ... Extra arguments for create * @return Data of the entry * @protected - * @see DBMap#vensure() + * @see struct DBMap#vensure() */ - struct DBData *(*ensure)(DBMap* self, union DBKey key, DBCreateData create, ...); + struct DBData *(*ensure)(struct DBMap *self, union DBKey key, DBCreateData create, ...); /** * Get the data of the entry identified by the key. @@ -481,9 +480,9 @@ struct DBMap { * @param args Extra arguments for create * @return Data of the entry * @protected - * @see DBMap#ensure() + * @see struct DBMap#ensure() */ - struct DBData *(*vensure)(DBMap* self, union DBKey key, DBCreateData create, va_list args); + struct DBData *(*vensure)(struct DBMap *self, union DBKey key, DBCreateData create, va_list args); /** * Put the data identified by the key in the database. @@ -496,7 +495,7 @@ struct DBMap { * @return 1 if if the entry already exists, 0 otherwise * @protected */ - int (*put)(DBMap* self, union DBKey key, struct DBData data, struct DBData *out_data); + int (*put)(struct DBMap *self, union DBKey key, struct DBData data, struct DBData *out_data); /** * Remove an entry from the database. @@ -508,10 +507,11 @@ struct DBMap { * @return 1 if if the entry already exists, 0 otherwise * @protected */ - int (*remove)(DBMap* self, union DBKey key, struct DBData *out_data); + int (*remove)(struct DBMap *self, union DBKey key, struct DBData *out_data); /** - * Just calls {@link DBMap#vforeach}. + * Just calls struct DBMap#vforeach(). + * * Apply func to every entry in the database. * Returns the sum of values returned by func. * @param self Database @@ -519,9 +519,9 @@ struct DBMap { * @param ... Extra arguments for func * @return Sum of the values returned by func * @protected - * @see DBMap#vforeach(DBMap*,DBApply,va_list) + * @see struct DBMap#vforeach() */ - int (*foreach)(DBMap* self, DBApply func, ...); + int (*foreach)(struct DBMap *self, DBApply func, ...); /** * Apply func to every entry in the database. @@ -531,12 +531,13 @@ struct DBMap { * @param args Extra arguments for func * @return Sum of the values returned by func * @protected - * @see DBMap#foreach(DBMap*,DBApply,...) + * @see struct DBMap#foreach() */ - int (*vforeach)(DBMap* self, DBApply func, va_list args); + int (*vforeach)(struct DBMap *self, DBApply func, va_list args); /** - * Just calls {@link DBMap#vclear}. + * Just calls struct DBMap#vclear(). + * * Removes all entries from the database. * Before deleting an entry, func is applied to it. * Releases the key and the data. @@ -546,9 +547,9 @@ struct DBMap { * @param ... Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#vclear(DBMap*,DBApply,va_list) + * @see struct DBMap#vclear() */ - int (*clear)(DBMap* self, DBApply func, ...); + int (*clear)(struct DBMap *self, DBApply func, ...); /** * Removes all entries from the database. @@ -560,12 +561,12 @@ struct DBMap { * @param args Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#clear(DBMap*,DBApply,...) + * @see struct DBMap#clear() */ - int (*vclear)(DBMap* self, DBApply func, va_list args); + int (*vclear)(struct DBMap *self, DBApply func, va_list args); /** - * Just calls {@link DBMap#vdestroy}. + * Just calls DBMap#vdestroy(). * Finalize the database, feeing all the memory it uses. * Before deleting an entry, func is applied to it. * Releases the key and the data. @@ -577,9 +578,9 @@ struct DBMap { * @param ... Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#vdestroy(DBMap*,DBApply,va_list) + * @see struct DBMap#vdestroy() */ - int (*destroy)(DBMap* self, DBApply func, ...); + int (*destroy)(struct DBMap *self, DBApply func, ...); /** * Finalize the database, feeing all the memory it uses. @@ -592,9 +593,9 @@ struct DBMap { * @param args Extra arguments for func * @return Sum of values returned by func * @protected - * @see DBMap#destroy(DBMap*,DBApply,...) + * @see struct DBMap#destroy() */ - int (*vdestroy)(DBMap* self, DBApply func, va_list args); + int (*vdestroy)(struct DBMap *self, DBApply func, va_list args); /** * Return the size of the database (number of items in the database). @@ -602,7 +603,7 @@ struct DBMap { * @return Size of the database * @protected */ - unsigned int (*size)(DBMap* self); + unsigned int (*size)(struct DBMap *self); /** * Return the type of the database. @@ -610,7 +611,7 @@ struct DBMap { * @return Type of the database * @protected */ - enum DBType (*type)(DBMap* self); + enum DBType (*type)(struct DBMap *self); /** * Return the options of the database. @@ -618,7 +619,7 @@ struct DBMap { * @return Options of the database * @protected */ - enum DBOptions (*options)(DBMap* self); + enum DBOptions (*options)(struct DBMap *self); }; @@ -823,13 +824,13 @@ DBReleaser (*custom_release) (enum DBReleaseOption which); * @return The interface of the database * @public * @see enum DBType - * @see #DBMap + * @see struct DBMap * @see #db_default_cmp() * @see #db_default_hash() * @see #db_default_release() * @see #db_fix_options() */ -DBMap* (*alloc) (const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen); +struct DBMap *(*alloc) (const char *file, const char *func, int line, enum DBType type, enum DBOptions options, unsigned short maxlen); /** * Manual cast from 'int' to the union DBKey. diff --git a/src/common/mapindex.h b/src/common/mapindex.h index 3fb170c1f..0ebbeb04b 100644 --- a/src/common/mapindex.h +++ b/src/common/mapindex.h @@ -22,9 +22,11 @@ #define COMMON_MAPINDEX_H #include "common/hercules.h" -#include "common/db.h" #include "common/mmo.h" +/* Forward Declarations */ +struct DBMap; // common/db.h + #define MAX_MAPINDEX 2000 /* wohoo, someone look at all those |: map_default could (or *should*) be a char-server.conf */ @@ -82,7 +84,7 @@ struct mapindex_interface { char config_file[80]; /* mapname (str) -> index (int) */ - DBMap *db; + struct DBMap *db; /* number of entries in the index table */ int num; /* default map name */ diff --git a/src/common/socket.c b/src/common/socket.c index 05ac4ca01..5d4ea06a0 100644 --- a/src/common/socket.c +++ b/src/common/socket.c @@ -975,7 +975,7 @@ static int access_debug = 0; static int ddos_count = 10; static int ddos_interval = 3*1000; static int ddos_autoreset = 10*60*1000; -DBMap *connect_history = NULL; +struct DBMap *connect_history = NULL; static int connect_check_(uint32 ip); diff --git a/src/login/login.h b/src/login/login.h index 81d91eab3..1aca47c85 100644 --- a/src/login/login.h +++ b/src/login/login.h @@ -149,8 +149,8 @@ struct online_login_data { * Login.c Interface **/ struct login_interface { - DBMap* auth_db; - DBMap* online_db; + struct DBMap *auth_db; + struct DBMap *online_db; int fd; struct Login_Config *config; struct AccountDB* accounts; diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 40db16bbf..0e7895825 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -94,8 +94,8 @@ struct atcommand_interface { struct atcmd_binding_data** binding; int binding_count; /* other vars */ - DBMap* db; //name -> AtCommandInfo - DBMap* alias_db; //alias -> AtCommandInfo + struct DBMap *db; //name -> AtCommandInfo + struct DBMap *alias_db; //alias -> AtCommandInfo /** * msg_table[lang_id][msg_id] * Server messages (0-499 reserved for GM commands, 500-999 reserved for others) diff --git a/src/map/battleground.h b/src/map/battleground.h index 05458a9b1..8657beaf8 100644 --- a/src/map/battleground.h +++ b/src/map/battleground.h @@ -102,7 +102,7 @@ struct battleground_interface { struct bg_arena **arena; unsigned char arenas; /* */ - DBMap *team_db; // int bg_id -> struct battleground_data* + struct DBMap *team_db; // int bg_id -> struct battleground_data* unsigned int team_counter; // Next bg_id /* */ void (*init) (bool minimal); diff --git a/src/map/channel.h b/src/map/channel.h index ac1c8f0cb..e8696fd90 100644 --- a/src/map/channel.h +++ b/src/map/channel.h @@ -21,12 +21,12 @@ #define MAP_CHANNEL_H #include "common/hercules.h" -#include "common/db.h" #include "common/mmo.h" /** * Declarations **/ +struct DBMap; // common/db.h struct map_session_data; struct guild; @@ -83,8 +83,8 @@ struct channel_data { char name[HCS_NAME_LENGTH]; char password[HCS_NAME_LENGTH]; unsigned char color; - DBMap *users; - DBMap *banned; + struct DBMap *users; + struct DBMap *banned; unsigned int options; unsigned int owner; enum channel_types type; @@ -94,7 +94,7 @@ struct channel_data { struct channel_interface { /* vars */ - DBMap *db; + struct DBMap *db; struct Channel_Config *config; int (*init) (bool minimal); diff --git a/src/map/chat.h b/src/map/chat.h index 603d8441f..59d61a46e 100644 --- a/src/map/chat.h +++ b/src/map/chat.h @@ -23,8 +23,9 @@ #include "map/map.h" // struct block_list, CHATROOM_TITLE_SIZE #include "common/hercules.h" -#include "common/db.h" +/* Forward Declarations */ +struct DBMap; // common/db.h struct chat_data; struct map_session_data; struct npc_data; @@ -46,7 +47,7 @@ struct chat_data { struct block_list* owner; char npc_event[EVENT_NAME_LENGTH]; /* isn't this a waste? there is a enormous overhead, wouldn't something like skill_blockpc_start be better here? [Ind] */ - DBMap* kick_list; ///< DBMap of users who were kicked from this chat + struct DBMap *kick_list; ///< DBMap of users who were kicked from this chat }; /*===================================== diff --git a/src/map/chrif.h b/src/map/chrif.h index dc946b1c1..4a1e1da47 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -72,7 +72,7 @@ struct chrif_interface { /* */ struct eri *auth_db_ers; //For re-utilizing player login structures. - DBMap* auth_db; // int id -> struct auth_node* + struct DBMap *auth_db; // int id -> struct auth_node* /* */ int packet_len_table[CHRIF_PACKET_LEN_TABLE_SIZE]; int fd; diff --git a/src/map/guild.h b/src/map/guild.h index c0191469b..1f3b74543 100644 --- a/src/map/guild.h +++ b/src/map/guild.h @@ -71,10 +71,10 @@ struct guild_interface { void (*init) (bool minimal); void (*final) (void); /* */ - DBMap* db; // int guild_id -> struct guild* - DBMap* castle_db; // int castle_id -> struct guild_castle* - DBMap* expcache_db; // int char_id -> struct guild_expcache* - DBMap* infoevent_db; // int guild_id -> struct eventlist* + struct DBMap *db; // int guild_id -> struct guild* + struct DBMap *castle_db; // int castle_id -> struct guild_castle* + struct DBMap *expcache_db; // int char_id -> struct guild_expcache* + struct DBMap *infoevent_db; // int guild_id -> struct eventlist* /* */ struct eri *expcache_ers; //For handling of guild exp payment. /* */ diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 58d19db05..d33805174 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -589,10 +589,10 @@ struct itemdb_interface { struct item_combo **combos; unsigned short combo_count; /* */ - DBMap *names; + struct DBMap *names; /* */ struct item_data *array[MAX_ITEMDB]; - DBMap *other;// int nameid -> struct item_data* + struct DBMap *other;// int nameid -> struct item_data* struct item_data dummy; //This is the default dummy item used for non-existant items. [Skotlex] /* */ void (*read_groups) (void); diff --git a/src/map/map.h b/src/map/map.h index 9df2dd586..dbd30febf 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -1004,16 +1004,16 @@ struct map_interface { int16 index2mapid[MAX_MAPINDEX]; /* */ - DBMap* id_db; // int id -> struct block_list* - DBMap* pc_db; // int id -> struct map_session_data* - DBMap* mobid_db; // int id -> struct mob_data* - DBMap* bossid_db; // int id -> struct mob_data* (MVP db) - DBMap* map_db; // unsigned int mapindex -> struct map_data_other_server* - DBMap* nick_db; // int char_id -> struct charid2nick* (requested names of offline characters) - DBMap* charid_db; // int char_id -> struct map_session_data* - DBMap* regen_db; // int id -> struct block_list* (status_natural_heal processing) - DBMap* zone_db; // string => struct map_zone_data - DBMap* iwall_db; + struct DBMap *id_db; // int id -> struct block_list* + struct DBMap *pc_db; // int id -> struct map_session_data* + struct DBMap *mobid_db; // int id -> struct mob_data* + struct DBMap *bossid_db; // int id -> struct mob_data* (MVP db) + struct DBMap *map_db; // unsigned int mapindex -> struct map_data_other_server* + struct DBMap *nick_db; // int char_id -> struct charid2nick* (requested names of offline characters) + struct DBMap *charid_db; // int char_id -> struct map_session_data* + struct DBMap *regen_db; // int id -> struct block_list* (status_natural_heal processing) + struct DBMap *zone_db; // string => struct map_zone_data + struct DBMap *iwall_db; struct block_list **block_free; int block_free_count, block_free_lock, block_free_list_size; struct block_list **bl_list; diff --git a/src/map/npc.c b/src/map/npc.c index 291f3c172..4db5ce625 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -3625,7 +3625,7 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c */ const char *npc_parse_function(const char *w1, const char *w2, const char *w3, const char *w4, const char *start, const char *buffer, const char *filepath, int *retval) { - DBMap* func_db; + struct DBMap *func_db; struct DBData old_data; struct script_code *scriptroot; const char* end; diff --git a/src/map/npc.h b/src/map/npc.h index 5b4707d00..8ee59e410 100644 --- a/src/map/npc.h +++ b/src/map/npc.h @@ -177,10 +177,10 @@ struct npc_path_data { struct npc_interface { /* */ struct npc_data *motd; - DBMap *ev_db; // const char* event_name -> struct event_data* - DBMap *ev_label_db; // const char* label_name (without leading "::") -> struct linkdb_node** (key: struct npc_data*; data: struct event_data*) - DBMap *name_db; // const char* npc_name -> struct npc_data* - DBMap *path_db; + struct DBMap *ev_db; // const char* event_name -> struct event_data* + struct DBMap *ev_label_db; // const char* label_name (without leading "::") -> struct linkdb_node** (key: struct npc_data*; data: struct event_data*) + struct DBMap *name_db; // const char* npc_name -> struct npc_data* + struct DBMap *path_db; struct eri *timer_event_ers; //For the npc timer data. [Skotlex] struct npc_data *fake_nd; struct npc_src_list *src_files; diff --git a/src/map/party.h b/src/map/party.h index 750f7d07f..253f074bb 100644 --- a/src/map/party.h +++ b/src/map/party.h @@ -85,8 +85,8 @@ struct party_booking_ad_info { * created by Susu *-------------------------------------*/ struct party_interface { - DBMap* db; // int party_id -> struct party_data* (releases data) - DBMap* booking_db; // int char_id -> struct party_booking_ad_info* (releases data) // Party Booking [Spiria] + struct DBMap *db; // int party_id -> struct party_data* (releases data) + struct DBMap *booking_db; // int char_id -> struct party_booking_ad_info* (releases data) // Party Booking [Spiria] unsigned int booking_nextid; /* funcs */ void (*init) (bool minimal); diff --git a/src/map/pc.h b/src/map/pc.h index 728d02734..a702b44bc 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -785,9 +785,9 @@ struct autotrade_vending { struct pc_interface { /* */ - DBMap *at_db;/* char id -> struct autotrade_vending */ + struct DBMap *at_db;/* char id -> struct autotrade_vending */ /* */ - DBMap* itemcd_db; + struct DBMap *itemcd_db; /* */ int day_timer_tid; int night_timer_tid; diff --git a/src/map/pc_groups.h b/src/map/pc_groups.h index 3f95237b7..27eac7284 100644 --- a/src/map/pc_groups.h +++ b/src/map/pc_groups.h @@ -22,9 +22,9 @@ #define MAP_PC_GROUPS_H #include "common/hercules.h" -#include "common/db.h" /* Forward Declarations */ +struct DBMap; // common/db.h struct config_setting_t; /// PC permissions @@ -91,8 +91,8 @@ struct pc_groups_new_permission { struct pc_groups_interface { /* */ - DBMap* db; // id -> GroupSettings - DBMap* name_db; // name -> GroupSettings + struct DBMap *db; // id -> GroupSettings + struct DBMap *name_db; // name -> GroupSettings /* */ struct pc_groups_permission_table *permissions; unsigned char permission_count; diff --git a/src/map/script.c b/src/map/script.c index 5d7698f75..0fc4a5a65 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -56,6 +56,7 @@ #include "map/unit.h" #include "common/cbasetypes.h" #include "common/conf.h" +#include "common/db.h" #include "common/memmgr.h" #include "common/md5calc.h" #include "common/mmo.h" // NEW_CARTS @@ -3606,7 +3607,8 @@ void pop_stack(struct script_state* st, int start, int end) { /*========================================== * Release script dependent variable, dependent variable of function *------------------------------------------*/ -void script_free_vars(struct DBMap* var_storage) { +void script_free_vars(struct DBMap *var_storage) +{ if( var_storage ) { // destroy the storage construct containing the variables db_destroy(var_storage); @@ -4919,7 +4921,7 @@ void script_load_translations(void) { if( total ) { struct DBIterator *main_iter, *sub_iter; - DBMap *string_db; + struct DBMap *string_db; struct string_translation *st = NULL; uint32 j = 0; @@ -4982,7 +4984,7 @@ void script_load_translation(const char *file, uint8 lang_id, uint32 *total) { uint32 translations = 0; char line[1024]; char msgctxt[NAME_LENGTH*2+1] = { 0 }; - DBMap *string_db; + struct DBMap *string_db; size_t i; FILE *fp; struct script_string_buf msgid = { 0 }, msgstr = { 0 }; @@ -5135,7 +5137,7 @@ void script_clear_translations(bool reload) { **/ int script_translation_db_destroyer(union DBKey key, struct DBData *data, va_list ap) { - DBMap *string_db = DB->data2ptr(data); + struct DBMap *string_db = DB->data2ptr(data); if( db_size(string_db) ) { struct string_translation *st = NULL; diff --git a/src/map/script.h b/src/map/script.h index 368247c63..a1fbe31f0 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -494,8 +494,8 @@ struct script_syntax_data { int last_func; // buildin index of the last parsed function unsigned int nested_call; //Dont really know what to call this bool lang_macro_active; - DBMap *strings; // string map parsed (used when exporting strings only) - DBMap *translation_db; //non-null if this npc has any translated strings to be linked + struct DBMap *strings; // string map parsed (used when exporting strings only) + struct DBMap *translation_db; //non-null if this npc has any translated strings to be linked }; struct casecheck_data { @@ -534,7 +534,7 @@ struct string_translation { **/ struct script_interface { /* */ - DBMap *st_db; + struct DBMap *st_db; unsigned int active_scripts; unsigned int next_id; struct eri *st_ers; @@ -602,8 +602,8 @@ struct script_interface { /* */ /* Caches compiled autoscript item code. */ /* Note: This is not cleared when reloading itemdb. */ - DBMap* autobonus_db; // char* script -> char* bytecode - DBMap* userfunc_db; // const char* func_name -> struct script_code* + struct DBMap *autobonus_db; // char* script -> char* bytecode + struct DBMap *userfunc_db; // const char* func_name -> struct script_code* /* */ int potion_flag; //For use on Alchemist improved potions/Potion Pitcher. [Skotlex] int potion_hp, potion_per_hp, potion_sp, potion_per_sp; @@ -621,7 +621,7 @@ struct script_interface { int buildin_select_offset; int buildin_lang_macro_offset; /* */ - DBMap *translation_db;/* npc_name => DBMap (strings) */ + struct DBMap *translation_db;/* npc_name => DBMap (strings) */ char **translation_buf;/* */ uint32 translation_buf_size; /* */ diff --git a/src/map/skill.h b/src/map/skill.h index 2f8525654..35fddafa4 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -1856,12 +1856,12 @@ struct skill_interface { void (*reload) (void); void (*read_db) (bool minimal); /* */ - DBMap* cd_db; // char_id -> struct skill_cd - DBMap* name2id_db; - DBMap* unit_db; // int id -> struct skill_unit* - DBMap* usave_db; // char_id -> struct skill_unit_save - DBMap* group_db;// int group_id -> struct skill_unit_group* - DBMap* bowling_db;// int mob_id -> struct mob_data*s + struct DBMap *cd_db; // char_id -> struct skill_cd + struct DBMap *name2id_db; + struct DBMap *unit_db; // int id -> struct skill_unit* + struct DBMap *usave_db; // char_id -> struct skill_unit_save + struct DBMap *group_db;// int group_id -> struct skill_unit_group* + struct DBMap *bowling_db;// int mob_id -> struct mob_data*s /* */ struct eri *unit_ers; //For handling skill_unit's [Skotlex] struct eri *timer_ers; //For handling skill_timerskills [Skotlex] diff --git a/src/map/storage.h b/src/map/storage.h index 2c7ee4ffe..94512c456 100644 --- a/src/map/storage.h +++ b/src/map/storage.h @@ -56,7 +56,7 @@ struct storage_interface { }; struct guild_storage_interface { - struct DBMap* db; // int guild_id -> struct guild_storage* + struct DBMap *db; // int guild_id -> struct guild_storage* /* */ struct guild_storage *(*ensure) (int guild_id); /* */ diff --git a/src/map/vending.h b/src/map/vending.h index 6684ed256..1d2135076 100644 --- a/src/map/vending.h +++ b/src/map/vending.h @@ -22,8 +22,9 @@ #define MAP_VENDING_H #include "common/hercules.h" -#include "common/db.h" +/* Forward Declarations */ +struct DBMap; // common/db.h struct map_session_data; struct s_search_store_search; @@ -35,7 +36,7 @@ struct s_vending { struct vending_interface { unsigned int next_id;/* next vender id */ - DBMap *db; + struct DBMap *db; /* */ void (*init) (bool minimal); void (*final) (void); diff --git a/src/plugins/HPMHooking.c b/src/plugins/HPMHooking.c index 18bfaf220..7a26c8f98 100644 --- a/src/plugins/HPMHooking.c +++ b/src/plugins/HPMHooking.c @@ -128,7 +128,7 @@ HPExport struct hplugin_info pinfo = { }; #define HP_POP(x,y) #x , (void**)(&x) , (void*)y , 0 -DBMap *hp_db;/* hooking points db -- for quick lookup */ +struct DBMap *hp_db;/* hooking points db -- for quick lookup */ struct HookingPointData { char* name; -- cgit v1.2.3-70-g09d2