ELC in dev
ELC-lang
载入中...
搜索中...
未找到
elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T > 模板结构体 参考
类 elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T > 继承关系图:
[图例]
elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T > 的协作图:
[图例]

Public 类型

typedef same_value_compress_string_data_t< char_Tthis_t
 
typedef base_string_data_t< char_Tbase_t
 
typedef comn_ptr_t< this_tptr_t
 
typedef string_view_t< char_Tstring_view_t
 
typedef char_Tstring_ptr_t
 
typedef const char_Tconst_string_ptr_t
 
- Public 类型 继承自 elc::defs::string_n::string_data_n::base_string_data_t< char_T >
typedef base_string_data_t< char_Tthis_t
 
typedef comn_ptr_t< this_tptr_t
 
typedef string_view_t< char_Tstring_view_t
 
typedef char_Tstring_ptr_t
 
typedef const char_Tconst_string_ptr_t
 
typedef compare_t::type< char_Tcompare_type
 

Public 成员函数

 same_value_compress_string_data_t (size_t size, char_T value) noexcept
 
 same_value_compress_string_data_t (size_t size, char_T value, ptr_t static_data_p) noexcept
 
ptr_t get_clone_with_new_size (size_t new_size) noexcept
 
virtual void be_replace_as (ptr_t a) noexcept(clear_nothrow) override final
 
virtual ptr_t get_substr_data (size_t begin, size_t size) noexcept override final
 
virtual size_t get_size () noexcept override final
 
virtual char_T arec (size_t index) noexcept(copy_construct_nothrow &&move_construct_nothrow) override final
 
void arec_set (size_t index, char_T a, ptr_t &p) noexcept(copy_assign_nothrow &&move_construct_nothrow) override final
 
virtual ptr_t do_remove_front (size_t size) noexcept(construct_nothrow &&copy_assign_nothrow) override final
 
virtual ptr_t do_remove_back (size_t size) noexcept(construct_nothrow &&copy_assign_nothrow) override final
 
virtual ptr_t do_pop_front (size_t size, ptr_t &self) noexcept(construct_nothrow &&copy_assign_nothrow) override final
 
virtual ptr_t do_pop_back (size_t size, ptr_t &self) noexcept(construct_nothrow &&copy_assign_nothrow) override final
 
void self_changed () noexcept
 
hash_t set_hash_cache (hash_t value) noexcept
 
- Public 成员函数 继承自 elc::defs::string_n::string_data_n::base_string_data_t< char_T >
 base_string_data_t () noexcept=default
 
 base_string_data_t (never_ref_num_zero_t) noexcept
 
bool is_unique () noexcept
 
virtual ~base_string_data_t () noexcept(destruct_nothrow)=default
 
virtual string_ptr_t get_c_str (ptr_t &) noexcept(get_data_nothrow)
 
virtual const_string_ptr_t get_const_c_str (ptr_t &p) noexcept(get_data_nothrow)
 
virtual const char_Tget_data (ptr_t &p) noexcept(get_data_nothrow)
 
virtual string_ptr_t get_unique_c_str (ptr_t &) noexcept(get_data_nothrow)
 
virtual ptr_t apply_str_to_begin (string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow)
 
virtual ptr_t apply_str_to_begin (ptr_t str) noexcept(apply_data_nothrow)
 
virtual ptr_t apply_str_to_end (string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow)
 
virtual ptr_t apply_str_to_end (ptr_t str) noexcept(apply_data_nothrow)
 
virtual ptr_t do_insert (size_t pos, string_view_t str) noexcept(copy_construct_nothrow)
 
virtual ptr_t do_insert (size_t pos, ptr_t str) noexcept
 
virtual ptr_t do_erase (size_t pos, size_t size) noexcept
 
bool equal_with (ptr_t with) noexcept(equal.nothrow< char_T >)
 
bool equal_with_same_size (ptr_t with) noexcept(equal.nothrow< char_T >)
 
