2026-07-25 23:01:18 +02:00
|
|
|
#include "bscript/compiler/model/ScopeName.h"
|
2024-08-11 23:01:38 +02:00
|
|
|
|
|
|
|
|
#include "clib/clib.h"
|
2024-08-18 16:09:21 +02:00
|
|
|
#include "clib/strutil.h"
|
2024-08-11 23:01:38 +02:00
|
|
|
|
|
|
|
|
namespace Pol::Bscript::Compiler
|
|
|
|
|
{
|
|
|
|
|
ScopeName ScopeName::Global = ScopeName( "" );
|
|
|
|
|
ScopeName ScopeName::None = ScopeName();
|
2025-09-04 19:37:40 +02:00
|
|
|
ScopeName ScopeName::Super = ScopeName( Compiler::SUPER );
|
2024-08-11 23:01:38 +02:00
|
|
|
|
2026-01-19 08:17:28 +01:00
|
|
|
ScopeName::ScopeName( std::string name ) : std::optional<std::string>( std::move( name ) ) {}
|
2024-08-11 23:01:38 +02:00
|
|
|
|
|
|
|
|
ScopeName::ScopeName() : std::optional<std::string>( std::nullopt ) {}
|
|
|
|
|
|
|
|
|
|
bool ScopeName::global() const
|
|
|
|
|
{
|
|
|
|
|
return empty() || value().empty();
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-18 16:09:21 +02:00
|
|
|
bool ScopeName::super() const
|
|
|
|
|
{
|
|
|
|
|
return has_value() && Clib::caseInsensitiveEqual( value(), ScopeName::Super.value() );
|
|
|
|
|
}
|
|
|
|
|
|
2024-08-11 23:01:38 +02:00
|
|
|
bool ScopeName::empty() const
|
|
|
|
|
{
|
|
|
|
|
return !has_value();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::string ScopeName::string() const
|
|
|
|
|
{
|
|
|
|
|
return value_or( "" );
|
|
|
|
|
}
|
2024-08-12 21:59:31 +02:00
|
|
|
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;
|
|
|
|
|
}
|
2024-08-11 23:01:38 +02:00
|
|
|
} // namespace Pol::Bscript::Compiler
|