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

Public 类型

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

 end_apply_string_data_t (ptr_t str, string_view_t end) noexcept(construct_nothrow &&copy_assign_nothrow)
 
 end_apply_string_data_t (ptr_t str, size_t count, char_T ch) noexcept
 
 end_apply_string_data_t (ptr_t str, size_t count) noexcept
 
 end_apply_string_data_t (ptr_t str, pre_alloc_t, size_t end_count) 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_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 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
 
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_after_end (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_before_begin (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
 
void shrink () noexcept(_m.resize_nothrow)
 
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::end_apply_string_data_t< char_T >

在文件 all_defs.cpp37082 行定义.

成员类型定义说明

◆ base_t

◆ const_string_ptr_t

◆ ptr_t

◆ string_ptr_t

◆ string_view_t

◆ this_t

构造及析构函数说明

◆ end_apply_string_data_t() [1/4]

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

在文件 all_defs.cpp37108 行定义.

37108 :
37109 _to_size(str->get_size()),
37110 _used_size(end.size()),
37111 _to(str)
37112 {
37114 copy_assign[_used_size](note::from(end.begin()),note::to(_m.data()));
37115 }
constexpr size_T get_next_gold_size_to_resize_for_array(size_T size) noexcept
已知当前array的size,求下一个合适的提前分配大小
constexpr to_t< T > to(T v)
constexpr from_t< T > from(T v)
constexpr struct elc::defs::memory::lifetime_n::copy_assign_t copy_assign

◆ end_apply_string_data_t() [2/4]

template<typename char_T >
elc::defs::string_n::string_data_n::end_apply_string_data_t< char_T >::end_apply_string_data_t ( ptr_t  str,
size_t  count,
char_T  ch 
)
inlinenoexcept

在文件 all_defs.cpp37116 行定义.

37116 :
37117 _to_size(str->get_size()),
37119 _to(str)
37120 {
37123 }
constexpr T down_cast(U a) noexcept
向下转型至

◆ end_apply_string_data_t() [3/4]

template<typename char_T >
elc::defs::string_n::string_data_n::end_apply_string_data_t< char_T >::end_apply_string_data_t ( ptr_t  str,
size_t  count 
)
inlinenoexcept

在文件 all_defs.cpp37124 行定义.

37124 :
37125 _to_size(str->get_size()),
37127 _to(str)
37128 {
37130 }

◆ end_apply_string_data_t() [4/4]

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

在文件 all_defs.cpp37131 行定义.

37131 :
37132 _to_size(str->get_size()),
37133 _used_size(0),
37134 _to(str)
37135 {
37136 _m.resize(end_count);
37137 }

成员函数说明

◆ apply_str_to_begin() [1/2]

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

37280 {
37281 if(this->is_unique()){
37282 _to=_to->apply_str_to_begin(str);
37283 _to_size+=str->get_size();
37284 self_changed();
37285 return this;
37286 }
37287 else
37288 return base_t::apply_str_to_begin(str);
37289 }
virtual ptr_t apply_str_to_begin(string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow)

◆ apply_str_to_begin() [2/2]

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

37270 {
37271 if(this->is_unique()){
37272 _to=_to->apply_str_to_begin(str);
37273 _to_size+=str.size();
37274 self_changed();
37275 return this;
37276 }
37277 else
37278 return base_t::apply_str_to_begin(str);
37279 }

◆ apply_str_to_end() [1/2]

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

37266 {
37267 this->shrink();
37268 return base_t::apply_str_to_end(str);
37269 }
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::end_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.cpp37250 行定义.

37250 {
37251 if(this->is_unique()){
37252 if(_m.size()-_used_size>=str.size())
37253 copy_assign[str.size()](note::from(str.begin()),note::to(_m.data()+_used_size));
37254 else{
37255 const auto size_now=this->get_size()+str.size();
37257 _m.part_used_insert_with_resize(_used_size,str.size(),str.begin(),size_new,_used_size);
37258 }
37259 _used_size+=str.size();
37260 self_changed();
37261 return this;
37262 }
37263 else
37264 return base_t::apply_str_to_end(str);
37265 }
virtual size_t get_size() noexcept override final

◆ arec()

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

37232 {
37233 if(index<_to_size)
37234 return _to->arec(index);
37235 else
37236 return _m[index-_to_size];
37237 }

◆ arec_set()

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

37238 {
37239 if(this->is_unique()){
37240 if(index<_to_size)
37241 _to->arec_set(index,a,_to);
37242 else
37243 copy_assign(_m[index - _to_size],a);
37244 self_changed();
37245 }
37246 else
37247 base_t::arec_set(index,a,p);
37248 }
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::end_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.cpp37174 行定义.

37174 {
37175 if(type_info<this_t> == typeid(*a)){
37176 const auto p = down_cast<this_t*>(a.get());
37177 if(_used_size==p->_used_size && _to!=p->_to)
37179 }
37180 _m.clear();
37181 _to.reset();
37183 }
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::end_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.cpp37215 行定义.

37215 {
37216 if(pos+size<=_to_size)
37217 _to->copy_part_data_to(to,pos,size);
37218 else{
37219 if(pos<_to_size){
37220 _to->copy_part_data_to(to,pos,_to_size-pos);
37222 pos=0;
37224 to+=copied_size;
37225 }
37226 else
37227 pos-=_to_size;
37229 }
37230 }
constexpr size_t size(::size_t v)

◆ do_insert()

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

37185 {
37186 if(pos==0)
37187 return this->apply_str_to_begin(str);
37188 elseif(pos==get_size())
37190 elseif(this->is_unique()){
37191 if(pos<_to_size){
37192 _to=_to->do_insert(pos-_used_size,str);
37193 _to_size=_to->get_size();
37194 }
37195 else{
37196 pos-=_to_size;
37197 if(_m.size()-_used_size>=str.size()){
37198 copy_assign[_used_size-pos](note::from<const char_T*>(&_m[pos]),note::to((char_T*)&_m[pos+str.size()]));
37199 copy_assign[str.size()](note::from<const char_T*>(str.begin()),note::to<char_T*>(&_m[pos]));
37200 }
37201 else{
37202 const auto size_now=this->get_size()+str.size();
37204 _m.part_used_insert_with_resize(pos,str.size(),str.begin(),size_new,_used_size);
37205 }
37206 _used_size+=str.size();
37207 }
37208 self_changed();
37209 return this;
37210 }
37211 else
37212 return base_t::do_insert(pos,str);
37213 }
#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_begin(string_view_t str) noexcept(copy_construct_nothrow &&apply_data_nothrow) override final
virtual ptr_t apply_str_to_end(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::end_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.cpp37325 行定义.

37325 {
37326 if(this->is_unique() && _used_size>=size){
37328 self_changed();
37330 }
37331 else
37332 return base_t::do_pop_back(size,self);
37333 }
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::end_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.cpp37315 行定义.

37315 {
37316 if(this->is_unique() && size<_to_size){
37317 auto aret=_to->do_pop_front(size,_to);
37318 _to_size-=size;
37319 self_changed();
37320 return aret;
37321 }
37322 else
37323 return base_t::do_pop_front(size,self);
37324 }
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::end_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.cpp37304 行定义.

37304 {
37305 if(size>=_used_size)
37306 return _to->do_remove_back(size-_used_size);
37307 if(this->is_unique()){//&& size<_used_size
37309 self_changed();
37310 return this;
37311 }
37312 else
37313 return base_t::do_remove_back(size);
37314 }
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::end_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.cpp37290 行定义.

37290 {
37291 /*
37292 if(size>=_to_size)
37293 return get<comn_string_data_t<char_T>>(string_view_t{_m.begin(),_used_size+_to_size-size});
37294 */
37295 if(this->is_unique() && size<_to_size){
37296 _to=_to->do_remove_front(size);
37297 _to_size-=size;
37298 self_changed();
37299 return this;
37300 }
37301 else
37302 return base_t::do_remove_front(size);
37303 }
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::end_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.cpp37381 行定义.

37381 {
37382 return _to->get_memory_cost()+float_size_of(*this)+_m.size_in_byte();
37383 }
#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::end_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.cpp37168 行定义.

37168 {
37169 if(!_used_size)
37170 return _to->get_c_str(_to);
37171 else
37172 return base_t::get_c_str(p);
37173 }
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::end_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.cpp37335 行定义.

37335 {
37336 return hash.with_calculated_before(_to->get_hash(_to),_to_size,string_view_t(_m.begin(),_used_size));
37337 }
#define hash

◆ get_others_hash_with_calculated_before_detail()

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

37338 {
37339 if(pos+size<=_to_size)
37340 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,pos,size);
37341 else{
37342 if(pos<_to_size){
37343 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,pos,_to_size-pos);
37344 const auto calculated_size=_to_size-pos;
37345 pos=0;
37348 }
37349 else
37350 pos-=_to_size;
37351 before=hash.with_calculated_before(before,before_size,(const char_T*)_m+pos,size);
37352 }
37353 return before;
37354 }

◆ get_size()

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

37162 {
37163 if(begin+size<=_to_size)
37164 return _to->get_substr_data(begin,size);
37165 else
37166 return base_t::get_substr_data(begin,size);
37167 }
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::end_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.cpp37363 行定义.

37363 {
37364 if(begin < _to_size)
37365 return _to->get_the_largest_complete_data_block_begin_form(begin);
37366 else{
37367 begin-=_to_size;
37368 return{_m.begin()+begin,note::size(_used_size-begin)};
37369 }
37370 }

◆ marge_same_value_type()

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

在文件 all_defs.cpp37139 行定义.

37139 {
37140 while(type_info<this_t> == typeid(*_to) && _to->is_unique()){
37141 //合并重复的end_apply_string_data_t以防树状结构过深
37142 const auto p=down_cast<this_t*>(_to.get());
37143 discard=p->apply_str_to_end(string_view_t(_m.cbegin(),_used_size));
37144 _used_size=p->_used_size;
37145 _to_size=p->_to_size;
37146 _m=move(p->_m);
37147 _to=p->_to;//不要使用移动语义:智能指针的移动语义基于swap,会导致p->_to指向p,进而导致内存泄漏
37148 }
37149 }
constexpr struct elc::defs::base::discard_t discard
constexpr struct elc::defs::memory::lifetime_n::move_t move

◆ pre_alloc_after_end()

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

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

在文件 all_defs.cpp37385 行定义.

37385 {
37386 if(this->is_unique()){
37387 const auto size_new=_used_size+size;
37388 if(size_new>_m.size())
37389 _m.resize(size_new);
37390 return this;
37391 }
37392 return base_t::pre_alloc_after_end(size);
37393 }
virtual ptr_t pre_alloc_after_end(size_t size) noexcept

◆ same_struct()

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

37359 {
37360 auto wp = down_cast<this_t*>(with.get());
37361 return _used_size==wp->_used_size;// && _to_size==wp->_to_size; //总size被保证一样
37362 }

◆ same_struct_compare()

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

37375 {
37376 auto wp=down_cast<this_t*>(with.get());
37377 if(auto tmp=_to->compare_with_same_size(wp->_to); tmp!=0)
37378 return tmp;
37379 return compare((char_T*)_m.begin(),(char_T*)wp->_m.begin(),_used_size);
37380 }
constexpr struct elc::defs::base::compare_t compare

◆ same_struct_equal()

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

37371 {
37372 auto wp=down_cast<this_t*>(with.get());
37373 return _to->equal_with_same_size(wp->_to) && equal((char_T*)_m.begin(),(char_T*)wp->_m.begin(),_used_size);
37374 }
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.cpp37150 行定义.

37150 {
37152 #if defined(_MSC_VER) && defined(ELC_STRING_CHECKING_NOT_INITED_CHARS)
37153 push_and_disable_msvc_warning(4310);//截断常量警告diss
37154 for(size_t i=0;i<_used_size;i++)
37155 if(_m[i]==char_T(0xCDCDCDCD))
37156 __debugbreak();
37158 #endif
37160 }
#define pop_msvc_warning()
Definition all_defs.cpp:478
#define push_and_disable_msvc_warning(...)
Definition all_defs.cpp:479

◆ set_hash_cache()

◆ shrink()

template<typename char_T >
void elc::defs::string_n::string_data_n::end_apply_string_data_t< char_T >::shrink ( )
inlineprotectednoexcept

在文件 all_defs.cpp37355 行定义.

37355 {
37356 _m.resize(_used_size);
37357 }

类成员变量说明

◆ _m

◆ _to

◆ _to_size

◆ _used_size

在文件 all_defs.cpp37106 行定义.

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


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