Changeset 79 for trunk


Ignore:
Timestamp:
06/02/13 00:53:25 (12 years ago)
Author:
epyon
Message:
  • lua::state::do_string can take a returns parameter
  • lua::state::load_* functions made private (for now?)
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/lua/lua_state.hh

    r77 r79  
    1919        namespace lua
    2020        {
    21                 const int ref_none = -2;
    22                 const int ref_nil  = -1;
     21                const int ref_none  = -2;
     22                const int ref_nil   = -1;
     23                const int ret_multi = -1;
    2324
    2425                class state;
    2526                typedef int reference;
    26                 static const int null_reference = -2;
    2727
    2828                class stack_guard
     
    6363                        state( bool load_libs = false );
    6464                        state( lua_State* state );
    65                         int load_string( const std::string& code, const std::string& name );
    66                         int load_stream( std::istream& stream, const std::string& name );
    67                         int load_file( const std::string& filename );
    68                         bool do_string( const std::string& code, const std::string& name );
     65                        bool do_string( const std::string& code, const std::string& name, int rvalues = 0 );
    6966                        bool do_stream( std::istream& stream, const std::string& name );
    7067                        bool do_file( const std::string& filename );
     
    7673                        ~state();
    7774                private:
    78                         int do_current( const std::string& name );
     75                        int load_string( const std::string& code, const std::string& name );
     76                        int load_stream( std::istream& stream, const std::string& name );
     77                        int load_file( const std::string& filename );
     78                        int do_current( const std::string& name, int rvalues = 0 );
    7979                        bool push( const std::string& path, bool global = true );
    8080                        void deep_pointer_copy( int index, void* obj );
  • trunk/src/lua/lua_state.cc

    r78 r79  
    7676}
    7777
    78 bool lua::state::do_string( const std::string& code, const std::string& name )
     78bool lua::state::do_string( const std::string& code, const std::string& name, int rvalues )
    7979{
    8080        lua::stack_guard( this );
     
    8585                return false;
    8686        }
    87         return do_current( name ) == 0;
     87        return do_current( name, rvalues ) == 0;
    8888}
    8989
     
    112112}
    113113
    114 int lua::state::do_current( const std::string& name )
    115 {
    116         int result = lua_pcall(L, 0, 0, 0);
     114int lua::state::do_current( const std::string& name, int rvalues )
     115{
     116        int result = lua_pcall(L, 0, rvalues, 0);
    117117        if (result)
    118118        {
  • trunk/tests/lualib_test/lualib_test.cc

    r78 r79  
    5353                        std::cout << "> " << input << std::endl;
    5454
    55                         int code = luaL_loadstring( state.get_raw(), input.c_str() );
    56                         if (code == 0) code = lua_pcall( state.get_raw(), 0, LUA_MULTRET, 0);
    57                         if (code != 0)
     55                        bool result = state.do_string( input, "", nv::lua::ret_multi );
     56                        if ( !result )
    5857                        {
    5958                                std::string error = lua_tostring( state.get_raw(), -1 );
Note: See TracChangeset for help on using the changeset viewer.