bool equal_with (ptr_t with, size_t pos, size_t size) noexcept(equal.nothrow< char_T >)
 
bool equal_with (string_view_t with) noexcept(equal.nothrow< char_T >)
 
bool equal_with (const_string_ptr_t with) noexcept(equal.nothrow< char_T >)
 
compare_type compare_with (ptr_t with) noexcept(compare.nothrow< char_T >)
 
compare_type compare_with_same_size (ptr_t with) noexcept(compare.nothrow< char_T >)
 
compare_type compare_with (ptr_t with, size_t pos, size_t size) noexcept(compare.nothrow< char_T >)
 
compare_type compare_with (string_view_t with) noexcept(compare.nothrow< char_T >)
 
compare_type compare_with (const_string_ptr_t with) noexcept(compare.nothrow< char_T >)
 
hash_t get_hash (ptr_t &p) noexcept(hash_nothrow)
 
hash_t get_others_hash_with_calculated_before (hash_t before, size_t before_size, ptr_t &p, size_t pos, size_t size) noexcept(hash_nothrow)
 
float_size_t get_memory_cost () noexcept
 
float_size_t get_memory_cost_after_gc () noexcept
 
float_size_t get_gc_profit () noexcept
 
bool positive_gc_profit () noexcept
 
virtual const range_n::match_pattern< const char_T > & get_match_pattern_from_self (ptr_t &self) noexcept(copy_assign_nothrow &&move_construct_nothrow)
 
virtual const range_n::reverse_match_pattern< const char_T > & get_reverse_match_pattern_from_self (ptr_t &self) noexcept(copy_assign_nothrow &&move_construct_nothrow)
 
virtual ptr_t pre_alloc_before_begin (size_t size) noexcept
 
virtual ptr_t pre_alloc_after_end (size_t size) noexcept
 
virtual void do_output (text_ostream_t< char_T > &os)
 

Public 属性

size_t _size
 
char_T _value
 
ptr_t _static_data_p
 

静态 Public 属性

static constexpr size_t max_static_data_size =size_t(pow(BIT_POSSIBILITY, 9u))
 
static constexpr bool copy_assign_nothrow
 
static constexpr bool copy_construct_nothrow
 
static constexpr bool move_construct_nothrow
 
static constexpr bool construct_nothrow
 
static constexpr bool destruct_nothrow
 
static constexpr bool clear_nothrow
 
static constexpr bool ptr_reset_nothrow
 
static constexpr bool hash_nothrow
 
static constexpr bool get_data_nothrow
 
static constexpr bool apply_data_nothrow
 
- 静态 Public 属性 继承自 elc::defs::string_n::string_data_n::base_string_data_t< char_T >
static constexpr bool copy_assign_nothrow =copy_assign.nothrow<char_T>
 
static constexpr bool copy_construct_nothrow =copy_construct.nothrow<char_T>
 
static constexpr bool move_construct_nothrow =move_construct.nothrow<char_T>
 
static constexpr bool construct_nothrow =construct<char_T>.nothrow<>
 
static constexpr bool destruct_nothrow =destruct.nothrow<char_T>
 
static constexpr bool clear_nothrow =destruct_nothrow
 
static constexpr bool ptr_reset_nothrow =destruct_nothrow
 
static constexpr bool hash_nothrow =hash.nothrow<char_T>
 
static constexpr bool get_data_nothrow =copy_construct_nothrow&&destruct_nothrow
 
static constexpr bool apply_data_nothrow =construct_nothrow&&copy_assign_nothrow
 

Protected 成员函数

virtual void copy_part_data_to (char_T *to, size_t pos, size_t size) noexcept(copy_assign_nothrow) override final
 
virtual hash_t get_hash_detail (ptr_t &) noexcept(hash_nothrow) override final
 
virtual hash_t get_others_hash_with_calculated_before_detail (hash_t before, size_t before_size, ptr_t &, size_t pos, size_t size) noexcept(hash_nothrow) override final
 
