summaryrefslogtreecommitdiff
path: root/src/register_manager.hh
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2025-07-08 11:43:17 +1000
committerMaxime Coste <mawww@kakoune.org>2025-07-08 12:07:33 +1000
commitce1d512a0c1922ab5f43f28e7bae573508c98601 (patch)
tree7af8effd6b00c304cda1c87f657a0014fcdae2ae /src/register_manager.hh
parentfea08fc18d268ace4f843ec2b57cc33e36562098 (diff)
Replace std::unique_ptr with a custom implementation
<memory> is a costly header we can avoid by just implementing UniquePtr ourselves, which is a pretty straightforward in modern C++, this saves around 10% of the compilation time here.
Diffstat (limited to 'src/register_manager.hh')
-rw-r--r--src/register_manager.hh12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/register_manager.hh b/src/register_manager.hh
index 9d843eff..78125bac 100644
--- a/src/register_manager.hh
+++ b/src/register_manager.hh
@@ -84,19 +84,19 @@ public:
};
template<typename Func>
-std::unique_ptr<Register> make_dyn_reg(String name, Func func)
+UniquePtr<Register> make_dyn_reg(String name, Func func)
{
auto setter = [](Context&, ConstArrayView<String>)
{
throw runtime_error("this register is not assignable");
};
- return std::make_unique<DynamicRegister<Func, decltype(setter)>>(name, std::move(func), setter);
+ return make_unique_ptr<DynamicRegister<Func, decltype(setter)>>(name, std::move(func), setter);
}
template<typename Getter, typename Setter>
-std::unique_ptr<Register> make_dyn_reg(String name, Getter getter, Setter setter)
+UniquePtr<Register> make_dyn_reg(String name, Getter getter, Setter setter)
{
- return std::make_unique<DynamicRegister<Getter, Setter>>(name, std::move(getter), std::move(setter));
+ return make_unique_ptr<DynamicRegister<Getter, Setter>>(name, std::move(getter), std::move(setter));
}
class NullRegister : public Register
@@ -120,14 +120,14 @@ class RegisterManager : public Singleton<RegisterManager>
public:
Register& operator[](StringView reg) const;
Register& operator[](Codepoint c) const;
- void add_register(Codepoint c, std::unique_ptr<Register> reg);
+ void add_register(Codepoint c, UniquePtr<Register> reg);
CandidateList complete_register_name(StringView prefix, ByteCount cursor_pos) const;
auto begin() const { return m_registers.begin(); }
auto end() const { return m_registers.end(); }
protected:
- HashMap<Codepoint, std::unique_ptr<Register>, MemoryDomain::Registers> m_registers;
+ HashMap<Codepoint, UniquePtr<Register>, MemoryDomain::Registers> m_registers;
};
}