MCPcopy Create free account
hub / github.com/ThePhD/sol2 / main

Function main

examples/source/read_only.cpp:16–51  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14}
15
16int main(int, char*[]) {
17
18 sol::state lua;
19 lua.open_libraries(sol::lib::base);
20
21 object my_obj;
22
23 sol::table obj_table = lua.create_named_table("object");
24
25 sol::table obj_metatable = lua.create_table_with();
26 obj_metatable.set_function(
27 "my_func", &object::my_func, &my_obj);
28 // Set whatever else you need to
29 // on the obj_metatable,
30 // not on the obj_table itself!
31
32 // Properly self-index metatable to block things
33 obj_metatable[sol::meta_function::new_index] = deny;
34 obj_metatable[sol::meta_function::index] = obj_metatable;
35
36 // Set it on the actual table
37 obj_table[sol::metatable_key] = obj_metatable;
38
39 try {
40 lua.script(R"(
41print(object.my_func)
42object["my_func"] = 24
43print(object.my_func)
44 )");
45 }
46 catch (const std::exception& e) {
47 std::cout << "an expected error occurred: " << e.what()
48 << std::endl;
49 }
50 return 0;
51}

Callers

nothing calls this directly

Calls 5

open_librariesMethod · 0.80
create_named_tableMethod · 0.80
create_table_withMethod · 0.80
scriptMethod · 0.80
whatMethod · 0.80

Tested by

no test coverage detected