Advertisement
Guest User

sol.scratch.cpp

a guest
Dec 2nd, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <sol.hpp>
  2. #include <iostream>
  3. #include <tuple>
  4.  
  5. void breaking( ) {
  6.     std::cout << "Nice!~\n";
  7. }
  8.  
  9. std::tuple<double, double> breaking_multi( ) {
  10.     return std::make_tuple( 567.2, 2.567 );
  11. }
  12.  
  13. int main( ) {
  14.     sol::state lua;
  15.  
  16.     int a = 10;
  17.     int b = 11;
  18.     auto breaking_lambda = [ ] ( ) { std::cout << "Nice Lambda!\n"; };
  19.     lua.set_function( "arf", breaking );
  20.     lua.set_function( "arflambda", breaking_lambda );
  21.     lua.set_function( "arfmulti", breaking_multi );
  22.     lua.script( "arf()\n"
  23.         "arflambda()\n"
  24.         "x,y = arfmulti()\n"
  25.         "function add_double(a, b)\n"
  26.         "    return a + b, a + b;\n"
  27.         "end\n"
  28.         "function add(a, b)\n"
  29.         "    return a + b;\n"
  30.         "end\n"
  31.         "function ultra_add(a, b, c)\n"
  32.         "    return a + b + c;\n"
  33.         "end" );
  34.     auto fd = lua.get<sol::function>( "add_double" );
  35.     auto f = lua.get<sol::function>( "add" );
  36.     auto fx = lua.get<sol::function>( "ultra_add" );
  37.     std::tuple<int, int> arf = fd.invoke<int, int>( 10, 10 ); // 20, 20
  38.     std::cout << lua.get<double>( "x" ) << ", " << lua.get<double>( "y" ) << std::endl;
  39.     std::cout << std::get<0>( arf ) << ", " << std::get<1>( arf ) << std::endl; // 21
  40.     std::cout << f.invoke<int>( a, b ) << std::endl; // 21
  41.     std::cout << fx.invoke<int>( a, a, b ) << std::endl; // 31
  42.  
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement