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

Public 类型

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

 inserted_string_data_t (ptr_t to, ptr_t insert_data, size_t insert_pos) noexcept
 
virtual ptr_t get_substr_data (size_t begin, size_t size) noexcept 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 ptr_t do_erase (size_t pos, size_t size) noexcept 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
 
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
 
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 do_insert (size_t pos, ptr_t str) 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 属性

ptr_t _to
 
ptr_t _insert_data
 
size_t _to_size
 
size_t _insert_pos
 
size_t _insert_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 index) 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::inserted_string_data_t< char_T >

在文件 all_defs.cpp38019 行定义.

成员类型定义说明

◆ base_t

◆ const_string_ptr_t

◆ ptr_t

◆ string_ptr_t

◆ string_view_t

◆ this_t

构造及析构函数说明

◆ inserted_string_data_t()

成员函数说明

◆ apply_str_to_begin() [1/2]

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

38179 {
38180 if(this->is_unique()){
38181 const auto size=str->get_size();
38182 if(_insert_pos==0){
38183 _insert_data=_insert_data->apply_str_to_begin(str);
38185 }
38186 else{
38187 _to=_to->apply_str_to_begin(str);
38188 _to_size+=str->get_size();
38190 }
38191 self_changed();
38192 return this;
38193 }
38194 else
38195 return base_t::apply_str_to_begin(str);
38196 }
constexpr size_t size(::size_t v)
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::inserted_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.cpp38161 行定义.

38161 {
38162 if(this->is_unique()){
38163 const auto size=str.size();
38164 if(_insert_pos==0){
38165 _insert_data=_insert_data->apply_str_to_begin(str);
38167 }
38168 else{
38169 _to=_to->apply_str_to_begin(str);
38170 _to_size+=str.size();
38172 }
38173 self_changed();
38174 return this;
38175 }
38176 else
38177 return base_t::apply_str_to_begin(str);
38178 }

◆ apply_str_to_end() [1/2]

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

38213 {
38214 if(this->is_unique()){
38215 if(_insert_pos==_to_size){
38216 _insert_data=_insert_data->apply_str_to_end(str);
38217 _insert_size+=str->get_size();
38218 }
38219 else{
38220 _to=_to->apply_str_to_end(str);
38221 _to_size+=str->get_size();
38222 }
38223 self_changed();
38224 return this;
38225 }
38226 else
38227 return base_t::apply_str_to_end(str);
38228 }
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::inserted_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.cpp38197 行定义.

38197 {
38198 if(this->is_unique()){
38199 if(_insert_pos==_to_size){
38200 _insert_data=_insert_data->apply_str_to_end(str);
38201 _insert_size+=str.size();
38202 }
38203 else{
38204 _to=_to->apply_str_to_end(str);
38205 _to_size+=str.size();
38206 }
38207 self_changed();
38208 return this;
38209 }
38210 else
38211 return base_t::apply_str_to_end(str);
38212 }

◆ arec()

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

38139 {
38140 if(index>=_insert_pos && index<_insert_pos+_insert_size)
38141 return _insert_data->arec(index-_insert_pos);
38143 return _to->arec(index-_insert_size);
38144 else
38145 return _to->arec(index);
38146 }
#define elseif
Definition all_defs.cpp:650

◆ arec_set()

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

38148 {
38149 if(this->is_unique()){
38150 if(index>=_insert_pos && index<_insert_pos+_insert_size)
38151 _insert_data->arec_set(index-_insert_pos,a,p);
38153 _to->arec_set(index-_insert_size,a,p);
38154 else
38155 _to->arec_set(index,a,p);
38156 self_changed();
38157 }
38158 else
38159 base_t::arec_set(index,a,p);
38160 }
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::inserted_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.cpp38058 行定义.

38058 {
38059 if(type_info<this_t> == typeid(*a)){
38060 const auto p = down_cast<this_t*>(a.get());
38061 if(_insert_pos==p->_insert_pos && _insert_size==p->_insert_size){
38062 if(_to!=p->_to)
38064 if(_insert_data!=p->_insert_data)
38066 }
38067 }
38068 _to.reset();
38069 _insert_data.reset();
38071 }
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::inserted_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.cpp38074 行定义.

