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

Public 类型

typedef head_apply_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 成员函数

 head_apply_string_data_t (ptr_t str, string_view_t head) noexcept(construct_nothrow &&copy_assign_nothrow)
 
 head_apply_string_data_t (ptr_t str, pre_alloc_t, size_t head_size) noexcept(construct_nothrow)
 
void marge_same_value_type () noexcept
 
void self_changed () noexcept
 
virtual ptr_t get_substr_data (size_t begin, size_t size) noexcept override final
 
virtual string_ptr_t get_c_str (ptr_t &p) noexcept(get_data_nothrow) override final
 
virtual void be_replace_as (ptr_t a) noexcept(clear_nothrow) override final
 
virtual size_t get_size () noexcept override final
 
virtual ptr_t do_insert (size_t pos, string_view_t str) noexcept(copy_construct_nothrow) override final
 
virtual char_T arec (size_t index) noexcept(copy_construct_nothrow &&move_construct_nothrow) override final
 
virtual void arec_set (size_t index, char_T a, ptr_t &p) noexcept(copy_assign_nothrow &&move_construct_nothrow) override final
 
virtual ptr_t apply_str_to_begin (string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow) override final
 
virtual ptr_t apply_str_to_begin (ptr_t str) noexcept(apply_data_nothrow) override final
 
void shrink () noexcept(_m.forward_resize_nothrow)
 
virtual ptr_t apply_str_to_end (string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow) override final
 
virtual ptr_t apply_str_to_end (ptr_t str) noexcept(apply_data_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
 
virtual ptr_t pre_alloc_before_begin (size_t size) noexcept 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 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 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_after_end (size_t size) noexcept
 
virtual void do_output (text_ostream_t< char_T > &os)
 

Public 属性

array_t< char_T_m
 
ptr_t _to
 
size_t _to_size
 
size_t _used_size
 

静态 Public 属性

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::head_apply_string_data_t< char_T >

在文件 all_defs.cpp36708 行定义.

成员类型定义说明

◆ base_t

◆ const_string_ptr_t

◆ ptr_t

◆ string_ptr_t

◆ string_view_t

◆ this_t

构造及析构函数说明

◆ head_apply_string_data_t() [1/2]

template<typename char_T >
elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::head_apply_string_data_t ( ptr_t  str,
string_view_t  head 
)
inlinenoexcept

在文件 all_defs.cpp36734 行定义.

36734 :
36735 _to_size(str->get_size()),
36736 _used_size(head.size()),
36737 _to(str)
36738 {
36740 copy_assign[_used_size](note::from<const char_T*>(head.begin()),note::to<char_T*>(_m.end()-_used_size));
36741 }
constexpr size_T get_next_gold_size_to_resize_for_array(size_T size) noexcept
已知当前array的size,求下一个合适的提前分配大小
constexpr struct elc::defs::memory::lifetime_n::copy_assign_t copy_assign

◆ head_apply_string_data_t() [2/2]

template<typename char_T >
elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::head_apply_string_data_t ( ptr_t  str,
pre_alloc_t  ,
size_t  head_size 
)
inlinenoexcept

在文件 all_defs.cpp36742 行定义.

36742 :
36743 _to_size(str->get_size()),
36744 _used_size(0),
36745 _to(str)
36746 {
36747 _m.resize(head_size);
36748 }
constexpr T down_cast(U a) noexcept
向下转型至

成员函数说明

◆ apply_str_to_begin() [1/2]

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::apply_str_to_begin ( ptr_t  str)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp36883 行定义.

36883 {
36884 this->shrink();
36885 return base_t::apply_str_to_begin(str);
36886 }
virtual ptr_t apply_str_to_begin(string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow)
void shrink() noexcept(_m.forward_resize_nothrow)

◆ apply_str_to_begin() [2/2]

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::apply_str_to_begin ( string_view_t  str)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp36866 行定义.

36866 {
36867 if(this->is_unique()){
36868 const auto pos=_m.size()-_used_size;
36869 if(pos>=str.size())
36870 copy_assign[str.size()](note::from<const char_T*>(str.cbegin()),note::to<char_T*>(_m.end()-_used_size-str.size()));
36871 else{
36872 const auto size_now=this->get_size()+str.size();
36874 _m.part_used_insert_with_forward_resize(pos,str.size(),str.begin(),size_new,_used_size);
36875 }
36876 _used_size+=str.size();
36877 self_changed();
36878 return this;
36879 }
36880 else
36881 return base_t::apply_str_to_begin(str);
36882 }
virtual size_t get_size() noexcept override final
函数调用图:

◆ apply_str_to_end() [1/2]

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::apply_str_to_end ( ptr_t  str)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp36900 行定义.

36900 {
36901 if(this->is_unique()){
36902 _to=_to->apply_str_to_end(str);
36903 _to_size+=str->get_size();
36904 self_changed();
36905 return this;
36906 }
36907 else
36908 return base_t::apply_str_to_end(str);
36909 }
virtual ptr_t apply_str_to_end(string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow)

◆ apply_str_to_end() [2/2]

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::apply_str_to_end ( string_view_t  str)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp36890 行定义.

36890 {
36891 if(this->is_unique()){
36892 _to=_to->apply_str_to_end(str);
36893 _to_size+=str.size();
36894 self_changed();
36895 return this;
36896 }
36897 else
36898 return base_t::apply_str_to_end(str);
36899 }
函数调用图:

◆ arec()

template<typename char_T >
virtual char_T elc::defs::string_n::string_data_n::head_apply_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.cpp36845 行定义.

36845 {
36846 if(index<_used_size){
36847 const char_T* head_begin=_m.end()-_used_size;
36848 return head_begin[index];
36849 }
36850 else
36851 return _to->arec(index-_used_size);
36852 }

◆ arec_set()

template<typename char_T >
virtual void elc::defs::string_n::string_data_n::head_apply_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.cpp36853 行定义.

36853 {
36854 if(this->is_unique()){
36855 if(index<_used_size){
36857 copy_assign(head_begin[index],a);
36858 }
36859 else
36860 _to->arec_set(index-_used_size,a,_to);
36861 self_changed();
36862 }
36863 else
36864 base_t::arec_set(index,a,p);
36865 }
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::head_apply_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.cpp36785 行定义.

36785 {
36786 if(type_info<this_t> == typeid(*a)){
36787 const auto p = down_cast<this_t*>(a.get());
36788 if(_used_size==p->_used_size && _to!=p->_to)
36790 }
36791 _m.clear();
36792 _to.reset();
36794 }
virtual void be_replace_as(ptr_t a) noexcept(clear_nothrow)=0
static void equivalent_optimization(auto &&a, auto &&b) noexcept(ptr_reset_nothrow)

◆ copy_part_data_to()

template<typename char_T >
virtual void elc::defs::string_n::string_data_n::head_apply_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.cpp36827 行定义.

36827 {
36828 if(pos<_used_size){
36829 const char_T* head_begin=_m.end()-_used_size;
36830 const char_T* head_end=_m.end();
36832 size_t size_of_copy_from_head=min(size_t(head_end-copy_begin),size);
36833
36835 if(size!=size_of_copy_from_head){
36838 _to->copy_part_data_to(next_copy_begin_pos,0,size_left);
36839 }
36840 }
36841 else
36842 _to->copy_part_data_to(to,pos-_used_size,size);
36843 }
constexpr size_t size(::size_t v)
constexpr to_t< T > to(T v)
constexpr from_t< T > from(T v)
constexpr struct elc::defs::base::min_t min

◆ do_insert()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::do_insert ( size_t  pos,
string_view_t  str 
)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp36796 行定义.

36796 {
36797 if(pos==0)
36798 return this->apply_str_to_begin(str);
36799 elseif(pos==get_size())
36801 elseif(this->is_unique()){
36802 if(pos<_used_size){
36803 const auto pos_base=_m.size()-_used_size;
36804 if(pos_base>=str.size()){
36807 copy_assign[pos](note::from<const char_T*>(origin_head_begin),note::to<char_T*>(head_begin));
36808 copy_assign[str.size()](note::from<const char_T*>(str.begin()),note::to<char_T*>(head_begin+pos));
36809 }
36810 else{
36811 const auto size_now=this->get_size()+str.size();
36813 _m.part_used_insert_with_forward_resize(pos_base+pos,str.size(),str.begin(),size_new,_used_size);
36814 }
36815 _used_size+=str.size();
36816 }else{
36817 _to=_to->do_insert(pos-_used_size,str);
36818 _to_size=_to->get_size();
36819 }
36820 self_changed();
36821 return this;
36822 }
36823 else
36824 return base_t::do_insert(pos,str);
36825 }
#define elseif
Definition all_defs.cpp:650
virtual ptr_t do_insert(size_t pos, string_view_t str) noexcept(copy_construct_nothrow)
virtual ptr_t apply_str_to_end(string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow) override final
virtual ptr_t apply_str_to_begin(string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow) override final
函数调用图:

◆ do_pop_back()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_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.cpp36946 行定义.

36946 {
36947 if(this->is_unique()){
36948 auto aret=_to->do_pop_back(size,_to);
36949 _to_size-=size;
36950 self_changed();
36951 return aret;
36952 }
36953 else
36954 return base_t::do_pop_back(size,self);
36955 }
virtual ptr_t do_pop_back(size_t size, ptr_t &self) noexcept(construct_nothrow &&copy_assign_nothrow)

◆ do_pop_front()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_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.cpp36937 行定义.

36937 {
36938 if(this->is_unique() && _used_size>=size){
36940 self_changed();
36942 }
36943 else
36944 return base_t::do_pop_front(size,self);
36945 }
virtual ptr_t do_pop_front(size_t size, ptr_t &self) noexcept(construct_nothrow &&copy_assign_nothrow)

◆ do_remove_back()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_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.cpp36921 行定义.

36921 {
36922 /*
36923 if(size>=_to_size){
36924 const auto size_left=_used_size+_to_size-size;
36925 return get<comn_string_data_t<char_T>>(string_view_t{(char_T*)_m.end()-_used_size,size_left});
36926 }
36927 */
36928 if(this->is_unique() && size<_to_size){
36929 _to=_to->do_remove_back(size);
36930 _to_size-=size;
36931 self_changed();
36932 return this;
36933 }
36934 else
36935 return base_t::do_remove_back(size);
36936 }
virtual ptr_t do_remove_back(size_t size) noexcept(construct_nothrow &&copy_assign_nothrow)

◆ do_remove_front()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_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.cpp36910 行定义.

36910 {
36911 if(size>=_used_size)
36912 return _to->do_remove_front(size-_used_size);
36913 if(this->is_unique()){//&& size<_used_size
36915 self_changed();
36916 return this;
36917 }
36918 else
36919 return base_t::do_remove_front(size);
36920 }
virtual ptr_t do_remove_front(size_t size) noexcept(construct_nothrow &&copy_assign_nothrow)

◆ get_base_memory_cost()

template<typename char_T >
virtual float_size_t elc::defs::string_n::string_data_n::head_apply_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.cpp37018 行定义.

37018 {
37019 return _to->get_memory_cost()+float_size_of(*this)+_m.size_in_byte();
37020 }
#define float_size_of(...)
Definition all_defs.cpp:576

◆ get_c_str()

template<typename char_T >
virtual string_ptr_t elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::get_c_str ( ptr_t p)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp36779 行定义.

36779 {
36780 if(!_used_size)
36781 return _to->get_c_str(_to);
36782 else
36783 return base_t::get_c_str(p);
36784 }
virtual string_ptr_t get_c_str(ptr_t &) noexcept(get_data_nothrow)

◆ get_hash_detail()

template<typename char_T >
virtual hash_t elc::defs::string_n::string_data_n::head_apply_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.cpp36957 行定义.

36957 {
36958 push_and_disable_msvc_warning(26494);//未初始化警告diss
36959 hash_t result;
36961 if(_used_size){
36962 const char_T* head_begin=_m.end()-_used_size;
36963 result=hash(head_begin,_used_size);
36964 if(_to_size)
36965 result=hash.merge_array_hash_results(result,_used_size,_to->get_hash(_to),_to_size);
36966 }
36967 else
36968 result=_to->get_hash(_to);
36969 return result;
36970 }
#define hash
#define pop_msvc_warning()
Definition all_defs.cpp:478
#define push_and_disable_msvc_warning(...)
Definition all_defs.cpp:479
hash_n::hash_value_t hash_t

◆ get_others_hash_with_calculated_before_detail()

template<typename char_T >
virtual hash_t elc::defs::string_n::string_data_n::head_apply_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.cpp36971 行定义.

36971 {
36972 if(pos<_used_size){
36973 const char_T* head_begin=_m.end()-_used_size;
36974 const char_T* head_end=_m.end();
36976 const size_t size_of_calculate_from_head=min(size_t(head_end-calculate_begin),size);
36977
36982 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,0,size_left);
36983 }
36984 }
36985 else
36986 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,pos-_used_size,size);
36987 return before;
36988 }

◆ get_size()

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

◆ get_substr_data()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::head_apply_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.cpp36773 行定义.

36773 {
36774 if(begin>=_used_size)
36775 return _to->get_substr_data(begin-_used_size,size);
36776 else
36777 return base_t::get_substr_data(begin,size);
36778 }
virtual ptr_t get_substr_data(size_t begin, size_t size) noexcept

◆ 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::head_apply_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.cpp36994 行定义.

36994 {
36995 if(begin >= _used_size)
36996 return _to->get_the_largest_complete_data_block_begin_form(begin-_used_size);
36997 else{
36998 const char_T* head_begin = _m.end() - _used_size;
36999 const char_T* head_end = _m.end();
37000 const char_T* ret_begin = begin+head_begin;
37001 return{ret_begin, head_end};
37002 }
37003 }

◆ marge_same_value_type()

template<typename char_T >
void elc::defs::string_n::string_data_n::head_apply_string_data_t< char_T >::marge_same_value_type ( )
inlinenoexcept

在文件 all_defs.cpp36750 行定义.

36750 {
36751 while(type_info<this_t> == typeid(*_to) && _to->is_unique()){
36752 //合并重复的head_apply_string_data_t以防树状结构过深
36753 const auto p=down_cast<this_t*>(_to.get());
36754 discard=p->apply_str_to_begin(string_view_t{_m.cend()-_used_size,_used_size});
36755 _used_size=p->_used_size;
36756 _to_size=p->_to_size;
36757 _m=move(p->_m);
36758 _to=p->_to;//不要使用移动语义:智能指针的移动语义基于swap,会导致p->_to指向p,进而导致内存泄漏
36759 }
36760 }
constexpr struct elc::defs::base::discard_t discard
constexpr struct elc::defs::memory::lifetime_n::move_t move

