Ignore:
Timestamp:
07/23/15 21:16:01 (10 years ago)
Author:
epyon
Message:
  • massive std::string removal
  • no header depends on std::string anymore (or any other STL header)
  • still some code files do (WIP)
  • massive refactoring where std::string was used
  • lua still messy (grep for string128 - used everywhere)
  • string_twine added
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gui/gui_style.cc

    r433 r440  
    77#include "nv/gui/gui_style.hh"
    88
     9#include "nv/gui/gui_environment.hh"
    910#include <nv/lua/lua_raw.hh>
    1011
     
    1213using namespace nv::gui;
    1314
    14 style::style()
    15 {
    16 }
    17 
    1815void style::load_style( const string_view& filename )
    1916{
     17        NV_ASSERT_ALWAYS( m_env, "Environment not set in style!" );
    2018        m_lua.do_file( filename );
    2119}
    2220
    23 bool style::get( element* e, const char* centry, const char* cselector, std::string& s )
     21bool style::get( element* e, const string_view& centry, const string_view& cselector, string128& s )
    2422{
    2523        lua::stack_guard guard( m_lua );
    26         if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TSTRING ) ) return false;
    27         s = lua_tostring( m_lua, -1 );
     24        if ( !resolve( e->m_id, e->m_class, cselector, centry, LUA_TSTRING ) ) return false;
     25        // TODO: create lua_tostringbuffer< size >
     26        s.assign( lua_tostring( m_lua, -1 ) );
    2827        return true;
    2928}
    3029
    31 bool style::get( element* e, const char* centry, const char* cselector, vec4& vec )
     30bool style::get( element* e, const string_view& centry, const string_view& cselector, vec4& vec )
    3231{
    3332        lua::stack_guard guard( m_lua );
    34         if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TTABLE ) ) return false;
     33        if ( !resolve( e->m_id, e->m_class, cselector, centry, LUA_TTABLE ) ) return false;
    3534        vec = vec4();
    3635        for ( int i = 0; i < 4; ++i )
     
    4443}
    4544
    46 bool style::get( element* e, const char* centry, const char* cselector, int& i )
     45bool style::get( element* e, const string_view& centry, const string_view& cselector, int& i )
    4746{
    4847        lua::stack_guard guard( m_lua );
    49         if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TNUMBER ) ) return false;
     48        if ( !resolve( e->m_id, e->m_class, cselector, centry, LUA_TNUMBER ) ) return false;
    5049        i = static_cast< int >( lua_tointeger( m_lua, -1 ) );
    5150        return true;
    5251}
    5352
    54 bool style::get( element* e, const char* centry, const char* cselector, double& d )
     53bool style::get( element* e, const string_view& centry, const string_view& cselector, double& d )
    5554{
    5655        lua::stack_guard guard( m_lua );
    57         if ( !resolve( e->m_id.c_str(), e->m_class.c_str(), cselector, centry, LUA_TNUMBER ) ) return false;
     56        if ( !resolve( e->m_id, e->m_class, cselector, centry, LUA_TNUMBER ) ) return false;
    5857        d = lua_tonumber( m_lua, -1 );
    5958        return true;
     
    6463}
    6564
    66 bool style::find_entry( const char* cselector, const char* centry, int type )
     65bool style::find_entry( const string_view& cselector, const string_view& centry, int type )
    6766{
    6867        if ( lua_istable( m_lua, -1 ) )
    6968        {
    70                 if ( cselector )
     69                if ( !cselector.empty() )
    7170                {
    72                         lua_getfield( m_lua, -1, cselector );
     71                        lua_getfield( m_lua, -1, cselector.data() );
    7372                        if ( lua_istable( m_lua, -1 ) )
    7473                        {
    75                                 lua_getfield( m_lua, -1, centry );
     74                                lua_getfield( m_lua, -1, centry.data() );
    7675                                if ( lua_type( m_lua, -1 ) == type )
    7776                                {
     
    8382                }
    8483
    85                 lua_getfield( m_lua, -1, centry );
     84                lua_getfield( m_lua, -1, centry.data() );
    8685                if ( lua_type( m_lua, -1 ) == type ) return true;
    8786        }
     
    8988}
    9089
    91 bool style::resolve( const char* cid, const char* cclass, const char* cselector, const char* centry, int type )
     90bool style::resolve( shash64 cid, shash64 cclass, const string_view& cselector, const string_view& centry, int type )
    9291{
    9392        lua_getglobal( m_lua, "default" );
     
    9594
    9695        // check id
    97         lua_getfield( m_lua, -1, cid );
    98         if ( find_entry( cselector, centry, type ) ) return true;
    99         lua_settop( m_lua, global );
    100 
     96        string_view id( m_env->get_string( cid ) );
     97        if ( !id.empty() )
     98        {
     99                lua_getfield( m_lua, -1, id.data() );
     100                if ( find_entry( cselector, centry, type ) ) return true;
     101                lua_settop( m_lua, global );
     102        }
    101103        // check class
    102         lua_getfield( m_lua, -1, cclass );
    103         if ( find_entry( cselector, centry, type ) ) return true;
    104         lua_settop( m_lua, global );
     104        string_view klass( m_env->get_string( cclass ) );
     105        if ( !klass.empty() )
     106        {
     107                lua_getfield( m_lua, -1, klass.data() );
     108                if ( find_entry( cselector, centry, type ) ) return true;
     109                lua_settop( m_lua, global );
     110        }
    105111
    106112        // check entry
Note: See TracChangeset for help on using the changeset viewer.