ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::core::node_like结构体 参考abstract
类 elc::defs::core::node_like 继承关系图:
[图例]
elc::defs::core::node_like 的协作图:
[图例]

Public 类型

typedef node_like this_t
 

Public 成员函数

virtual base_type_info_t get_type_info () const noexcept=0
 
virtual value be_eval ()
 
virtual value be_call (ptr)
 
 node_like () noexcept=default
 
 node_like (never_ref_num_zero_t) noexcept
 
virtual ~node_like ()=default
 
virtual value arec (const value)=0
 
value operator[] (const value index)
 
value operator[] (auto &&index)
 
virtual void clear () noexcept=0
 
virtual operator hash_t () const noexcept
 
void destroy () noexcept
 
virtual void be_replace_as (ptr a) noexcept
 
virtual operator logical_bool () const noexcept
 
 operator bool () const noexcept
 
template<typename... Args>
value operator() (Args &&...rest)
 
logical_bool eq_with (const_ptr a) const noexcept
 
logical_bool equal_with (const_ptr a) const noexcept
 
ptr operator& () noexcept
 
const_ptr operator& () const noexcept
 
logical_bool operator== (const this_t &a) const noexcept
 

Protected 成员函数

virtual logical_bool was_equal_with (const_ptr) const noexcept=0
 
virtual logical_bool was_eq_with (const_ptr a) const noexcept
 
virtual constexpr size_t equal_level () const noexcept
 
virtual constexpr size_t eq_level () const noexcept
 
virtual void waiting_for_destroy () noexcept
 

友元

void the_waiting_for_destroy (node_like *a) noexcept
 

详细描述

在文件 all_defs.cpp32359 行定义.

成员类型定义说明

◆ this_t

构造及析构函数说明

◆ node_like() [1/2]

elc::defs::core::node_like::node_like ( )
defaultnoexcept

◆ node_like() [2/2]

elc::defs::core::node_like::node_like ( never_ref_num_zero_t  )
inlinenoexcept

在文件 all_defs.cpp32375 行定义.

32375{ attribute_ptr_cast<ref_able>(this)->init_never_ref_num_zero(); }
constexpr T down_cast(U a) noexcept
向下转型至

◆ ~node_like()

virtual elc::defs::core::node_like::~node_like ( )
virtualdefault

成员函数说明

◆ arec()

◆ be_call()

value elc::defs::core::node_like::be_call ( ptr  )
inlinevirtual

elc::defs::core::base_binary_function_node 重载.

在文件 all_defs.cpp32725 行定义.

32725 {
32726 return value(this);
32727}

◆ be_eval()

value elc::defs::core::node_like::be_eval ( )
inlinevirtual

elc::defs::core::expr , 以及 elc::defs::core::code_list 重载.

在文件 all_defs.cpp32722 行定义.

32722 {
32723 return value(this);
32724}

◆ be_replace_as()

virtual void elc::defs::core::node_like::be_replace_as ( ptr  a)
inlinevirtualnoexcept

elc::defs::core::base_constexpr_t , 以及 elc::defs::core::t_t 重载.

在文件 all_defs.cpp32391 行定义.

32391 {
32392 this->clear();
32394 }
virtual void clear() noexcept=0
constexpr void be_replace_as(T *new_p) noexcept

◆ clear()

◆ destroy()

void elc::defs::core::node_like::destroy ( )
inlinenoexcept

在文件 all_defs.cpp32388 行定义.

32388 {
32389 this->be_replace_as(null_ptr);
32390 }
virtual void be_replace_as(ptr a) noexcept

◆ eq_level()

virtual constexpr size_t elc::defs::core::node_like::eq_level ( ) const
inlineconstexprprotectedvirtualnoexcept

elc::defs::core::base_constexpr_t , 以及 elc::defs::core::void_t 重载.

在文件 all_defs.cpp32372 行定义.

32372{return 36;}

◆ eq_with()

logical_bool elc::defs::core::node_like::eq_with ( const_ptr  a) const
inlinenoexcept

在文件 all_defs.cpp32402 行定义.

32402 {
32403 const auto this_eqlv = this->eq_level();
32404 const auto arg_eqlv = a->eq_level();
32406 return a->was_eq_with(this);
32407 elseif(this_eqlv _big_than_ arg_eqlv)
32408 return this->was_eq_with(a);
32409 else
32410 return this->was_eq_with(a)&&a->was_eq_with(this);
32411 }
#define _small_than_
Definition all_defs.cpp:654
#define elseif
Definition all_defs.cpp:650
#define _big_than_
Definition all_defs.cpp:652
virtual logical_bool was_eq_with(const_ptr a) const noexcept
virtual constexpr size_t eq_level() const noexcept

