From f3be0ee187b02cd4c1de60aade4b62a11dfe0c0a Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Wed, 2 Oct 2013 19:55:48 +0400 Subject: [PATCH] Remove the use of lambdas in buildingplan. --- plugins/buildingplan.cpp | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/plugins/buildingplan.cpp b/plugins/buildingplan.cpp index 70a324423..02b549a56 100644 --- a/plugins/buildingplan.cpp +++ b/plugins/buildingplan.cpp @@ -92,6 +92,8 @@ static void debug(const string &msg) * Material Choice Screen */ +static string material_to_string_fn(MaterialInfo m) { return m.toString(); } + struct ItemFilter { df::dfhack_material_category mat_mask; @@ -114,8 +116,10 @@ struct ItemFilter bool matches(MaterialInfo &material) const { - return any_of(materials.begin(), materials.end(), - [&] (const MaterialInfo &m) { return material.matches(m); }); + for (auto it = materials.begin(); it != materials.end(); ++it) + if (material.matches(*it)) + return true; + return false; } bool matches(df::item *item) @@ -137,8 +141,7 @@ struct ItemFilter { vector descriptions; - transform_(materials, descriptions, - [] (MaterialInfo m) { return m.toString(); }); + transform_(materials, descriptions, material_to_string_fn); if (descriptions.size() == 0) bitfield_to_string(&descriptions, mat_mask); @@ -157,8 +160,8 @@ struct ItemFilter str.append("/"); if (materials.size() > 0) { - for_each_(materials, - [&] (MaterialInfo &m) { str.append(m.getToken() + ","); }); + for (size_t i = 0; i < materials.size(); i++) + str.append(materials[i].getToken() + ","); if (str[str.size()-1] == ',') str.resize(str.size () - 1); @@ -217,6 +220,7 @@ private: bool valid; }; +static MaterialInfo &material_info_identity_fn(MaterialInfo &m) { return m; } class ViewscreenChooseMaterial : public dfhack_viewscreen { @@ -284,13 +288,12 @@ public: // Category masks auto masks = masks_column.getSelectedElems(); - for_each_(masks, - [&] (df::dfhack_material_category &m) { filter->mat_mask.whole |= m.whole; }); + for (auto it = masks.begin(); it != masks.end(); ++it) + filter->mat_mask.whole |= it->whole; // Specific materials auto materials = materials_column.getSelectedElems(); - transform_(materials, filter->materials, - [] (MaterialInfo &m) { return m; }); + transform_(materials, filter->materials, material_info_identity_fn); Screen::dismiss(this); } @@ -465,6 +468,7 @@ private: } }; +static void delete_item_fn(df::job_item *x) { delete x; } // START Planning class PlannedBuilding @@ -555,7 +559,7 @@ public: auto job = building->jobs[0]; - for_each_(job->job_items, [] (df::job_item *x) { delete x; }); + for_each_(job->job_items, delete_item_fn); job->job_items.clear(); job->flags.bits.suspend = false; @@ -613,9 +617,10 @@ private: ItemFilter filter; }; - static map planmode_enabled, saved_planmodes; +static void enable_quickfort_fn(pair& pair) { pair.second = true; } + class Planner { public: @@ -804,8 +809,7 @@ public: void enableQuickfortMode() { saved_planmodes = planmode_enabled; - for_each_(planmode_enabled, - [] (pair& pair) { pair.second = true; } ); + for_each_(planmode_enabled, enable_quickfort_fn); quickfort_mode = true; } @@ -1093,8 +1097,8 @@ struct buildingplan_hook : public df::viewscreen_dwarfmodest OutputHotkeyString(x, y, "Material Filter:", "m", true, left_margin); auto filter_descriptions = filter->getMaterialFilterAsVector(); - for_each_(filter_descriptions, - [&](string d) { OutputString(COLOR_BROWN, x, y, " *" + d, true, left_margin); }); + for (auto it = filter_descriptions.begin(); it != filter_descriptions.end(); ++it) + OutputString(COLOR_BROWN, x, y, " *" + *it, true, left_margin); } else { @@ -1121,8 +1125,8 @@ struct buildingplan_hook : public df::viewscreen_dwarfmodest OutputString(COLOR_BROWN, x, y, "Materials:", true, left_margin); auto filters = filter->getMaterialFilterAsVector(); - for_each_(filters, - [&](string d) { OutputString(COLOR_BLUE, x, y, "*" + d, true, left_margin); }); + for (auto it = filters.begin(); it != filters.end(); ++it) + OutputString(COLOR_BLUE, x, y, "*" + *it, true, left_margin); } else {