Merge branch 'develop' of github.com:ChaiScript/ChaiScript into develop
This commit is contained in:
commit
11b372f526
@ -1,3 +1,13 @@
|
|||||||
|
# ChaiScript Versioning
|
||||||
|
|
||||||
|
ChaiScript tries to follow the [Semantic Versioning](http://semver.org/) scheme. This basically means:
|
||||||
|
|
||||||
|
* Major Version Number: API changes / breaking changes
|
||||||
|
* Minor Version Number: New Features
|
||||||
|
* Patch Version Number: Minor changes / enhancements
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Initializing ChaiScript
|
# Initializing ChaiScript
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -30,6 +40,19 @@ chai.add(chaiscript::fun<ReturnType (ParamType1, ParamType2)>(&function_with_ove
|
|||||||
```
|
```
|
||||||
chai.add(chaiscript::fun(std::static_cast<ReturnType (*)(ParamType1, ParamType2)>(&function_with_overloads)), "function_name");
|
chai.add(chaiscript::fun(std::static_cast<ReturnType (*)(ParamType1, ParamType2)>(&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<int(Derived::*)>(&Derived::data)), "data");
|
||||||
|
```
|
||||||
|
|
||||||
### Lambda
|
### Lambda
|
||||||
|
|
||||||
@ -68,6 +91,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_const(chaiscript::const_var(somevar), "somevar"); // global const. Throws if value is non-const
|
||||||
chai.add_global(chaiscript::var(somevar), "somevar"); // global 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<std::pair<int, std::string>> data_list;
|
||||||
|
data_list my_list{ make_pair(0, "Hello"), make_pair(1, "World") };
|
||||||
|
chai.add(chaiscript::bootstrap::standard_library::vector_type<data_list>("DataList"));
|
||||||
|
chai.add(chaiscript::bootstrap::standard_library::pair_type<data_list::value_type>("DataElement"));
|
||||||
|
chai.add(chaiscript::var(&my_list), "data_list");
|
||||||
|
chai.eval(R"_(
|
||||||
|
for(var i=0; i<data_list.size(); ++i)
|
||||||
|
{
|
||||||
|
print(to_string(data_list[i].first) + " " + data_list[i].second)
|
||||||
|
}
|
||||||
|
)_");
|
||||||
|
```
|
||||||
|
|
||||||
# Executing Script
|
# Executing Script
|
||||||
|
|
||||||
@ -80,6 +119,8 @@ chai.eval(R"(print("Hello World"))");
|
|||||||
|
|
||||||
## Unboxing Return Values
|
## Unboxing Return Values
|
||||||
|
|
||||||
|
Returns values are of the type `Boxed_Value` which is meant to be opaque to the programmer. Use one of the unboxing methods to access the internal data.
|
||||||
|
|
||||||
### Prefered
|
### Prefered
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -201,6 +242,9 @@ on your platform.
|
|||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
|
Note that any type of ChaiScript function can be passed freely to C++ and automatically
|
||||||
|
converted into an `std::function` object.
|
||||||
|
|
||||||
### General
|
### General
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user