diff --git a/cheatsheet.md b/cheatsheet.md index 16bed0a..5319e59 100644 --- a/cheatsheet.md +++ b/cheatsheet.md @@ -30,6 +30,19 @@ chai.add(chaiscript::fun(&function_with_ove ``` chai.add(chaiscript::fun(std::static_cast(&function_with_overloads)), "function_name"); ``` +This overload technique is also used when exposing base member using derived type + +``` +struct Base +{ + int data; +}; + +struct Derived : public Base +{}; + +chai.add(chaiscript::fun(static_cast(&Derived::data)), "data"); +``` ### Lambda @@ -68,6 +81,22 @@ chai.add(chaiscript::const_var(somevar), "somevar"); // copied in and made const chai.add_global_const(chaiscript::const_var(somevar), "somevar"); // global const. Throws if value is non-const chai.add_global(chaiscript::var(somevar), "somevar"); // global non-const ``` +#Using STL +ChaiScript recognize many types from STL, but you have to add specific instantiation yourself. + +``` +typedef std::vector> data_list; + data_list my_list{ make_pair(0, "Hello"), make_pair(1, "World") }; + chai.add(chaiscript::bootstrap::standard_library::vector_type("DataList")); + chai.add(chaiscript::bootstrap::standard_library::pair_type("DataElement")); + chai.add(chaiscript::var(&my_list), "data_list"); + chai.eval(R"_( + for(var i=0; i