◆ equal_level()

virtual constexpr size_t elc::defs::core::node_like::equal_level ( ) const
inlineconstexprprotectedvirtualnoexcept

elc::defs::core::base_constexpr_t , 以及 elc::defs::core::void_t 重载.

在文件 all_defs.cpp32371 行定义.

32371{return 36;}

◆ equal_with()

logical_bool elc::defs::core::node_like::equal_with ( const_ptr  a) const
inlinenoexcept

在文件 all_defs.cpp32412 行定义.

32412 {
32413 const auto this_equlv = this->equal_level();
32414 const auto arg_equlv = a->equal_level();
32416 return a->was_equal_with(this);
32417 elseif(this_equlv _big_than_ arg_equlv)
32418 return this->was_equal_with(a);
32419 else
32420 return this->was_equal_with(a)&&a->was_equal_with(this);
32421 }
virtual constexpr size_t equal_level() const noexcept
virtual logical_bool was_equal_with(const_ptr) const noexcept=0

◆ get_type_info()

◆ operator bool()

elc::defs::core::node_like::operator bool ( ) const
inlineexplicitnoexcept

在文件 all_defs.cpp32397 行定义.

32397{return(bool)this->operator logical_bool();}

◆ operator hash_t()

virtual elc::defs::core::node_like::operator hash_t ( ) const
inlineexplicitvirtualnoexcept

elc::defs::core::void_t, elc::defs::core::nil_t, elc::defs::core::t_t , 以及 elc::defs::core::binary_node_t< T > 重载.

在文件 all_defs.cpp32387 行定义.

32387{return hash((void*)this);}
#define hash

◆ operator logical_bool()

virtual elc::defs::core::node_like::operator logical_bool ( ) const
inlineexplicitvirtualnoexcept

elc::defs::core::void_t, elc::defs::core::nil_t , 以及 elc::defs::core::t_t 重载.

在文件 all_defs.cpp32396 行定义.

32396{return true;}

◆ operator&() [1/2]

const_ptr elc::defs::core::node_like::operator& ( ) const
inlinenoexcept

在文件 all_defs.cpp32424 行定义.

32424{return this;}

◆ operator&() [2/2]

ptr elc::defs::core::node_like::operator& ( )
inlinenoexcept

在文件 all_defs.cpp32423 行定义.

32423{return this;}

◆ operator()()

template<typename... Args>
value elc::defs::core::node_like::operator() ( Args &&...  rest)
inline

在文件 all_defs.cpp32400 行定义.

32400{return this->be_call(make_list(forward<Args>(rest)...));}
ptr make_list() noexcept
virtual value be_call(ptr)
函数调用图:

◆ operator==()

logical_bool elc::defs::core::node_like::operator== ( const this_t a) const
inlinenoexcept

在文件 all_defs.cpp32425 行定义.

32425 {
32426 return a.equal_with(this);
32427 }

◆ operator[]() [1/2]

value elc::defs::core::node_like::operator[] ( auto &&  index)
inline

在文件 all_defs.cpp32381 行定义.

32381 {
32382 return operator[](as_value(index));
32383 }
decltype(auto) as_value(T &&a) noexcept(as_value_nothrow_helper< T >())
value operator[](const value index)
函数调用图:

◆ operator[]() [2/2]

value elc::defs::core::node_like::operator[] ( const value  index)
inline

在文件 all_defs.cpp32730 行定义.

32730 {
32731 return arec(index);
32732}
virtual value arec(const value)=0

◆ waiting_for_destroy()

virtual void elc::defs::core::node_like::waiting_for_destroy ( )
inlineprotectedvirtualnoexcept

在文件 all_defs.cpp32430 行定义.

32430{clear();}

◆ was_eq_with()

virtual logical_bool elc::defs::core::node_like::was_eq_with ( const_ptr  a) const
inlineprotectedvirtualnoexcept

elc::defs::core::binary_node_t< T > 重载.

在文件 all_defs.cpp32370 行定义.

32370{return a.get()==this;}//不是a==this:ptr的opertaor==将调用在下方定义的pointer_equal,这会通过eq间接调用eq_with

◆ was_equal_with()

友元及相关函数文档

◆ the_waiting_for_destroy

void the_waiting_for_destroy ( node_like a)
friend

在文件 all_defs.cpp32445 行定义.

32445 {
32446 a->waiting_for_destroy();
32447}

该结构体的文档由以下文件生成: