]> git.tdb.fi Git - poefilter.git/commitdiff
Favor vector over list for simple types
authorMikko Rasa <tdb@tdb.fi>
Wed, 15 Aug 2018 00:11:51 +0000 (03:11 +0300)
committerMikko Rasa <tdb@tdb.fi>
Wed, 15 Aug 2018 00:11:51 +0000 (03:11 +0300)
source/choicecondition.h
source/condition.cpp
source/condition.h
source/filter.cpp
source/poefilter.cpp
source/poefilter.h

index 5a453290d2315387cdaae76debd9d86cd8144322..df4dacfd5c3e10f5e78abf9ad558f3e2e73a3b37 100644 (file)
@@ -20,7 +20,7 @@ public:
        virtual Condition *clone() const;
        virtual bool can_merge(const Condition &, const CompoundCondition &) const;
        virtual void add_lines(std::list<FilterStatement> &) const;
-       virtual void add_merged_lines(const std::list<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const;
+       virtual void add_merged_lines(const std::vector<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const;
 };
 
 
@@ -67,12 +67,12 @@ void ChoiceCondition<Traits>::add_lines(std::list<FilterStatement> &st) const
 }
 
 template<typename Traits>
-void ChoiceCondition<Traits>::add_merged_lines(const std::list<Condition *> &conditions, const CompoundCondition &parent, std::list<FilterStatement> &st) const
+void ChoiceCondition<Traits>::add_merged_lines(const std::vector<Condition *> &conditions, const CompoundCondition &parent, std::list<FilterStatement> &st) const
 {
        if(dynamic_cast<const OrCondition *>(&parent))
        {
                std::string line = Traits::get_keyword();
-               for(std::list<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+               for(std::vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
                        line += Msp::format(" \"%s\"", static_cast<const ChoiceCondition<Traits> *>(*i)->value);
                FilterStatement::add_line(st, line);
        }
index 12ee7301a33dd21a1ab9387089665a32024fb2e6..9ff02aa322db9f93bbf8ce6f623a1471666d51cd 100644 (file)
@@ -6,13 +6,13 @@ using namespace Msp;
 
 CompoundCondition::~CompoundCondition()
 {
-       for(list<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+       for(vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
                delete *i;
 }
 
 void CompoundCondition::clone_to(CompoundCondition &other) const
 {
-       for(list<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+       for(vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
                other.add((*i)->clone());
 }
 
@@ -31,7 +31,7 @@ Condition *AndCondition::clone() const
 
 void AndCondition::add_lines(list<FilterStatement> &st) const
 {
-       for(list<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+       for(vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
                (*i)->add_lines(st);
 }
 
@@ -46,7 +46,7 @@ Condition *OrCondition::clone() const
 void OrCondition::add_lines(list<FilterStatement> &st) const
 {
        bool merge = conditions.size()>1;
-       for(list<Condition *>::const_iterator i=conditions.begin(); (merge && ++i!=conditions.end()); )
+       for(vector<Condition *>::const_iterator i=conditions.begin(); (merge && ++i!=conditions.end()); )
                merge = conditions.front()->can_merge(**i, *this);
 
        if(merge)
@@ -54,7 +54,7 @@ void OrCondition::add_lines(list<FilterStatement> &st) const
        else
        {
                list<FilterStatement> result;
-               for(list<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
+               for(vector<Condition *>::const_iterator i=conditions.begin(); i!=conditions.end(); ++i)
                {
                        list<FilterStatement> sub_result = st;
                        (*i)->add_lines(sub_result);
index 59976aad096b19781895060bdd94dc806741cf58..90c844e07c7b562d34782bede8daf871c57269e9 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <list>
 #include <string>
+#include <vector>
 #include <msp/strings/format.h>
 #include "rarity.h"
 
@@ -19,14 +20,14 @@ public:
        virtual Condition *clone() const = 0;
        virtual bool can_merge(const Condition &, const CompoundCondition &) const { return false; }
        virtual void add_lines(std::list<FilterStatement> &) const = 0;
-       virtual void add_merged_lines(const std::list<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const { }
+       virtual void add_merged_lines(const std::vector<Condition *> &, const CompoundCondition &, std::list<FilterStatement> &) const { }
 };
 
 
 class CompoundCondition: public Condition
 {
 protected:
-       std::list<Condition *> conditions;
+       std::vector<Condition *> conditions;
 
 public:
        virtual ~CompoundCondition();
index 0f7a20e99ec929d03a2b2c5b07cfc52bbe4d71c7..02f8c3f6ccf278b1ab974e894f7aa2f09ff1304f 100644 (file)
@@ -94,7 +94,7 @@ bool Filter::Loader::category_order(const Category *c1, const Category *c2)
 
 void Filter::Loader::add_categories(const string &name, bool show)
 {
-       list<const Category *> categs;
+       vector<const Category *> categs;
        if(name.find('*')!=string::npos)
        {
                poe.find_categories(glob_to_re(name), categs);
@@ -102,12 +102,12 @@ void Filter::Loader::add_categories(const string &name, bool show)
                if(categs.empty())
                        throw key_error(name);
 
-               categs.sort(&category_order);
+               sort(categs, &category_order);
        }
        else
                categs.push_back(&poe.get_category(name));
 
-       for(list<const Category *>::const_iterator i=categs.begin(); i!=categs.end(); ++i)
+       for(vector<const Category *>::const_iterator i=categs.begin(); i!=categs.end(); ++i)
        {
                bool found = false;
                for(list<Block>::const_iterator j=obj.blocks.begin(); (!found && j!=obj.blocks.end()); ++j)
@@ -128,7 +128,7 @@ void Filter::Loader::add_categories(const string &name, bool show)
 
 void Filter::Loader::cancel(const string &name)
 {
-       list<const Category *> categs;
+       vector<const Category *> categs;
        if(name.find('*')!=string::npos)
        {
                poe.find_categories(glob_to_re(name), categs);
@@ -139,7 +139,7 @@ void Filter::Loader::cancel(const string &name)
        else
                categs.push_back(&poe.get_category(name));
 
-       for(list<const Category *>::const_iterator i=categs.begin(); i!=categs.end(); ++i)
+       for(vector<const Category *>::const_iterator i=categs.begin(); i!=categs.end(); ++i)
                for(list<Block>::iterator j=obj.blocks.begin(); j!=obj.blocks.end(); ++j)
                        if(j->category==*i)
                        {
index b90afc59d1b3f97c3567e0ce139eed2a90ff33d1..45995835f73ab888977f7f2e8f69a6d12efdd789 100644 (file)
@@ -34,7 +34,7 @@ const Category &PoeFilter::get_category(const string &name) const
        return get_item(categories, name);
 }
 
-void PoeFilter::find_categories(const Regex &re, list<const Category *> &categs) const
+void PoeFilter::find_categories(const Regex &re, vector<const Category *> &categs) const
 {
        for(map<string, Category>::const_iterator i=categories.begin(); i!=categories.end(); ++i)
                if(re.match(i->first))
index 666d0a60eb12912a031c2b66f401dd59100607ca..dec5fd33f6ce2eb2c2db19774224813cca4ccd2e 100644 (file)
@@ -37,7 +37,7 @@ public:
 
        const Theme &get_theme() const { return theme; }
        const Category &get_category(const std::string &) const;
-       void find_categories(const Msp::Regex &, std::list<const Category *> &) const;
+       void find_categories(const Msp::Regex &, std::vector<const Category *> &) const;
        const Filter &get_filter(const std::string &) const;
 };