summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/sol2/examples/namespacing.cpp
blob: 8d32744eb64a91d210c22ae5def58bc76ae616a1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#define SOL_CHECK_ARGUMENTS
#include <sol.hpp>
#include <cassert>

int main() {
	struct my_class {
		int b = 24;

		int f() const {
			return 24;
		}

		void g() {
			++b;
		}
	};

	sol::state lua;
	lua.open_libraries();

	sol::table bark = lua.create_named_table("bark");
	bark.new_usertype<my_class>("my_class",
		"f", &my_class::f,
		"g", &my_class::g
		); // the usual

	lua.script("obj = bark.my_class.new()"); // this works
	lua.script("obj:g()");
	my_class& obj = lua["obj"];
	assert(obj.b == 25);

	return 0;
}