diff options
| author | Maxime Coste <mawww@kakoune.org> | 2025-07-08 11:43:17 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2025-07-08 12:07:33 +1000 |
| commit | ce1d512a0c1922ab5f43f28e7bae573508c98601 (patch) | |
| tree | 7af8effd6b00c304cda1c87f657a0014fcdae2ae /src/register_manager.hh | |
| parent | fea08fc18d268ace4f843ec2b57cc33e36562098 (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.hh | 12 |
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; }; } |
