From 8603ccf16b5b5c59a69a90e0f7719c7977831de4 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 15 Aug 2018 23:13:25 -0700 Subject: [PATCH] ircd::m: Extend import check-and-reload to reference operator related. --- include/ircd/m/import.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/ircd/m/import.h b/include/ircd/m/import.h index 267cdc899..36566c5a6 100644 --- a/include/ircd/m/import.h +++ b/include/ircd/m/import.h @@ -34,6 +34,9 @@ struct ircd::m::import public: template auto operator()(args&&... a); + prototype *operator->(); + prototype &operator*(); + operator prototype &(); import(std::string modname, std::string symname); }; @@ -46,6 +49,30 @@ ircd::m::import::import(std::string modname, ,symname{std::move(symname)} {} +template +ircd::m::import::operator +prototype &() +{ + return this->operator*(); +} + +template +prototype & +ircd::m::import::operator*() +{ + return *this->operator->(); +} + +template +prototype * +ircd::m::import::operator->() +{ + if(unlikely(!*this)) + reload(); + + return mods::import::operator->(); +} + template template auto