From 61377c582e0f2675baa5f5e6e30a35d1a4164b33 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 1 May 2017 16:08:43 +0300 Subject: Add hxx extension for headers and lib prefix for library dir --- libbutl/string-table.txx | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 libbutl/string-table.txx (limited to 'libbutl/string-table.txx') diff --git a/libbutl/string-table.txx b/libbutl/string-table.txx new file mode 100644 index 0000000..b248ef3 --- /dev/null +++ b/libbutl/string-table.txx @@ -0,0 +1,33 @@ +// file : libbutl/string-table.txx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include // numeric_limits +#include // size_t +#include + +namespace butl +{ + template + I string_table:: + insert (const D& d) + { + std::size_t i (vec_.size () + 1); + + // Note: move(d) would be tricky since the key still points to it. + // + auto r (map_.emplace ( + key_type (&traits::key (d)), + value_type {static_cast (i), d})); + + if (r.second) + { + assert (i <= std::numeric_limits::max ()); + + r.first->first.p = &traits::key (r.first->second.d); // Update key. + vec_.push_back (r.first); + } + + return r.first->second.i; + } +} -- cgit v1.1