summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pdynlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/pdynlib.h')
-rw-r--r--src/lib/netlist/plib/pdynlib.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lib/netlist/plib/pdynlib.h b/src/lib/netlist/plib/pdynlib.h
index 3a0c12a5f2d..f0883042111 100644
--- a/src/lib/netlist/plib/pdynlib.h
+++ b/src/lib/netlist/plib/pdynlib.h
@@ -35,6 +35,35 @@ private:
void *m_lib;
};
+template <typename R, typename... Args>
+class dynproc
+{
+public:
+ using calltype = R(*) (Args... args);
+
+ dynproc() : m_sym(nullptr) { }
+
+ dynproc(dynlib &dl, const pstring &name)
+ {
+ m_sym = dl.getsym<calltype>(name);
+ }
+
+ void load(dynlib &dl, const pstring &name)
+ {
+ m_sym = dl.getsym<calltype>(name);
+ }
+
+ R operator ()(Args&&... args) const
+ {
+ return m_sym(std::forward<Args>(args)...);
+ //return m_sym(args...);
+ }
+
+ bool resolved() { return m_sym != nullptr; }
+private:
+ calltype m_sym;
+};
+
}
#endif /* PSTRING_H_ */