Changeset 166 for trunk/src/library.cc


Ignore:
Timestamp:
07/17/13 03:28:22 (12 years ago)
Author:
epyon
Message:
  • library - try_open and try_get functions added for non-throwing access
  • lua - compatibility layer mode added - the whole system can bind to lua 5.1, 5.2 or LuaJIT as a *RUNTIME* choice
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/library.cc

    r121 r166  
    4444{
    4545        m_name = name;
    46         open();
     46        if ( !open() )
     47        {
     48                m_handle = nullptr;
     49                NV_THROW( library_error, "Can't load library!", name );
     50        }
     51}
     52
     53bool nv::library::try_open( const std::string& name )
     54{
     55        m_name = name;
     56        if ( !open() )
     57        {
     58                m_handle = nullptr;
     59                return false;
     60        }
     61        return true;
    4762}
    4863
     
    5267}
    5368
    54 void library::open()
     69bool library::open( )
    5570{
    5671    if ( m_handle != NULL )
    5772    {
    58         return;
     73        return true;
    5974    }
    6075    NV_LOG( LOG_NOTICE, "library : loading '" + m_name + "'..." );
     
    7388    if ( m_handle == NULL )
    7489    {
    75         NV_THROW( library_error, "Can't load library!", name );
     90                NV_LOG( LOG_NOTICE, "library : '" + name + "' failed to open." );
     91                return false;
    7692    }
    7793    NV_LOG( LOG_NOTICE, "library : '" + name + "' loaded." );
     94        return true;
    7895}
    7996
     
    86103    }
    87104        return result;
     105}
     106
     107void* nv::library::try_get( const std::string& symbol )
     108{
     109        return (void*) NV_LIB_GET( (NV_LIB_HANDLE) m_handle, symbol.c_str() );
    88110}
    89111
Note: See TracChangeset for help on using the changeset viewer.