diff options
author | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-30 00:19:31 -0400 |
---|---|---|
committer | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-30 00:19:31 -0400 |
commit | bd3fe0cac583739bc0d7c4b5c8f301bb350abca0 (patch) | |
tree | 7eeb1aabcebd6999de1c3457d0882246ec0ff4d4 /lib/sol2/examples/source/singleton.cpp | |
parent | 2662ac356ce14dacfbc91689fd37244facff4989 (diff) |
Renamed lib to deps so github will ignore it for language stats
Diffstat (limited to 'lib/sol2/examples/source/singleton.cpp')
-rw-r--r-- | lib/sol2/examples/source/singleton.cpp | 69 |
1 files changed, 0 insertions, 69 deletions
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 <sol/sol.hpp> - -#include <iostream> - -#include <memory> -#include <mutex> - -struct SomeLib { -private: - SomeLib() {} -public: - static std::shared_ptr<SomeLib> 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> SomeLib::getInstance() { - static std::weak_ptr<SomeLib> 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>("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; -} |