#define SOL_CHECK_ARGUMENTS 1 #include #include #include // this example shows how to read data in from a lua table int main() { std::cout << "=== tables ===" << 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("table2"); auto nestedTable = t2.get("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("key1") << ", key2: " << x << '\n'; std::cout << "name of t2: " << t2.get("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("table1").get(1) << " " << lua.get("table1").get(2) << '\n'; // some retrieval of values from the nested table // the cleaner way of doing things std::cout << "nested table: key1 : " << nestedTable.get("key1") << ", key2: " // yes you can chain the get<>() results << lua.get("table2").get("nestedTable").get("key2") << '\n'; std::cout << "name of t2: " << t2.get("name") << '\n'; std::cout << std::endl; }