summaryrefslogtreecommitdiff
path: root/src/interned_string.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-12-30 11:56:01 +0000
committerMaxime Coste <frrrwww@gmail.com>2014-12-30 11:56:01 +0000
commit0493cf6d626d84eab3f9ec8c04114edd6636fbf6 (patch)
tree72ab3773f70a86ed74d84297356a37ee672f21b4 /src/interned_string.cc
parentd4a929b42e41a8c2d44f5f3d6787e7d66d57384f (diff)
Use a struct rather than a std::pair for InternedString DataAndRefCount
Diffstat (limited to 'src/interned_string.cc')
-rw-r--r--src/interned_string.cc22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/interned_string.cc b/src/interned_string.cc
index 2f2f56f8..5395cf02 100644
--- a/src/interned_string.cc
+++ b/src/interned_string.cc
@@ -13,16 +13,16 @@ InternedString StringRegistry::acquire(StringView str)
{
slot = m_free_slots.back();
m_free_slots.pop_back();
- kak_assert(m_storage[slot].second == 0);
- m_storage[slot] = DataAndRefCount({str.begin(), str.end()}, 1);
+ kak_assert(m_storage[slot].refcount == 0);
+ m_storage[slot] = DataAndRefCount{{str.begin(), str.end()}, 1};
}
else
{
slot = m_storage.size();
- m_storage.push_back(DataAndRefCount({str.begin(), str.end()}, 1));
+ m_storage.push_back({{str.begin(), str.end()}, 1});
}
// Create a new string view that point to the storage data
- StringView storage_view{m_storage[slot].first.data(), (int)m_storage[slot].first.size()};
+ StringView storage_view{m_storage[slot].data.data(), (int)m_storage[slot].data.size()};
m_slot_map[storage_view] = slot;
return InternedString{storage_view, slot};
@@ -30,24 +30,24 @@ InternedString StringRegistry::acquire(StringView str)
size_t slot = it->second;
auto& data = m_storage[slot];
- ++data.second;
- return {{data.first.data(), (int)data.first.size()}, slot};
+ ++data.refcount;
+ return {{data.data.data(), (int)data.data.size()}, slot};
}
void StringRegistry::acquire(size_t slot)
{
kak_assert(slot < m_storage.size());
- kak_assert(m_storage[slot].second > 0);
- ++m_storage[slot].second;
+ kak_assert(m_storage[slot].refcount > 0);
+ ++m_storage[slot].refcount;
}
void StringRegistry::release(size_t slot) noexcept
{
- kak_assert(m_storage[slot].second > 0);
- if (--m_storage[slot].second == 0)
+ kak_assert(m_storage[slot].refcount > 0);
+ if (--m_storage[slot].refcount == 0)
{
m_free_slots.push_back(slot);
- std::vector<char>& data = m_storage[slot].first;
+ std::vector<char>& data = m_storage[slot].data;
auto it = m_slot_map.find(StringView{data.data(), (int)data.size()});
kak_assert(it != m_slot_map.end());
m_slot_map.erase(it);