virtual bool same_struct (ptr_t with) noexcept override final
 
virtual range_t< const char_T * > get_the_largest_complete_data_block_begin_form (size_t begin) noexcept override final
 
virtual bool same_struct_equal (ptr_t with) noexcept(equal.nothrow< char_T >) override final
 
virtual base_t::compare_type same_struct_compare (ptr_t with) noexcept(compare.nothrow< char_T >) override final
 
virtual float_size_t get_base_memory_cost () noexcept override final
 
- Protected 成员函数 继承自 elc::defs::string_n::string_data_n::base_string_data_t< char_T >
bool same_type (ptr_t a) noexcept
 
bool default_equal_method (ptr_t with) noexcept(equal.nothrow< char_T >)
 
compare_type default_compare_method (ptr_t with) noexcept(compare.nothrow< char_T >)
 
bool has_hash_cache () noexcept
 
void reset_hash_cache () noexcept
 
hash_t get_hash_cache () noexcept
 
hash_t set_hash_cache (hash_t value) noexcept
 
void self_changed () noexcept
 

额外继承的成员函数

- 静态 Protected 成员函数 继承自 elc::defs::string_n::string_data_n::base_string_data_t< char_T >
static void be_replace (this_t *a, ptr_t b) noexcept(ptr_reset_nothrow)
 
static void be_replace (ptr_t &a, ptr_t b) noexcept(ptr_reset_nothrow)
 
static void equivalent_optimization (auto &&a, auto &&b) noexcept(ptr_reset_nothrow)
 
- Protected 属性 继承自 elc::defs::string_n::string_data_n::base_string_data_t< char_T >
hash_t _hash_cache {}
 
bool _has_hash_cache =false
 

详细描述

template<typename char_T>
struct elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >

在文件 all_defs.cpp38420 行定义.

成员类型定义说明

◆ base_t

◆ const_string_ptr_t

◆ ptr_t

◆ string_ptr_t

◆ string_view_t

◆ this_t

构造及析构函数说明

◆ same_value_compress_string_data_t() [1/2]

◆ same_value_compress_string_data_t() [2/2]

template<typename char_T >
elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::same_value_compress_string_data_t ( size_t  size,
char_T  value,
ptr_t  static_data_p 
)
inlinenoexcept

在文件 all_defs.cpp38447 行定义.

成员函数说明

◆ arec()

template<typename char_T >
virtual char_T elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::arec ( size_t  index)
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38466 行定义.

38466 {
38467 return _value;
38468 }

◆ arec_set()

template<typename char_T >
void elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::arec_set ( size_t  index,
char_T  a,
ptr_t p 
)
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38469 行定义.

38469 {
38470 //小优化
38471 if(a==_value)return;
38472 if(_size==1){_value=a;_static_data_p.reset();return;}
38473 //若_size>max_static_data_size,将当前类型转换为sum_string_data_t
38475 //中间一段为comn_string_data_t,大小为max_static_data_size
38477 //尽量确保index在中间一段的中间
38478 const size_t index_in_tmp=min(index,max_static_data_size/2);
38479 //将中间一段的index处的值改为a
38480 tmp->arec_set(index_in_tmp,a,tmp);
38481 //判断是否需要附加其他段
38482 if(index>max_static_data_size/2){
38483 const size_t first_size=index-max_static_data_size/2;
38486 }
38487 const size_t last_size=_size-tmp->get_size();
38488 if(last_size){
38491 }
38492 p=tmp;
38493 return;
38494 }
38495 else
38496 base_t::arec_set(index,a,p);
38497 }
constexpr struct elc::defs::base::min_t min
virtual void arec_set(size_t index, char_T a, ptr_t &p) noexcept(copy_assign_nothrow &&move_construct_nothrow)=0

◆ be_replace_as()

template<typename char_T >
virtual void elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::be_replace_as ( ptr_t  a)
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38454 行定义.

