blob: 41798d3b0b490d50f8b70ba3507ccf6d76d9c9b0 (
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#include <sol.hpp>
#include <string>
#include <iostream>
// this example shows how to read data in from a lua table
int main() {
std::cout << "=== tables example ===" << std::endl;
sol::state lua;
// table used as an array
lua.script("table1 = {\"hello\", \"table\"}");
// table with a nested table and the key value syntax
lua.script("table2 = {"
"[\"nestedTable\"] = {"
"[\"key1\"] = \"value1\","
"[\"key2\"]= \"value2\""
"},"
"[\"name\"]= \"table2\""
"}");
/* Shorter Syntax: */
// using the values stored in table1
/*std::cout << (std::string)lua["table1"][1] << " "
<< (std::string)lua["table1"][2] << '\n';
*/
// some retrieval of values from the nested table
// the cleaner way of doing things
// chain off the the get<>() / [] results
auto t2 = lua.get<sol::table>("table2");
auto nestedTable = t2.get<sol::table>("nestedTable");
// Alternatively:
//sol::table t2 = lua["table2"];
//sol::table nestedTable = t2["nestedTable"];
std::string x = lua["table2"]["nestedTable"]["key2"];
std::cout << "nested table: key1 : " << nestedTable.get<std::string>("key1") << ", key2: "
<< x
<< '\n';
std::cout << "name of t2: " << t2.get<std::string>("name") << '\n';
std::string t2name = t2["name"];
std::cout << "name of t2: " << t2name << '\n';
/* Longer Syntax: */
// using the values stored in table1
std::cout << lua.get<sol::table>("table1").get<std::string>(1) << " "
<< lua.get<sol::table>("table1").get<std::string>(2) << '\n';
// some retrieval of values from the nested table
// the cleaner way of doing things
std::cout << "nested table: key1 : " << nestedTable.get<std::string>("key1") << ", key2: "
// yes you can chain the get<>() results
<< lua.get<sol::table>("table2").get<sol::table>("nestedTable").get<std::string>("key2")
<< '\n';
std::cout << "name of t2: " << t2.get<std::string>("name") << '\n';
std::cout << std::endl;
}
|