38074 {
38075 if(pos+size<_insert_pos)
38076 _to->copy_part_data_to(to,pos,size);
38078 _to->copy_part_data_to(to,pos-_insert_size,size);
38079 else{
38080 if(_insert_pos>pos){
38082 _to->copy_part_data_to(to,pos,size_before_insert_pos);
38085 }
38087 _insert_data->copy_part_data_to(to,0,size_before_insert_end);
38090 if(size)
38091 _to->copy_part_data_to(to,_insert_pos,size);
38092 }
38093 }
constexpr struct elc::defs::base::min_t min

◆ do_erase()

template<typename char_T >
virtual ptr_t elc::defs::string_n::string_data_n::inserted_string_data_t< char_T >::do_erase ( size_t  pos,
size_t  size 
)
inlinefinaloverridevirtualnoexcept

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

在文件 all_defs.cpp38115 行定义.

38115 {
38116 if(this->is_unique()){
38118 _insert_data=_insert_data->do_erase(pos-_insert_pos,size);
38120 self_changed();
38121 return this;
38122 }
38123 elseif(pos+size<_insert_pos){
38124 _to=_to->do_erase(pos,size);
38125 _to_size-=size;
38127 self_changed();
38128 return this;
38129 }
38131 _to=_to->do_erase(pos-_insert_size,size);
38132 _to_size-=size;
38133 self_changed();
38134 return this;
38135 }
38136 }
38137 return base_t::do_erase(pos,size);
38138 }
virtual ptr_t do_erase(size_t pos, size_t size) noexcept

◆ do_insert()

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

38095 {
38096 if(this->is_unique()){
38098 _insert_data=_insert_data->do_insert(pos-_insert_pos,str);
38099 _insert_size+=str.size();
38100 }
38102 _to=_to->do_insert(pos,str);
38103 _to_size+=str.size();
38104 _insert_pos+=str.size();
38105 }
38107 _to=_to->do_insert(pos-_insert_size,str);
38108 _to_size+=str.size();
38109 }
38110 self_changed();
38111 return this;
38112 }
38113 return base_t::do_insert(pos,str);
38114 }
virtual ptr_t do_insert(size_t pos, string_view_t str) noexcept(copy_construct_nothrow)

◆ do_pop_back()

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

38286 {
38287 if(this->is_unique()){
38288 if(_insert_pos+_insert_size <= _to_size-size){
38289 auto aret=_to->do_pop_back(size,_to);
38290 _to_size-=size;
38291 self_changed();
38292 return aret;
38293 }
38295 auto aret=_insert_data->do_pop_front(size,_insert_data);
38297 self_changed();
38298 return aret;
38299 }
38300 }
38301 return base_t::do_pop_back(size,self);
38302 }
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::inserted_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.cpp38268 行定义.

38268 {
38269 if(this->is_unique()){
38270 if(_insert_pos > size){
38271 auto aret=_to->do_pop_front(size,_to);
38272 _to_size-=size;
38274 self_changed();
38275 return aret;
38276 }
38277 elseif(_insert_pos==0 && _insert_size>=size){
38278 auto aret=_insert_data->do_pop_front(size,_insert_data);
38280 self_changed();
38281 return aret;
38282 }
38283 }
38284 return base_t::do_pop_front(size,self);
38285 }
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::inserted_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.cpp38249 行定义.

38249 {
38250 if(size>=_to_size-_insert_pos)
38251 return _to->do_remove_back(size-_insert_pos);
38252 if(this->is_unique()){
38253 if(_insert_pos+_insert_size <= _to_size-size){
38254 _to=_to->do_remove_back(size);
38255 _to_size-=size;
38256 self_changed();
38257 return this;
38258 }
38260 _insert_data=_insert_data->do_remove_front(size);
38262 self_changed();
38263 return this;
38264 }
38265 }
38266 return base_t::do_remove_back(size);
38267 }
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::inserted_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.cpp38229 行定义.

38229 {
38230 if(size>=_insert_pos+_insert_size)
38231 return _to->do_remove_front(size-_insert_size);
38232 if(this->is_unique()){
38233 if(_insert_pos > size){
38234 _to=_to->do_remove_front(size);
38235 _to_size-=size;
38237 self_changed();
38238 return this;
38239 }
38240 elseif(_insert_pos==0 && _insert_size>=size){
38241 _insert_data=_insert_data->do_remove_front(size);
38243 self_changed();
38244 return this;
38245 }
38246 }
38247 return base_t::do_remove_front(size);
38248 }
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::inserted_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.cpp38364 行定义.

