From c467671ae8b6ec161c17e86f3383fd0625f755b8 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 19 Aug 2022 19:48:10 -0400 Subject: remove sol2 (will re-add as submodule) --- lib/sol2/examples/source/singleton.cpp | 69 ---------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 lib/sol2/examples/source/singleton.cpp (limited to 'lib/sol2/examples/source/singleton.cpp') diff --git a/lib/sol2/examples/source/singleton.cpp b/lib/sol2/examples/source/singleton.cpp deleted file mode 100644 index 81ea2a3..0000000 --- a/lib/sol2/examples/source/singleton.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#define SOL_ALL_SAFETIES_ON 1 -#include - -#include - -#include -#include - -struct SomeLib { -private: - SomeLib() {} -public: - static std::shared_ptr getInstance(); - - int doSomething() const { - return 20; - } - - // destructor must be public to work with - // std::shared_ptr and friends - // if you need it to be private, you must implement - // a custom deleter with access to the private members - // (e.g., a deleter struct defined in this class) - ~SomeLib() {} -}; - -std::shared_ptr SomeLib::getInstance() { - static std::weak_ptr instance; - static std::mutex m; - - m.lock(); - auto ret = instance.lock(); - if (!ret) { - ret.reset(new SomeLib()); - instance = ret; - } - m.unlock(); - - return ret; -} - -int main(int, char*[]) { - std::cout << "=== singleton ===" << std::endl; - - sol::state lua; - lua.open_libraries(sol::lib::base); - - lua.new_usertype("SomeLib", - "new", sol::no_constructor, - "getInstance", &SomeLib::getInstance, - "doSomething", &SomeLib::doSomething - ); - - lua.script(R"( - --- note we use the `.` here, not `:` (there's no self to access) -local sli = SomeLib.getInstance() - --- we use the `:` here because there is something to access -local value = sli:doSomething() - --- check -print('sli:doSomething() returned:', value) -assert(value == 20) -)"); - - std::cout << std::endl; - return 0; -} -- cgit v1.2.3