38454 {
38456 }
virtual void be_replace_as(ptr_t a) noexcept(clear_nothrow)=0

◆ copy_part_data_to()

template<typename char_T >
virtual void elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::copy_part_data_to ( char_T to,
size_t  pos,
size_t  size 
)
inlinefinaloverrideprotectedvirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38462 行定义.

38462 {
38464 }
constexpr size_t size(::size_t v)
constexpr to_t< T > to(T v)
constexpr struct elc::defs::memory::lifetime_n::copy_assign_t copy_assign

◆ do_pop_back()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::do_pop_back ( size_t  size,
ptr_t self 
)
inlinefinaloverridevirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38528 行定义.

38528 {
38529 if(this->is_unique()){
38530 _size-=size;
38531 self_changed();
38532 return get_clone_with_new_size(size);
38533 }
38534 else{
38535 auto aret=get_clone_with_new_size(size);
38537 return aret;
38538 }
38539 }

◆ do_pop_front()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::do_pop_front ( size_t  size,
ptr_t self 
)
inlinefinaloverridevirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38516 行定义.

38516 {
38517 if(this->is_unique()){
38518 _size-=size;
38519 self_changed();
38520 return get_clone_with_new_size(size);
38521 }
38522 else{
38523 auto aret=get_clone_with_new_size(size);
38525 return aret;
38526 }
38527 }

◆ do_remove_back()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::do_remove_back ( size_t  size)
inlinefinaloverridevirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38507 行定义.

38507 {
38508 if(this->is_unique()){
38509 _size-=size;
38510 self_changed();
38511 return this;
38512 }
38513 else
38514 return get_clone_with_new_size(_size-size);
38515 }

◆ do_remove_front()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::do_remove_front ( size_t  size)
inlinefinaloverridevirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38498 行定义.

38498 {
38499 if(this->is_unique()){
38500 _size-=size;
38501 self_changed();
38502 return this;
38503 }
38504 else
38505 return get_clone_with_new_size(_size-size);
38506 }

◆ get_base_memory_cost()

template<typename char_T >
virtual float_size_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_base_memory_cost ( )
inlinefinaloverrideprotectedvirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38575 行定义.

38575 {
38576 return float_size_of(*this)+_static_data_p->get_memory_cost();
38577 }
#define float_size_of(...)
Definition all_defs.cpp:576

◆ get_clone_with_new_size()

template<typename char_T >
ptr_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_clone_with_new_size ( size_t  new_size)
inlinenoexcept

在文件 all_defs.cpp38448 行定义.

38448 {
38449 if(new_size==_size)return this;
38450 if(new_size==0)return nullptr;
38452 }

◆ get_hash_detail()

template<typename char_T >
virtual hash_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_hash_detail ( ptr_t )
inlinefinaloverrideprotectedvirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38541 行定义.

38541 {
38542 return hash.repeat_times(_value,_size);
38543 }
#define hash

◆ get_others_hash_with_calculated_before_detail()

template<typename char_T >
virtual hash_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_others_hash_with_calculated_before_detail ( hash_t  before,
size_t  before_size,
ptr_t ,
size_t  pos,
size_t  size 
)
inlinefinaloverrideprotectedvirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38544 行定义.

38544 {
38545 return hash.merge_array_hash_results(before,before_size,hash.repeat_times(_value,size),size);
38546 }

◆ get_size()

template<typename char_T >
virtual size_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_size ( )
inlinefinaloverridevirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38460 行定义.

38460{ return _size; }

◆ get_substr_data()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_substr_data ( size_t  begin,
size_t  size 
)
inlinefinaloverridevirtualnoexcept

重载 elc::defs::string_n::string_data_n::base_string_data_t< char_T > .

在文件 all_defs.cpp38457 行定义.

38457 {
38458 return get_clone_with_new_size(size);
38459 }

◆ get_the_largest_complete_data_block_begin_form()

