diff options
author | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-30 00:45:36 -0400 |
---|---|---|
committer | Andy Belle-Isle <drumsetmonkey@gmail.com> | 2019-08-30 00:45:36 -0400 |
commit | dc2493e7525bb7633f697ef10f72b72b46222249 (patch) | |
tree | 9816755219e65d3f47fdce81c78f3736a7ddb8ab /deps/sol2/examples/source/singleton.cpp | |
parent | 9d2b31797d0cfd130802b69261df2cd402e39b49 (diff) |
Forget what I said, I just need to change git attributes to mark for vendor
Diffstat (limited to 'deps/sol2/examples/source/singleton.cpp')
-rw-r--r-- | deps/sol2/examples/source/singleton.cpp | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/deps/sol2/examples/source/singleton.cpp b/deps/sol2/examples/source/singleton.cpp deleted file mode 100644 index 81ea2a3..0000000 --- a/deps/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; -} |