Browse code

Move TagList's code to get tag order into its own function.

Also uses a lambda instead of binding.

Naram Qashat authored on 2021/03/19 18:52:14
Showing 2 changed files
... ...
@@ -13,6 +13,11 @@ using namespace std::placeholders;
13 13
 
14 14
 eq_str TagList::eqstr;
15 15
 
16
+auto TagList::GetTagOrder(const std::string &name) const -> TagsList::const_iterator
17
+{
18
+	return std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), [&](const std::string &tag) { return TagList::eqstr(tag, name); });
19
+}
20
+
16 21
 auto TagList::GetKeys() const -> const TagsList &
17 22
 {
18 23
 	return this->tagsOrder;
... ...
@@ -28,7 +33,7 @@ auto TagList::GetTags() const -> TagsList
28 33
 
29 34
 bool TagList::Exists(const std::string &name) const
30 35
 {
31
-	return std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name)) != this->tagsOrder.end();
36
+	return this->GetTagOrder(name) != this->tagsOrder.end();
32 37
 }
33 38
 
34 39
 std::string TagList::operator[](const std::string &name) const
... ...
@@ -41,8 +46,8 @@ std::string TagList::operator[](const std::string &name) const
41 46
 
42 47
 std::string &TagList::operator[](const std::string &name)
43 48
 {
44
-	auto tag = std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name));
45
-	if (tag == this->tagsOrder.end())
49
+	auto tagOrder = this->GetTagOrder(name);
50
+	if (tagOrder == this->tagsOrder.end())
46 51
 	{
47 52
 		this->tagsOrder.push_back(name);
48 53
 		this->tags[name] = "";
... ...
@@ -52,7 +57,7 @@ std::string &TagList::operator[](const std::string &name)
52 57
 
53 58
 void TagList::Remove(const std::string &name)
54 59
 {
55
-	auto tagOrder = std::find_if(this->tagsOrder.begin(), this->tagsOrder.end(), std::bind(TagList::eqstr, _1, name));
60
+	auto tagOrder = this->GetTagOrder(name);
56 61
 	if (tagOrder != this->tagsOrder.end())
57 62
 		this->tagsOrder.erase(tagOrder);
58 63
 	if (this->tags.count(name))
... ...
@@ -23,6 +23,8 @@ private:
23 23
 
24 24
 	Tags tags;
25 25
 	TagsList tagsOrder;
26
+
27
+	TagsList::const_iterator GetTagOrder(const std::string &name) const;
26 28
 public:
27 29
 	TagList() : tags(), tagsOrder() { }
28 30
 	const TagsList &GetKeys() const;