template<typename char_T >
virtual range_t< const char_T * > elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::get_the_largest_complete_data_block_begin_form ( size_t  begin)
inlinefinaloverrideprotectedvirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38558 行定义.

38558 {
38559 if constexpr(construct<char_T>.trivial<const char_T&> && destruct.trivial<char_T>){
38560 if(!_static_data_p)
38563 }
38564 else
38565 return{&_value,note::size(1)};
38566 }
constexpr struct elc::defs::memory::lifetime_n::destruct_t destruct

◆ same_struct()

template<typename char_T >
virtual bool elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::same_struct ( ptr_t  with)
inlinefinaloverrideprotectedvirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38548 行定义.

38548 {
38549 auto wp=down_cast<this_t*>(with.get());
38550 if(wp->_value==_value && wp->_static_data_p!=_static_data_p){
38551 if(_static_data_p)
38552 wp->_static_data_p.do_replace(_static_data_p);
38553 elseif(wp->_static_data_p)
38554 _static_data_p.do_replace(wp->_static_data_p);
38555 }
38556 return true;//总size被保证一样
38557 }
#define elseif
Definition all_defs.cpp:650

◆ same_struct_compare()

template<typename char_T >
virtual base_t::compare_type elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::same_struct_compare ( ptr_t  with)
inlinefinaloverrideprotectedvirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38571 行定义.

38571 {
38572 auto wp=down_cast<this_t*>(with.get());
38573 return compare(_value,wp->_value);
38574 }
constexpr struct elc::defs::base::compare_t compare

◆ same_struct_equal()

template<typename char_T >
virtual bool elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::same_struct_equal ( ptr_t  with)
inlinefinaloverrideprotectedvirtualnoexcept

实现了 elc::defs::string_n::string_data_n::base_string_data_t< char_T >.

在文件 all_defs.cpp38567 行定义.

38567 {
38568 auto wp=down_cast<this_t*>(with.get());
38569 return equal(_value,wp->_value);
38570 }
constexpr struct elc::defs::base::equal_t equal

◆ self_changed()

template<typename char_T >
void elc::defs::string_n::string_data_n::base_string_data_t< char_T >::self_changed ( )
inlinenoexcept

在文件 all_defs.cpp35950 行定义.

◆ set_hash_cache()

类成员变量说明

◆ _size

◆ _static_data_p

◆ _value

◆ apply_data_nothrow

在文件 all_defs.cpp35573 行定义.

◆ clear_nothrow

在文件 all_defs.cpp35569 行定义.

◆ construct_nothrow

在文件 all_defs.cpp35567 行定义.

◆ copy_assign_nothrow

template<typename char_T >
constexpr bool elc::defs::string_n::string_data_n::base_string_data_t< char_T >::copy_assign_nothrow
staticconstexpr

在文件 all_defs.cpp35564 行定义.

◆ copy_construct_nothrow

template<typename char_T >
constexpr bool elc::defs::string_n::string_data_n::base_string_data_t< char_T >::copy_construct_nothrow
staticconstexpr

在文件 all_defs.cpp35565 行定义.

◆ destruct_nothrow

在文件 all_defs.cpp35568 行定义.

◆ get_data_nothrow

在文件 all_defs.cpp35572 行定义.

◆ hash_nothrow

在文件 all_defs.cpp35571 行定义.

◆ max_static_data_size

template<typename char_T >
constexpr size_t elc::defs::string_n::string_data_n::same_value_compress_string_data_t< char_T >::max_static_data_size =size_t(pow(BIT_POSSIBILITY, 9u))
staticconstexpr

在文件 all_defs.cpp38444 行定义.

◆ move_construct_nothrow

template<typename char_T >
constexpr bool elc::defs::string_n::string_data_n::base_string_data_t< char_T >::move_construct_nothrow
staticconstexpr

在文件 all_defs.cpp35566 行定义.

◆ ptr_reset_nothrow

在文件 all_defs.cpp35570 行定义.


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