From da34a2b33e1f600ec11172f599384b9a92835403 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Tue, 19 May 2015 02:24:14 -0400 Subject: [PATCH] Replace instances of std::map with StringMap Also, clean up surrounding code style Replace by-value parameter passing with const refs when possible Fix post-increment of iterators --- src/ban.cpp | 49 ++++++++++------------- src/ban.h | 5 +-- src/client.cpp | 31 +++++++-------- src/client.h | 8 ++-- src/content_mapnode.cpp | 11 +++--- src/game.cpp | 26 ++++++------ src/guiEngine.cpp | 2 +- src/guiEngine.h | 2 +- src/guiFileSelectMenu.cpp | 2 +- src/guiFormSpecMenu.cpp | 2 +- src/guiFormSpecMenu.h | 2 +- src/httpfetch.cpp | 9 ++--- src/httpfetch.h | 5 +-- src/itemdef.cpp | 51 ++++++++++++------------ src/network/serverpackethandler.cpp | 8 ++-- src/nodemetadata.cpp | 16 ++++---- src/nodemetadata.h | 9 ++--- src/script/cpp_api/s_mainmenu.cpp | 6 +-- src/script/cpp_api/s_mainmenu.h | 4 +- src/script/cpp_api/s_node.cpp | 6 +-- src/script/cpp_api/s_node.h | 5 +-- src/script/cpp_api/s_player.cpp | 21 ++++++---- src/script/cpp_api/s_player.h | 10 ++--- src/script/lua_api/l_nodemeta.cpp | 22 ++++++----- src/shader.cpp | 61 ++++++++++++++--------------- 25 files changed, 180 insertions(+), 193 deletions(-) diff --git a/src/ban.cpp b/src/ban.cpp index 55d9b22f..7c1a68d4 100644 --- a/src/ban.cpp +++ b/src/ban.cpp @@ -56,7 +56,7 @@ void BanManager::load() infostream<<"BanManager: failed loading from "<::iterator - i = m_ips.begin(); - i != m_ips.end(); i++) - { - ss << i->first << "|" << i->second << "\n"; - } + for (StringMap::iterator it = m_ips.begin(); it != m_ips.end(); ++it) + ss << it->first << "|" << it->second << "\n"; - if(!fs::safeWriteToFile(m_banfilepath, ss.str())) { - infostream<<"BanManager: failed saving to "<::iterator - i = m_ips.begin(); - i != m_ips.end(); i++) - { - if(i->first == ip_or_name || i->second == ip_or_name - || ip_or_name == "") - s += i->first + "|" + i->second + ", "; + for (StringMap::iterator it = m_ips.begin(); it != m_ips.end(); ++it) { + if (it->first == ip_or_name || it->second == ip_or_name + || ip_or_name == "") { + s += it->first + "|" + it->second + ", "; + } } - s = s.substr(0, s.size()-2); + s = s.substr(0, s.size() - 2); return s; } std::string BanManager::getBanName(const std::string &ip) { JMutexAutoLock lock(m_mutex); - std::map::iterator i = m_ips.find(ip); - if(i == m_ips.end()) + StringMap::iterator it = m_ips.find(ip); + if (it == m_ips.end()) return ""; - return i->second; + return it->second; } void BanManager::add(const std::string &ip, const std::string &name) @@ -133,19 +127,16 @@ void BanManager::add(const std::string &ip, const std::string &name) void BanManager::remove(const std::string &ip_or_name) { JMutexAutoLock lock(m_mutex); - for(std::map::iterator - i = m_ips.begin(); - i != m_ips.end();) - { - if((i->first == ip_or_name) || (i->second == ip_or_name)) { - m_ips.erase(i++); + for (StringMap::iterator it = m_ips.begin(); it != m_ips.end();) { + if ((it->first == ip_or_name) || (it->second == ip_or_name)) { + m_ips.erase(it++); } else { - ++i; + ++it; } } m_modified = true; } - + bool BanManager::isModified() { diff --git a/src/ban.h b/src/ban.h index 02a472f5..5db7179d 100644 --- a/src/ban.h +++ b/src/ban.h @@ -20,8 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef BAN_HEADER #define BAN_HEADER -#include -#include +#include "util/string.h" #include "jthread/jthread.h" #include "jthread/jmutex.h" #include "exceptions.h" @@ -43,7 +42,7 @@ public: private: JMutex m_mutex; std::string m_banfilepath; - std::map m_ips; + StringMap m_ips; bool m_modified; }; diff --git a/src/client.cpp b/src/client.cpp index 1d0245c4..de813187 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1102,7 +1102,7 @@ void Client::sendRemovedSounds(std::vector &soundList) } void Client::sendNodemetaFields(v3s16 p, const std::string &formname, - const std::map &fields) + const StringMap &fields) { size_t fields_size = fields.size(); @@ -1112,10 +1112,10 @@ void Client::sendNodemetaFields(v3s16 p, const std::string &formname, pkt << p << formname << (u16) (fields_size & 0xFFFF); - for(std::map::const_iterator - i = fields.begin(); i != fields.end(); i++) { - const std::string &name = i->first; - const std::string &value = i->second; + StringMap::const_iterator it; + for (it = fields.begin(); it != fields.end(); ++it) { + const std::string &name = it->first; + const std::string &value = it->second; pkt << name; pkt.putLongString(value); } @@ -1124,7 +1124,7 @@ void Client::sendNodemetaFields(v3s16 p, const std::string &formname, } void Client::sendInventoryFields(const std::string &formname, - const std::map &fields) + const StringMap &fields) { size_t fields_size = fields.size(); FATAL_ERROR_IF(fields_size > 0xFFFF, "Unsupported number of inventory fields"); @@ -1132,10 +1132,10 @@ void Client::sendInventoryFields(const std::string &formname, NetworkPacket pkt(TOSERVER_INVENTORY_FIELDS, 0); pkt << formname << (u16) (fields_size & 0xFFFF); - for(std::map::const_iterator - i = fields.begin(); i != fields.end(); i++) { - const std::string &name = i->first; - const std::string &value = i->second; + StringMap::const_iterator it; + for (it = fields.begin(); it != fields.end(); ++it) { + const std::string &name = it->first; + const std::string &value = it->second; pkt << name; pkt.putLongString(value); } @@ -1918,14 +1918,13 @@ ParticleManager* Client::getParticleManager() scene::IAnimatedMesh* Client::getMesh(const std::string &filename) { - std::map::const_iterator i = - m_mesh_data.find(filename); - if(i == m_mesh_data.end()){ - errorstream<<"Client::getMesh(): Mesh not found: \""<second; + const std::string &data = it->second; scene::ISceneManager *smgr = m_device->getSceneManager(); // Create the mesh, remove it from cache and return it diff --git a/src/client.h b/src/client.h index 87cf8ce4..56f04090 100644 --- a/src/client.h +++ b/src/client.h @@ -405,13 +405,13 @@ public: void interact(u8 action, const PointedThing& pointed); void sendNodemetaFields(v3s16 p, const std::string &formname, - const std::map &fields); + const StringMap &fields); void sendInventoryFields(const std::string &formname, - const std::map &fields); + const StringMap &fields); void sendInventoryAction(InventoryAction *a); void sendChatMessage(const std::wstring &message); void sendChangePassword(const std::string &oldpassword, - const std::string &newpassword); + const std::string &newpassword); void sendDamage(u8 damage); void sendBreath(u16 breath); void sendRespawn(); @@ -648,7 +648,7 @@ private: std::map m_detached_inventories; // Storage for mesh data for creating multiple instances of the same mesh - std::map m_mesh_data; + StringMap m_mesh_data; // own state LocalClientState m_state; diff --git a/src/content_mapnode.cpp b/src/content_mapnode.cpp index 44d0b8e3..5e2a5c81 100644 --- a/src/content_mapnode.cpp +++ b/src/content_mapnode.cpp @@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapnode.h" #include "nodedef.h" #include "nameidmapping.h" -#include +#include "util/string.h" /* Legacy node content type IDs @@ -218,14 +218,13 @@ public: } std::string get(const std::string &old) { - std::map::const_iterator i; - i = old_to_new.find(old); - if(i == old_to_new.end()) + StringMap::const_iterator it = old_to_new.find(old); + if (it == old_to_new.end()) return ""; - return i->second; + return it->second; } private: - std::map old_to_new; + StringMap old_to_new; }; NewNameGetter newnamegetter; diff --git a/src/game.cpp b/src/game.cpp index e27ec37d..7e3ab802 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -87,11 +87,11 @@ struct TextDestNodeMetadata : public TextDest { std::string ntext = wide_to_narrow(text); infostream << "Submitting 'text' field of node at (" << m_p.X << "," << m_p.Y << "," << m_p.Z << "): " << ntext << std::endl; - std::map fields; + StringMap fields; fields["text"] = ntext; m_client->sendNodemetaFields(m_p, "", fields); } - void gotText(std::map fields) + void gotText(const StringMap &fields) { m_client->sendNodemetaFields(m_p, "", fields); } @@ -111,7 +111,7 @@ struct TextDestPlayerInventory : public TextDest { m_client = client; m_formname = formname; } - void gotText(std::map fields) + void gotText(const StringMap &fields) { m_client->sendInventoryFields(m_formname, fields); } @@ -138,7 +138,7 @@ struct LocalFormspecHandler : public TextDest { errorstream << "LocalFormspecHandler::gotText old style message received" << std::endl; } - void gotText(std::map fields) + void gotText(const StringMap &fields) { if (m_formname == "MT_PAUSE_MENU") { if (fields.find("btn_sound") != fields.end()) { @@ -180,9 +180,9 @@ struct LocalFormspecHandler : public TextDest { if ((fields.find("btn_send") != fields.end()) || (fields.find("quit") != fields.end())) { - if (fields.find("f_text") != fields.end()) { - m_client->typeChatMessage(narrow_to_wide(fields["f_text"])); - } + StringMap::const_iterator it = fields.find("f_text"); + if (it != fields.end()) + m_client->typeChatMessage(narrow_to_wide(it->second)); return; } @@ -210,12 +210,14 @@ struct LocalFormspecHandler : public TextDest { return; } - errorstream << "LocalFormspecHandler::gotText unhandled >" << m_formname << "< event" << std::endl; - int i = 0; + errorstream << "LocalFormspecHandler::gotText unhandled >" + << m_formname << "< event" << std::endl; - for (std::map::iterator iter = fields.begin(); - iter != fields.end(); iter++) { - errorstream << "\t" << i << ": " << iter->first << "=" << iter->second << std::endl; + int i = 0; + StringMap::const_iterator it; + for (it = fields.begin(); it != fields.end(); ++it) { + errorstream << "\t" << i << ": " << it->first + << "=" << it->second << std::endl; i++; } } diff --git a/src/guiEngine.cpp b/src/guiEngine.cpp index 752f9ddd..3248ef11 100644 --- a/src/guiEngine.cpp +++ b/src/guiEngine.cpp @@ -53,7 +53,7 @@ TextDestGuiEngine::TextDestGuiEngine(GUIEngine* engine) } /******************************************************************************/ -void TextDestGuiEngine::gotText(std::map fields) +void TextDestGuiEngine::gotText(const StringMap &fields) { m_engine->getScriptIface()->handleMainMenuButtons(fields); } diff --git a/src/guiEngine.h b/src/guiEngine.h index e5757322..d527f722 100644 --- a/src/guiEngine.h +++ b/src/guiEngine.h @@ -73,7 +73,7 @@ public: * receive fields transmitted by guiFormSpecMenu * @param fields map containing formspec field elements currently active */ - void gotText(std::map fields); + void gotText(const StringMap &fields); /** * receive text/events transmitted by guiFormSpecMenu diff --git a/src/guiFileSelectMenu.cpp b/src/guiFileSelectMenu.cpp index e98b025c..9b43ab60 100644 --- a/src/guiFileSelectMenu.cpp +++ b/src/guiFileSelectMenu.cpp @@ -84,7 +84,7 @@ void GUIFileSelectMenu::drawMenu() void GUIFileSelectMenu::acceptInput() { if ((m_text_dst != 0) && (this->m_formname != "")){ - std::map fields; + StringMap fields; if (m_accepted) fields[m_formname + "_accepted"] = wide_to_narrow(m_fileOpenDialog->getFileName()); diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp index 5f67bb22..d53c9b3a 100644 --- a/src/guiFormSpecMenu.cpp +++ b/src/guiFormSpecMenu.cpp @@ -2579,7 +2579,7 @@ void GUIFormSpecMenu::acceptInput(FormspecQuitMode quitmode=quit_mode_no) { if(m_text_dst) { - std::map fields; + StringMap fields; if (quitmode == quit_mode_accept) { fields["quit"] = "true"; diff --git a/src/guiFormSpecMenu.h b/src/guiFormSpecMenu.h index 73dc7af6..f7259578 100644 --- a/src/guiFormSpecMenu.h +++ b/src/guiFormSpecMenu.h @@ -56,7 +56,7 @@ struct TextDest virtual ~TextDest() {}; // This is deprecated I guess? -celeron55 virtual void gotText(std::wstring text){} - virtual void gotText(std::map fields) = 0; + virtual void gotText(const StringMap &fields) = 0; virtual void setFormName(std::string formname) { m_formname = formname;}; diff --git a/src/httpfetch.cpp b/src/httpfetch.cpp index c60e141f..56cdad2b 100644 --- a/src/httpfetch.cpp +++ b/src/httpfetch.cpp @@ -266,8 +266,7 @@ HTTPFetchOngoing::HTTPFetchOngoing(HTTPFetchRequest request_, CurlHandlePool *po curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); } else if (request.multipart) { curl_httppost *last = NULL; - for (std::map::iterator it = - request.post_fields.begin(); + for (StringMap::iterator it = request.post_fields.begin(); it != request.post_fields.end(); ++it) { curl_formadd(&post, &last, CURLFORM_NAMELENGTH, it->first.size(), @@ -282,10 +281,8 @@ HTTPFetchOngoing::HTTPFetchOngoing(HTTPFetchRequest request_, CurlHandlePool *po } else if (request.post_data.empty()) { curl_easy_setopt(curl, CURLOPT_POST, 1); std::string str; - for (std::map::iterator it = - request.post_fields.begin(); - it != request.post_fields.end(); - ++it) { + for (StringMap::iterator it = request.post_fields.begin(); + it != request.post_fields.end(); ++it) { if (str != "") str += "&"; str += urlencode(it->first); diff --git a/src/httpfetch.h b/src/httpfetch.h index 50a4c93d..c44c8d2d 100644 --- a/src/httpfetch.h +++ b/src/httpfetch.h @@ -20,9 +20,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef HTTPFETCH_HEADER #define HTTPFETCH_HEADER -#include #include -#include +#include "util/string.h" #include "config.h" // Can be used in place of "caller" in asynchronous transfers to discard result @@ -54,7 +53,7 @@ struct HTTPFetchRequest // POST fields. Fields are escaped properly. // If this is empty a GET request is done instead. - std::map post_fields; + StringMap post_fields; // Raw POST data, overrides post_fields. std::string post_data; diff --git a/src/itemdef.cpp b/src/itemdef.cpp index 95c1e47f..0133b1b3 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -280,26 +280,23 @@ public: } virtual std::string getAlias(const std::string &name) const { - std::map::const_iterator i; - i = m_aliases.find(name); - if(i != m_aliases.end()) - return i->second; + StringMap::const_iterator it = m_aliases.find(name); + if (it != m_aliases.end()) + return it->second; return name; } virtual std::set getAll() const { std::set result; - for(std::map::const_iterator - i = m_item_definitions.begin(); - i != m_item_definitions.end(); i++) - { - result.insert(i->first); + for(std::map::const_iterator + it = m_item_definitions.begin(); + it != m_item_definitions.end(); ++it) { + result.insert(it->first); } - for(std::map::const_iterator - i = m_aliases.begin(); - i != m_aliases.end(); i++) - { - result.insert(i->first); + for (StringMap::const_iterator + it = m_aliases.begin(); + it != m_aliases.end(); ++it) { + result.insert(it->first); } return result; } @@ -571,22 +568,24 @@ public: writeU8(os, 0); // version u16 count = m_item_definitions.size(); writeU16(os, count); - for(std::map::const_iterator - i = m_item_definitions.begin(); - i != m_item_definitions.end(); i++) - { - ItemDefinition *def = i->second; + + for (std::map::const_iterator + it = m_item_definitions.begin(); + it != m_item_definitions.end(); ++it) { + ItemDefinition *def = it->second; // Serialize ItemDefinition and write wrapped in a string std::ostringstream tmp_os(std::ios::binary); def->serialize(tmp_os, protocol_version); - os<::const_iterator - i = m_aliases.begin(); i != m_aliases.end(); i++) - { - os<first); - os<second); + + for (StringMap::const_iterator + it = m_aliases.begin(); + it != m_aliases.end(); ++it) { + os << serializeString(it->first); + os << serializeString(it->second); } } void deSerialize(std::istream &is) @@ -633,7 +632,7 @@ private: // Key is name std::map m_item_definitions; // Aliases - std::map m_aliases; + StringMap m_aliases; #ifndef SERVER // The id of the thread that is allowed to use irrlicht directly threadid_t m_main_thread; diff --git a/src/network/serverpackethandler.cpp b/src/network/serverpackethandler.cpp index ea1528c6..f658e106 100644 --- a/src/network/serverpackethandler.cpp +++ b/src/network/serverpackethandler.cpp @@ -192,7 +192,7 @@ void Server::handleCommand_Init(NetworkPacket* pkt) { std::string reason; - if(m_script->on_prejoinplayer(playername, addr_s, reason)) { + if (m_script->on_prejoinplayer(playername, addr_s, &reason)) { actionstream << "Server: Player with the name \"" << playerName << "\" " << "tried to connect from " << addr_s << " " << "but it was disallowed for the following reason: " @@ -480,7 +480,7 @@ void Server::handleCommand_Init_Legacy(NetworkPacket* pkt) { std::string reason; - if (m_script->on_prejoinplayer(playername, addr_s, reason)) { + if (m_script->on_prejoinplayer(playername, addr_s, &reason)) { actionstream << "Server: Player with the name \"" << playername << "\" " << "tried to connect from " << addr_s << " " << "but it was disallowed for the following reason: " @@ -1742,7 +1742,7 @@ void Server::handleCommand_NodeMetaFields(NetworkPacket* pkt) *pkt >> p >> formname >> num; - std::map fields; + StringMap fields; for (u16 k = 0; k < num; k++) { std::string fieldname; *pkt >> fieldname; @@ -1792,7 +1792,7 @@ void Server::handleCommand_InventoryFields(NetworkPacket* pkt) *pkt >> formname >> num; - std::map fields; + StringMap fields; for (u16 k = 0; k < num; k++) { std::string fieldname; *pkt >> fieldname; diff --git a/src/nodemetadata.cpp b/src/nodemetadata.cpp index bd54d225..d4da7a5e 100644 --- a/src/nodemetadata.cpp +++ b/src/nodemetadata.cpp @@ -45,10 +45,11 @@ void NodeMetadata::serialize(std::ostream &os) const { int num_vars = m_stringvars.size(); writeU32(os, num_vars); - for(std::map::const_iterator - i = m_stringvars.begin(); i != m_stringvars.end(); i++){ - os<first); - os<second); + for (StringMap::const_iterator + it = m_stringvars.begin(); + it != m_stringvars.end(); ++it) { + os << serializeString(it->first); + os << serializeLongString(it->second); } m_inventory->serialize(os); @@ -203,11 +204,10 @@ void NodeMetadataList::clear() std::string NodeMetadata::getString(const std::string &name, unsigned short recursion) const { - std::map::const_iterator it; - it = m_stringvars.find(name); - if (it == m_stringvars.end()) { + StringMap::const_iterator it = m_stringvars.find(name); + if (it == m_stringvars.end()) return ""; - } + return resolveString(it->second, recursion); } diff --git a/src/nodemetadata.h b/src/nodemetadata.h index acd45bdf..8e84e5af 100644 --- a/src/nodemetadata.h +++ b/src/nodemetadata.h @@ -21,10 +21,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #define NODEMETADATA_HEADER #include "irr_v3d.h" -#include #include #include -#include +#include "util/string.h" /* NodeMetadata stores arbitary amounts of data for special blocks. @@ -54,19 +53,19 @@ public: void setString(const std::string &name, const std::string &var); // Support variable names in values std::string resolveString(const std::string &str, unsigned short recursion = 0) const; - std::map getStrings() const + StringMap getStrings() const { return m_stringvars; } // The inventory - Inventory* getInventory() + Inventory *getInventory() { return m_inventory; } private: - std::map m_stringvars; + StringMap m_stringvars; Inventory *m_inventory; }; diff --git a/src/script/cpp_api/s_mainmenu.cpp b/src/script/cpp_api/s_mainmenu.cpp index ef8cea6c..0bb247fa 100644 --- a/src/script/cpp_api/s_mainmenu.cpp +++ b/src/script/cpp_api/s_mainmenu.cpp @@ -53,7 +53,7 @@ void ScriptApiMainMenu::handleMainMenuEvent(std::string text) scriptError(); } -void ScriptApiMainMenu::handleMainMenuButtons(std::map fields) +void ScriptApiMainMenu::handleMainMenuButtons(const StringMap &fields) { SCRIPTAPI_PRECHECKHEADER @@ -69,8 +69,8 @@ void ScriptApiMainMenu::handleMainMenuButtons(std::map // Convert fields to a Lua table lua_newtable(L); - std::map::const_iterator it; - for (it = fields.begin(); it != fields.end(); it++){ + StringMap::const_iterator it; + for (it = fields.begin(); it != fields.end(); ++it) { const std::string &name = it->first; const std::string &value = it->second; lua_pushstring(L, name.c_str()); diff --git a/src/script/cpp_api/s_mainmenu.h b/src/script/cpp_api/s_mainmenu.h index 53dcd37e..6994b578 100644 --- a/src/script/cpp_api/s_mainmenu.h +++ b/src/script/cpp_api/s_mainmenu.h @@ -21,7 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #define S_MAINMENU_H_ #include "cpp_api/s_base.h" -#include +#include "util/string.h" class ScriptApiMainMenu : virtual public ScriptApiBase @@ -43,7 +43,7 @@ public: * process field data recieved from formspec * @param fields data in field format */ - void handleMainMenuButtons(std::map fields); + void handleMainMenuButtons(const StringMap &fields); }; #endif /* S_MAINMENU_H_ */ diff --git a/src/script/cpp_api/s_node.cpp b/src/script/cpp_api/s_node.cpp index e3d3fb58..7df712ca 100644 --- a/src/script/cpp_api/s_node.cpp +++ b/src/script/cpp_api/s_node.cpp @@ -200,7 +200,7 @@ bool ScriptApiNode::node_on_timer(v3s16 p, MapNode node, f32 dtime) void ScriptApiNode::node_on_receive_fields(v3s16 p, const std::string &formname, - const std::map &fields, + const StringMap &fields, ServerActiveObject *sender) { SCRIPTAPI_PRECHECKHEADER @@ -220,8 +220,8 @@ void ScriptApiNode::node_on_receive_fields(v3s16 p, push_v3s16(L, p); // pos lua_pushstring(L, formname.c_str()); // formname lua_newtable(L); // fields - std::map::const_iterator it; - for (it = fields.begin(); it != fields.end(); it++){ + StringMap::const_iterator it; + for (it = fields.begin(); it != fields.end(); it++) { const std::string &name = it->first; const std::string &value = it->second; lua_pushstring(L, name.c_str()); diff --git a/src/script/cpp_api/s_node.h b/src/script/cpp_api/s_node.h index b3a6c83b..fe1180cb 100644 --- a/src/script/cpp_api/s_node.h +++ b/src/script/cpp_api/s_node.h @@ -20,11 +20,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef S_NODE_H_ #define S_NODE_H_ -#include - #include "irr_v3d.h" #include "cpp_api/s_base.h" #include "cpp_api/s_nodemeta.h" +#include "util/string.h" struct MapNode; class ServerActiveObject; @@ -47,7 +46,7 @@ public: bool node_on_timer(v3s16 p, MapNode node, f32 dtime); void node_on_receive_fields(v3s16 p, const std::string &formname, - const std::map &fields, + const StringMap &fields, ServerActiveObject *sender); void node_falling_update(v3s16 p); void node_falling_update_single(v3s16 p); diff --git a/src/script/cpp_api/s_player.cpp b/src/script/cpp_api/s_player.cpp index d5676682..9b2c3753 100644 --- a/src/script/cpp_api/s_player.cpp +++ b/src/script/cpp_api/s_player.cpp @@ -83,7 +83,10 @@ bool ScriptApiPlayer::on_respawnplayer(ServerActiveObject *player) return positioning_handled_by_some; } -bool ScriptApiPlayer::on_prejoinplayer(std::string name, std::string ip, std::string &reason) +bool ScriptApiPlayer::on_prejoinplayer( + const std::string &name, + const std::string &ip, + std::string *reason) { SCRIPTAPI_PRECHECKHEADER @@ -94,7 +97,7 @@ bool ScriptApiPlayer::on_prejoinplayer(std::string name, std::string ip, std::st lua_pushstring(L, ip.c_str()); script_run_callbacks(L, 2, RUN_CALLBACKS_MODE_OR); if (lua_isstring(L, -1)) { - reason.assign(lua_tostring(L, -1)); + reason->assign(lua_tostring(L, -1)); return true; } return false; @@ -142,7 +145,7 @@ void ScriptApiPlayer::on_cheat(ServerActiveObject *player, void ScriptApiPlayer::on_playerReceiveFields(ServerActiveObject *player, const std::string &formname, - const std::map &fields) + const StringMap &fields) { SCRIPTAPI_PRECHECKHEADER @@ -156,17 +159,19 @@ void ScriptApiPlayer::on_playerReceiveFields(ServerActiveObject *player, lua_pushstring(L, formname.c_str()); // param 3 lua_newtable(L); - for(std::map::const_iterator - i = fields.begin(); i != fields.end(); i++){ - const std::string &name = i->first; - const std::string &value = i->second; + StringMap::const_iterator it; + for (it = fields.begin(); it != fields.end(); ++it) { + const std::string &name = it->first; + const std::string &value = it->second; lua_pushstring(L, name.c_str()); lua_pushlstring(L, value.c_str(), value.size()); lua_settable(L, -3); } script_run_callbacks(L, 3, RUN_CALLBACKS_MODE_OR_SC); } -ScriptApiPlayer::~ScriptApiPlayer() { + +ScriptApiPlayer::~ScriptApiPlayer() +{ } diff --git a/src/script/cpp_api/s_player.h b/src/script/cpp_api/s_player.h index a0f764cd..9c8d1d1a 100644 --- a/src/script/cpp_api/s_player.h +++ b/src/script/cpp_api/s_player.h @@ -20,10 +20,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef S_PLAYER_H_ #define S_PLAYER_H_ -#include - #include "cpp_api/s_base.h" #include "irr_v3d.h" +#include "util/string.h" struct ToolCapabilities; @@ -36,17 +35,16 @@ public: void on_newplayer(ServerActiveObject *player); void on_dieplayer(ServerActiveObject *player); bool on_respawnplayer(ServerActiveObject *player); - bool on_prejoinplayer(std::string name, std::string ip, std::string &reason); + bool on_prejoinplayer(const std::string &name, const std::string &ip, + std::string *reason); void on_joinplayer(ServerActiveObject *player); void on_leaveplayer(ServerActiveObject *player); void on_cheat(ServerActiveObject *player, const std::string &cheat_type); bool on_punchplayer(ServerActiveObject *player, ServerActiveObject *hitter, float time_from_last_punch, const ToolCapabilities *toolcap, v3f dir, s16 damage); - void on_playerReceiveFields(ServerActiveObject *player, - const std::string &formname, - const std::map &fields); + const std::string &formname, const StringMap &fields); }; diff --git a/src/script/lua_api/l_nodemeta.cpp b/src/script/lua_api/l_nodemeta.cpp index 906cc317..6cdbe5c6 100644 --- a/src/script/lua_api/l_nodemeta.cpp +++ b/src/script/lua_api/l_nodemeta.cpp @@ -190,32 +190,34 @@ int NodeMetaRef::l_to_table(lua_State *L) NodeMetaRef *ref = checkobject(L, 1); NodeMetadata *meta = getmeta(ref, true); - if(meta == NULL){ + if (meta == NULL) { lua_pushnil(L); return 1; } lua_newtable(L); + // fields lua_newtable(L); { - std::map fields = meta->getStrings(); - for(std::map::const_iterator - i = fields.begin(); i != fields.end(); i++){ - const std::string &name = i->first; - const std::string &value = i->second; + StringMap fields = meta->getStrings(); + for (StringMap::const_iterator + it = fields.begin(); it != fields.end(); ++it) { + const std::string &name = it->first; + const std::string &value = it->second; lua_pushlstring(L, name.c_str(), name.size()); lua_pushlstring(L, value.c_str(), value.size()); lua_settable(L, -3); } } lua_setfield(L, -2, "fields"); + // inventory lua_newtable(L); Inventory *inv = meta->getInventory(); - if(inv){ - std::vector lists = inv->getLists(); - for(std::vector::const_iterator - i = lists.begin(); i != lists.end(); i++){ + if (inv) { + std::vector lists = inv->getLists(); + for(std::vector::const_iterator + i = lists.begin(); i != lists.end(); i++) { push_inventory_list(L, inv, (*i)->getName().c_str()); lua_setfield(L, -2, (*i)->getName().c_str()); } diff --git a/src/shader.cpp b/src/shader.cpp index ea2de3f1..a467c2ea 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -103,10 +103,8 @@ std::string getShaderPath(const std::string &name_of_shader, class SourceShaderCache { public: - void insert(const std::string &name_of_shader, - const std::string &filename, - const std::string &program, - bool prefer_local) + void insert(const std::string &name_of_shader, const std::string &filename, + const std::string &program, bool prefer_local) { std::string combined = name_of_shader + DIR_DELIM + filename; // Try to use local shader instead if asked to @@ -122,42 +120,43 @@ public: } m_programs[combined] = program; } + std::string get(const std::string &name_of_shader, - const std::string &filename) + const std::string &filename) { std::string combined = name_of_shader + DIR_DELIM + filename; - std::map::iterator n; - n = m_programs.find(combined); - if(n != m_programs.end()) + StringMap::iterator n = m_programs.find(combined); + if (n != m_programs.end()) return n->second; return ""; } + // Primarily fetches from cache, secondarily tries to read from filesystem std::string getOrLoad(const std::string &name_of_shader, - const std::string &filename) + const std::string &filename) { std::string combined = name_of_shader + DIR_DELIM + filename; - std::map::iterator n; - n = m_programs.find(combined); - if(n != m_programs.end()) + StringMap::iterator n = m_programs.find(combined); + if (n != m_programs.end()) return n->second; std::string path = getShaderPath(name_of_shader, filename); - if(path == ""){ - infostream<<"SourceShaderCache::getOrLoad(): No path found for \"" - < m_programs; + StringMap m_programs; + std::string readFile(const std::string &path) { std::ifstream is(path.c_str(), std::ios::binary); @@ -274,23 +273,23 @@ public: The id 0 points to a null shader. Its material is EMT_SOLID. */ - u32 getShaderIdDirect(const std::string &name, + u32 getShaderIdDirect(const std::string &name, const u8 material_type, const u8 drawtype); /* If shader specified by the name pointed by the id doesn't - exist, create it, then return id. + exist, create it, then return id. Can be called from any thread. If called from some other thread and not found in cache, the call is queued to the main thread for processing. */ - + u32 getShader(const std::string &name, const u8 material_type, const u8 drawtype); - + ShaderInfo getShaderInfo(u32 id); - + // Processes queued shader requests from other threads. // Shall be called from the main thread. void processQueue(); @@ -391,7 +390,7 @@ ShaderSource::~ShaderSource() } } -u32 ShaderSource::getShader(const std::string &name, +u32 ShaderSource::getShader(const std::string &name, const u8 material_type, const u8 drawtype) { /* @@ -435,7 +434,7 @@ u32 ShaderSource::getShader(const std::string &name, /* This method generates all the shaders */ -u32 ShaderSource::getShaderIdDirect(const std::string &name, +u32 ShaderSource::getShaderIdDirect(const std::string &name, const u8 material_type, const u8 drawtype) { //infostream<<"getShaderIdDirect(): name=\""<getBool("enable_shaders"); if(!enable_shaders) return shaderinfo; @@ -648,7 +647,7 @@ ShaderInfo generate_shader(std::string name, u8 material_type, u8 drawtype, "NDT_FIRELIKE", "NDT_GLASSLIKE_FRAMED_OPTIONAL" }; - + for (int i = 0; i < 14; i++){ shaders_header += "#define "; shaders_header += drawTypes[i]; @@ -741,10 +740,10 @@ ShaderInfo generate_shader(std::string name, u8 material_type, u8 drawtype, shaders_header += "#define ENABLE_WAVING_LEAVES "; if (g_settings->getBool("enable_waving_leaves")) shaders_header += "1\n"; - else + else shaders_header += "0\n"; - shaders_header += "#define ENABLE_WAVING_PLANTS "; + shaders_header += "#define ENABLE_WAVING_PLANTS "; if (g_settings->getBool("enable_waving_plants")) shaders_header += "1\n"; else