polserver/pol-core/bscript/compiler/model/ScopeName.cpp

52 lines
1.1 KiB
C++
Raw Permalink Normal View History

#include "bscript/compiler/model/ScopeName.h"
#include "clib/clib.h"
#include "clib/strutil.h"
namespace Pol::Bscript::Compiler
{
ScopeName ScopeName::Global = ScopeName( "" );
ScopeName ScopeName::None = ScopeName();
ScopeName ScopeName::Super = ScopeName( Compiler::SUPER );
ScopeName::ScopeName( std::string name ) : std::optional<std::string>( std::move( name ) ) {}
ScopeName::ScopeName() : std::optional<std::string>( std::nullopt ) {}
bool ScopeName::global() const
{
return empty() || value().empty();
}
bool ScopeName::super() const
{
return has_value() && Clib::caseInsensitiveEqual( value(), ScopeName::Super.value() );
}
bool ScopeName::empty() const
{
return !has_value();
}
std::string ScopeName::string() const
{
return value_or( "" );
}
bool ScopeName::operator<( const ScopeName& other ) const
{
if ( !has_value() && !other.has_value() )
{
return false;
}
if ( !has_value() && other.has_value() )
{
return true;
}
if ( has_value() && !other.has_value() )
{
return false;
}
return stricmp( value().c_str(), other.value().c_str() ) < 0;
}
} // namespace Pol::Bscript::Compiler