◆ pre_alloc_before_begin()

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

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

在文件 all_defs.cpp37022 行定义.

37022 {
37023 if(this->is_unique()){
37024 const auto size_new=_used_size+size;
37025 if(size_new>_m.size())
37026 _m.forward_resize(size_new);
37027 return this;
37028 }
37029 return base_t::pre_alloc_before_begin(size);
37030 }
virtual ptr_t pre_alloc_before_begin(size_t size) noexcept

◆ same_struct()

template<typename char_T >
virtual bool elc::defs::string_n::string_data_n::head_apply_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.cpp36990 行定义.

36990 {
36991 auto wp=down_cast<this_t*>(with.get());
36992 return _used_size==wp->_used_size;// && _to_size==wp->_to_size; //总size被保证一样
36993 }

◆ same_struct_compare()

template<typename char_T >
virtual base_t::compare_type elc::defs::string_n::string_data_n::head_apply_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.cpp37010 行定义.

37010 {
37011 auto wp=down_cast<this_t*>(with.get());
37012 const char_T* head_begin = _m.end() - _used_size;
37013 const char_T* wp_head_begin = wp->_m.end() - _used_size;
37015 return tmp;
37016 return _to->compare_with_same_size(wp->_to);
37017 }
constexpr struct elc::defs::base::compare_t compare

◆ same_struct_equal()

template<typename char_T >
virtual bool elc::defs::string_n::string_data_n::head_apply_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.cpp37004 行定义.

37004 {
37005 auto wp=down_cast<this_t*>(with.get());
37006 const char_T* head_begin = _m.end() - _used_size;
37007 const char_T* wp_head_begin = wp->_m.end() - _used_size;
37008 return equal(head_begin,wp_head_begin,_used_size) && _to->equal_with_same_size(wp->_to);
37009 }
constexpr struct elc::defs::base::equal_t equal

◆ self_changed() [1/2]

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

在文件 all_defs.cpp35950 行定义.

◆ self_changed() [2/2]

在文件 all_defs.cpp36761 行定义.

36761 {
36763 #if defined(_MSC_VER) && defined(ELC_STRING_CHECKING_NOT_INITED_CHARS)
36764 push_and_disable_msvc_warning(4310);//截断常量警告diss
36765 for(size_t i=0;i<_used_size;++i)
36766 if(_m.end()[i-_used_size]==char_T(0xCDCDCDCD))
36767 __debugbreak();
36769 #endif
36771 }

◆ set_hash_cache()

◆ shrink()

在文件 all_defs.cpp36887 行定义.

36887 {
36888 _m.forward_resize(_used_size);
36889 }

类成员变量说明

◆ _m

◆ _to

◆ _to_size

◆ _used_size

在文件 all_defs.cpp36732 行定义.

◆ 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 行定义.

◆ 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 行定义.


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