38364 {
38365 return float_size_of(*this)+_insert_data->get_memory_cost()+_to->get_memory_cost();
38366 }
#define float_size_of(...)
Definition all_defs.cpp:576

◆ get_hash_detail()

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

38304 {
38305 auto result=hash(nothing);
38306 if(_insert_pos)
38307 result=_to->get_others_hash_with_calculated_before(result,0,_to,0,_insert_pos);
38308 result=hash.merge_array_hash_results(result,_insert_pos,_insert_data->get_hash(_insert_data),_insert_size);
38309 const auto size=_to_size-_insert_pos;
38310 if(size)
38311 result=_to->get_others_hash_with_calculated_before(result,_insert_pos+_insert_size,_to,_insert_pos,size);
38312 return result;
38313 }
#define hash
#define nothing
Definition all_defs.cpp:647

◆ get_others_hash_with_calculated_before_detail()

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

38314 {
38315 if(pos+size<_insert_pos)
38316 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,pos,size);
38318 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,pos-_insert_size,size);
38319 else{
38320 if(_insert_pos>pos){
38322 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,pos,size_before_insert_pos);
38325 }
38326 const auto size_before_insert_end=min(size,_insert_size);
38327 before=_insert_data->get_others_hash_with_calculated_before(before,before_size,_insert_data,0,size_before_insert_end);
38330 if(size)
38331 before=_to->get_others_hash_with_calculated_before(before,before_size,_to,_insert_pos,size);
38332 }
38333 return before;
38334 }

◆ get_size()

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

38048 {
38049 if(begin+size<_insert_pos)
38050 return _to->get_substr_data(begin,size);
38052 return _to->get_substr_data(begin-_insert_size,size);
38053 elseif(begin>=_insert_pos && begin+size<=_insert_pos+_insert_size)
38054 return _insert_data->get_substr_data(begin-_insert_pos,size);
38055 else
38056 return base_t::get_substr_data(begin,size);
38057 }
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::inserted_string_data_t< char_T >::get_the_largest_complete_data_block_begin_form ( size_t  index)
inlinefinaloverrideprotectedvirtualnoexcept

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

在文件 all_defs.cpp38340 行定义.

38340 {
38341 if(index>=_insert_pos && index<_insert_pos+_insert_size)
38342 return _insert_data->get_the_largest_complete_data_block_begin_form(index-_insert_pos);
38344 return _to->get_the_largest_complete_data_block_begin_form(index-_insert_size);
38345 else{
38346 auto aret=_to->get_the_largest_complete_data_block_begin_form(index);
38347 if(aret.size()+index > _insert_pos)
38348 aret = {aret.begin(), note::size(_insert_pos-index)};
38349 return aret;
38350 }
38351 }

◆ same_struct()

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

38336 {
38337 auto wp=down_cast<this_t*>(with.get());
38338 return _insert_pos==wp->_insert_pos && _insert_size==wp->_insert_size;//总size被保证一样
38339 }

◆ same_struct_compare()

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

38356 {
38357 auto wp=down_cast<this_t*>(with.get());
38358 if(auto tmp=_to->compare_with(wp->_to,0,_insert_pos); tmp!=0)
38359 return tmp;
38360 if(auto tmp=_insert_data->compare_with_same_size(wp->_insert_data); tmp!=0)
38361 return tmp;
38362 return _to->compare_with(wp->_to,_insert_pos,_to_size-(_insert_pos+_insert_size));
38363 }

◆ same_struct_equal()

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

38352 {
38353 auto wp=down_cast<this_t*>(with.get());
38354 return _insert_data->equal_with_same_size(wp->_insert_data) && _to->equal_with_same_size(wp->_to);
38355 }

◆ 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()

类成员变量说明

◆ _insert_data

◆ _insert_pos

在文件 all_defs.cpp38043 行定义.

◆ _insert_size

在文件 all_defs.cpp38044 行定义.

◆ _to

◆ _to_size

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


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