From b8cd067632281173621d09c17e7115ceab93cc81 Mon Sep 17 00:00:00 2001 From: renchao_lu <renchao.lu@gmail.com> Date: Sun, 9 Jun 2019 16:45:41 +0200 Subject: [PATCH] [CL] Collect accepted items by item type. --- ChemistryLib/CreateOutput.cpp | 26 +++++++++---------- ChemistryLib/PhreeqcIOData/AqueousSolution.h | 3 +++ ChemistryLib/PhreeqcIOData/EquilibriumPhase.h | 3 +++ ChemistryLib/PhreeqcIOData/KineticReactant.h | 3 +++ 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ChemistryLib/CreateOutput.cpp b/ChemistryLib/CreateOutput.cpp index 310a2037b74..be4b3c1a2ea 100644 --- a/ChemistryLib/CreateOutput.cpp +++ b/ChemistryLib/CreateOutput.cpp @@ -7,7 +7,9 @@ * */ +#include <algorithm> #include <numeric> + #include "CreateOutput.h" namespace ChemistryLib @@ -21,20 +23,16 @@ std::unique_ptr<Output> createOutput( // Mark which phreeqc output items will be held. std::vector<OutputItem> accepted_items{{"pH", ItemType::pH}, {"pe", ItemType::pe}}; - for (auto const& component : components) - { - accepted_items.emplace_back(component.name, ItemType::Component); - } - for (auto const& equilibrium_phase : equilibrium_phases) - { - accepted_items.emplace_back(equilibrium_phase.name, - ItemType::EquilibriumPhase); - } - for (auto const& kinetic_reactant : kinetic_reactants) - { - accepted_items.emplace_back(kinetic_reactant.name, - ItemType::KineticReactant); - } + + auto accepted_item = [](auto const& item) { + return OutputItem(item.name, item.item_type); + }; + std::transform(components.begin(), components.end(), + std::back_inserter(accepted_items), accepted_item); + std::transform(equilibrium_phases.begin(), equilibrium_phases.end(), + std::back_inserter(accepted_items), accepted_item); + std::transform(kinetic_reactants.begin(), kinetic_reactants.end(), + std::back_inserter(accepted_items), accepted_item); // Record ids of which phreeqc output items will be dropped. BasicOutputSetups basic_output_setups(project_file_name); diff --git a/ChemistryLib/PhreeqcIOData/AqueousSolution.h b/ChemistryLib/PhreeqcIOData/AqueousSolution.h index 42844d77a7e..648bbc6972e 100644 --- a/ChemistryLib/PhreeqcIOData/AqueousSolution.h +++ b/ChemistryLib/PhreeqcIOData/AqueousSolution.h @@ -13,6 +13,8 @@ #include <string> #include <vector> +#include "ChemistryLib/Output.h" + namespace ChemistryLib { struct Component @@ -21,6 +23,7 @@ struct Component std::string const name; double amount; + static const ItemType item_type = ItemType::Component; }; enum class MeansOfAdjustingCharge diff --git a/ChemistryLib/PhreeqcIOData/EquilibriumPhase.h b/ChemistryLib/PhreeqcIOData/EquilibriumPhase.h index 21a2d206e8c..b6eb94408aa 100644 --- a/ChemistryLib/PhreeqcIOData/EquilibriumPhase.h +++ b/ChemistryLib/PhreeqcIOData/EquilibriumPhase.h @@ -13,6 +13,8 @@ #include <string> #include <vector> +#include "ChemistryLib/Output.h" + namespace BaseLib { class ConfigTree; @@ -38,5 +40,6 @@ struct EquilibriumPhase std::string const name; double amount; double const saturation_index; + static const ItemType item_type = ItemType::EquilibriumPhase; }; } // namespace ChemistryLib diff --git a/ChemistryLib/PhreeqcIOData/KineticReactant.h b/ChemistryLib/PhreeqcIOData/KineticReactant.h index 0c51aa50a50..5fd9418d8e7 100644 --- a/ChemistryLib/PhreeqcIOData/KineticReactant.h +++ b/ChemistryLib/PhreeqcIOData/KineticReactant.h @@ -14,6 +14,8 @@ #include <string> #include <vector> +#include "ChemistryLib/Output.h" + namespace ChemistryLib { struct KineticReactant @@ -36,5 +38,6 @@ struct KineticReactant std::string const name; double amount; std::vector<double> const parameters; + static const ItemType item_type = ItemType::KineticReactant; }; } // namespace ChemistryLib -- GitLab