ManaPlus
Data Structures | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | Friends
mse::msevector< _Ty, _A >::mm_iterator_set_type Class Reference

Data Structures

class  assignable_CMMConstIterators_value_type
 
class  assignable_CMMIterators_value_type
 
class  CMMConstIterators
 
class  CMMIterators
 

Public Member Functions

 ~mm_iterator_set_type ()
 
void apply_to_all_mm_const_iterator_shptrs (const std::function< void(std::shared_ptr< mm_const_iterator_type > &)> &func_obj_ref)
 
void apply_to_all_mm_iterator_shptrs (const std::function< void(std::shared_ptr< mm_iterator_type > &)> &func_obj_ref)
 
 mm_iterator_set_type (_Myt &owner_ref)
 
void reset ()
 
void sync_iterators_to_index ()
 
void invalidate_inclusive_range (msev_size_t start_index, msev_size_t end_index)
 
void shift_inclusive_range (msev_size_t start_index, msev_size_t end_index, msev_int shift)
 
bool is_empty () const
 
mm_const_iterator_handle_type allocate_new_const_item_pointer ()
 
void release_const_item_pointer (mm_const_iterator_handle_type handle)
 
mm_iterator_handle_type allocate_new_item_pointer ()
 
void release_item_pointer (mm_iterator_handle_type handle)
 
void release_all_item_pointers ()
 
mm_const_iterator_typeconst_item_pointer (mm_const_iterator_handle_type handle) const
 
mm_iterator_typeitem_pointer (mm_iterator_handle_type handle)
 

Private Member Functions

void release_all_const_item_pointers ()
 
mm_iterator_set_typeoperator= (const mm_iterator_set_type &src_cref)
 
mm_iterator_set_typeoperator= (mm_iterator_set_type &&src)
 
 mm_iterator_set_type (const mm_iterator_set_type &src)
 
 mm_iterator_set_type (const mm_iterator_set_type &&src)
 
bool mm_const_fast_mode1 () const
 
bool mm_fast_mode1 () const
 

Private Attributes

CHashKey1 m_next_available_key = 0
 
int m_fm1_num_mm_const_iterators = 0
 
assignable_CMMConstIterators_value_type m_fm1_key_mm_const_it_array [sc_fm1_max_mm_iterators]
 
CMMConstIteratorsm_aux_mm_const_iterator_shptrs_ptr = nullptr
 
int m_fm1_num_mm_iterators = 0
 
assignable_CMMIterators_value_type m_fm1_key_mm_it_array [sc_fm1_max_mm_iterators]
 
CMMIteratorsm_aux_mm_iterator_shptrs_ptr = nullptr
 
_Mytm_owner_ptr = nullptr
 

Static Private Attributes

static const int sc_fm1_max_mm_iterators = 6
 

Friends

class msevector< _Ty, _A >
 

Detailed Description

template<class _Ty, class _A = std::allocator<_Ty>>
class mse::msevector< _Ty, _A >::mm_iterator_set_type

Definition at line 1139 of file msemsevector.h.

Constructor & Destructor Documentation

◆ ~mm_iterator_set_type()

template<class _Ty , class _A = std::allocator<_Ty>>
mse::msevector< _Ty, _A >::mm_iterator_set_type::~mm_iterator_set_type ( )
inline

◆ mm_iterator_set_type() [1/3]

template<class _Ty , class _A = std::allocator<_Ty>>
mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_iterator_set_type ( _Myt owner_ref)
inline

Definition at line 1192 of file msemsevector.h.

◆ mm_iterator_set_type() [2/3]

template<class _Ty , class _A = std::allocator<_Ty>>
mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_iterator_set_type ( const mm_iterator_set_type src)
inlineprivate

Definition at line 1406 of file msemsevector.h.

1406 { /* see above */ }

◆ mm_iterator_set_type() [3/3]

template<class _Ty , class _A = std::allocator<_Ty>>
mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_iterator_set_type ( const mm_iterator_set_type &&  src)
inlineprivate

Definition at line 1407 of file msemsevector.h.

1407 { /* see above */ }

Member Function Documentation

◆ allocate_new_const_item_pointer()

template<class _Ty , class _A = std::allocator<_Ty>>
mm_const_iterator_handle_type mse::msevector< _Ty, _A >::mm_iterator_set_type::allocate_new_const_item_pointer ( )
inline

Definition at line 1246 of file msemsevector.h.

1246  {
1247  //auto shptr = std::shared_ptr<mm_const_iterator_type>(new mm_const_iterator_type(*m_owner_ptr));
1248  auto shptr = std::make_shared<mm_const_iterator_type>(*m_owner_ptr);
1250  mm_const_iterator_handle_type retval(key, shptr);
1251  typename CMMConstIterators::value_type new_item(key, shptr);
1252  if (!mm_const_fast_mode1()) {
1253  (*m_aux_mm_const_iterator_shptrs_ptr).insert(new_item);
1254  } else {
1256  /* Too many items. Initiate and switch to slow mode. */
1257  /* Initialize slow storage. */
1258  m_aux_mm_const_iterator_shptrs_ptr = new CMMConstIterators();
1259  /* First copy the items from fast storage to slow storage. */
1260  for (int i = 0; i < sc_fm1_max_mm_iterators; i += 1) {
1261  (*m_aux_mm_const_iterator_shptrs_ptr).insert(m_fm1_key_mm_const_it_array[i]);
1262  }
1263  /* Add the new items to slow storage. */
1264  (*m_aux_mm_const_iterator_shptrs_ptr).insert(new_item);
1265  }
1266  else {
1269  }
1270  }
1271  return retval;
1272  }
assignable_CMMConstIterators_value_type m_fm1_key_mm_const_it_array[sc_fm1_max_mm_iterators]

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_aux_mm_const_iterator_shptrs_ptr, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_const_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_const_iterators, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_next_available_key, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_owner_ptr, mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_const_fast_mode1(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::sc_fm1_max_mm_iterators.

Referenced by mse::msevector< _Ty, _A >::allocate_new_const_item_pointer().

◆ allocate_new_item_pointer()

template<class _Ty , class _A = std::allocator<_Ty>>
mm_iterator_handle_type mse::msevector< _Ty, _A >::mm_iterator_set_type::allocate_new_item_pointer ( )
inline

Definition at line 1306 of file msemsevector.h.

1306  {
1307  //auto shptr = std::shared_ptr<mm_iterator_type>(new mm_iterator_type(*m_owner_ptr));
1308  auto shptr = std::make_shared<mm_iterator_type>(*m_owner_ptr);
1310  mm_iterator_handle_type retval(key, shptr);
1311  typename CMMIterators::value_type new_item(key, shptr);
1312  if (!mm_fast_mode1()) {
1313  (*m_aux_mm_iterator_shptrs_ptr).insert(new_item);
1314  }
1315  else {
1317  /* Too many items. Initiate and switch to slow mode. */
1318  /* Initialize slow storage. */
1319  m_aux_mm_iterator_shptrs_ptr = new CMMIterators();
1320  /* First copy the items from fast storage to slow storage. */
1321  for (int i = 0; i < sc_fm1_max_mm_iterators; i += 1) {
1322  (*m_aux_mm_iterator_shptrs_ptr).insert(m_fm1_key_mm_it_array[i]);
1323  }
1324  /* Add the new items to slow storage. */
1325  (*m_aux_mm_iterator_shptrs_ptr).insert(new_item);
1326  }
1327  else {
1330  }
1331  }
1332  return retval;
1333  }
assignable_CMMIterators_value_type m_fm1_key_mm_it_array[sc_fm1_max_mm_iterators]

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_aux_mm_iterator_shptrs_ptr, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_iterators, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_next_available_key, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_owner_ptr, mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_fast_mode1(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::sc_fm1_max_mm_iterators.

Referenced by mse::msevector< _Ty, _A >::allocate_new_item_pointer().

◆ apply_to_all_mm_const_iterator_shptrs()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_const_iterator_shptrs ( const std::function< void(std::shared_ptr< mm_const_iterator_type > &)> &  func_obj_ref)
inline

Definition at line 1168 of file msemsevector.h.

1168  {
1169  if (!mm_const_fast_mode1()) {
1170  for (auto it = (*m_aux_mm_const_iterator_shptrs_ptr).begin(); (*m_aux_mm_const_iterator_shptrs_ptr).end() != it; it++) {
1171  func_obj_ref((*it).second);
1172  }
1173  }
1174  else {
1175  for (int i = 0; i < m_fm1_num_mm_const_iterators; i += 1) {
1176  func_obj_ref(m_fm1_key_mm_const_it_array[i].second);
1177  }
1178  }
1179  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_const_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_const_iterators, and mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_const_fast_mode1().

Referenced by mse::msevector< _Ty, _A >::mm_iterator_set_type::invalidate_inclusive_range(), mse::msevector< _Ty, _A >::mm_iterator_set_type::reset(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::shift_inclusive_range().

◆ apply_to_all_mm_iterator_shptrs()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_iterator_shptrs ( const std::function< void(std::shared_ptr< mm_iterator_type > &)> &  func_obj_ref)
inline

Definition at line 1180 of file msemsevector.h.

1180  {
1181  if (!mm_fast_mode1()) {
1182  for (auto it = (*m_aux_mm_iterator_shptrs_ptr).begin(); (*m_aux_mm_iterator_shptrs_ptr).end() != it; it++) {
1183  func_obj_ref((*it).second);
1184  }
1185  }
1186  else {
1187  for (int i = 0; i < m_fm1_num_mm_iterators; i += 1) {
1188  func_obj_ref(m_fm1_key_mm_it_array[i].second);
1189  }
1190  }
1191  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_iterators, and mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_fast_mode1().

Referenced by mse::msevector< _Ty, _A >::mm_iterator_set_type::invalidate_inclusive_range(), mse::msevector< _Ty, _A >::mm_iterator_set_type::reset(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::shift_inclusive_range().

◆ const_item_pointer()

template<class _Ty , class _A = std::allocator<_Ty>>
mm_const_iterator_type& mse::msevector< _Ty, _A >::mm_iterator_set_type::const_item_pointer ( mm_const_iterator_handle_type  handle) const
inline

Definition at line 1377 of file msemsevector.h.

1377  {
1378  return (*(handle.m_shptr));
1379  }

References mse::msevector< _Ty, _A >::mm_const_iterator_handle_type::m_shptr.

Referenced by mse::msevector< _Ty, _A >::const_item_pointer().

◆ invalidate_inclusive_range()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::invalidate_inclusive_range ( msev_size_t  start_index,
msev_size_t  end_index 
)
inline

Definition at line 1210 of file msemsevector.h.

1210  {
1211  const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [start_index, end_index](std::shared_ptr<mm_const_iterator_type>& a) { a->invalidate_inclusive_range(start_index, end_index); };
1213  const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [start_index, end_index](std::shared_ptr<mm_iterator_type>& a) { a->invalidate_inclusive_range(start_index, end_index); };
1214  apply_to_all_mm_iterator_shptrs(it_func_obj);
1215  }
void apply_to_all_mm_iterator_shptrs(const std::function< void(std::shared_ptr< mm_iterator_type > &)> &func_obj_ref)
void apply_to_all_mm_const_iterator_shptrs(const std::function< void(std::shared_ptr< mm_const_iterator_type > &)> &func_obj_ref)

References mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_const_iterator_shptrs(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_iterator_shptrs().

Referenced by mse::msevector< _Ty, _A >::erase(), mse::msevector< _Ty, _A >::pop_back(), and mse::msevector< _Ty, _A >::resize().

◆ is_empty()

template<class _Ty , class _A = std::allocator<_Ty>>
bool mse::msevector< _Ty, _A >::mm_iterator_set_type::is_empty ( ) const
inline

◆ item_pointer()

template<class _Ty , class _A = std::allocator<_Ty>>
mm_iterator_type& mse::msevector< _Ty, _A >::mm_iterator_set_type::item_pointer ( mm_iterator_handle_type  handle)
inline

Definition at line 1380 of file msemsevector.h.

1380  {
1381  return (*(handle.m_shptr));
1382  }

References mse::msevector< _Ty, _A >::mm_iterator_handle_type::m_shptr.

Referenced by mse::msevector< _Ty, _A >::item_pointer().

◆ mm_const_fast_mode1()

template<class _Ty , class _A = std::allocator<_Ty>>
bool mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_const_fast_mode1 ( ) const
inlineprivate

◆ mm_fast_mode1()

template<class _Ty , class _A = std::allocator<_Ty>>
bool mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_fast_mode1 ( ) const
inlineprivate

◆ operator=() [1/2]

template<class _Ty , class _A = std::allocator<_Ty>>
mm_iterator_set_type& mse::msevector< _Ty, _A >::mm_iterator_set_type::operator= ( const mm_iterator_set_type src_cref)
inlineprivate

Definition at line 1397 of file msemsevector.h.

1397  {
1398  /* This is a special type of class. The state (i.e. member values) of an object of this class is specific to (and only
1399  valid for) the particular instance of the object (or the object of which it is a member). So the correct state of a new
1400  copy of this type of object is not a copy of the state, but rather the state of a new object (which is just the default
1401  initialization state). */
1402  (*this).reset();
1403  return (*this);
1404  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::reset().

◆ operator=() [2/2]

template<class _Ty , class _A = std::allocator<_Ty>>
mm_iterator_set_type& mse::msevector< _Ty, _A >::mm_iterator_set_type::operator= ( mm_iterator_set_type &&  src)
inlineprivate

Definition at line 1405 of file msemsevector.h.

1405 { /* see above */ (*this).reset(); return (*this); }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::reset().

◆ release_all_const_item_pointers()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::release_all_const_item_pointers ( )
inlineprivate

Definition at line 1385 of file msemsevector.h.

1385  {
1386  if (!mm_const_fast_mode1()) {
1387  (*m_aux_mm_const_iterator_shptrs_ptr).clear();
1388  }
1389  else {
1390  for (int i = 0; i < m_fm1_num_mm_const_iterators; i += 1) {
1391  m_fm1_key_mm_const_it_array[i] = assignable_CMMConstIterators_value_type();
1392  }
1394  }
1395  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_const_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_const_iterators, and mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_const_fast_mode1().

Referenced by mse::msevector< _Ty, _A >::release_all_const_item_pointers().

◆ release_all_item_pointers()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::release_all_item_pointers ( )
inline

Definition at line 1366 of file msemsevector.h.

1366  {
1367  if (!mm_fast_mode1()) {
1368  (*m_aux_mm_iterator_shptrs_ptr).clear();
1369  }
1370  else {
1371  for (int i = 0; i < m_fm1_num_mm_iterators; i += 1) {
1372  m_fm1_key_mm_it_array[i] = assignable_CMMIterators_value_type();
1373  }
1375  }
1376  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_iterators, and mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_fast_mode1().

Referenced by mse::msevector< _Ty, _A >::release_all_item_pointers().

◆ release_const_item_pointer()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::release_const_item_pointer ( mm_const_iterator_handle_type  handle)
inline

Definition at line 1273 of file msemsevector.h.

1273  {
1274  if (!mm_const_fast_mode1()) {
1275  auto it = (*m_aux_mm_const_iterator_shptrs_ptr).find(handle.m_key);
1276  if ((*m_aux_mm_const_iterator_shptrs_ptr).end() != it) {
1277  (*m_aux_mm_const_iterator_shptrs_ptr).erase(it);
1278  }
1279  else {
1280  /* Do we need to throw here? */
1281  MSE_THROW(msevector_range_error("invalid handle - void release_aux_mm_const_iterator(mm_const_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1282  }
1283  }
1284  else {
1285  int found_index = -1;
1286  for (int i = 0; i < m_fm1_num_mm_const_iterators; i += 1) {
1287  if (handle.m_key == m_fm1_key_mm_const_it_array[i].first) {
1288  found_index = i;
1289  break;
1290  }
1291  }
1292  if (0 <= found_index) {
1294  assert(0 <= m_fm1_num_mm_const_iterators);
1295  for (int j = found_index; j < m_fm1_num_mm_const_iterators; j += 1) {
1297  }
1298  }
1299  else {
1300  /* Do we need to throw here? */
1301  MSE_THROW(msevector_range_error("invalid handle - void release_aux_mm_const_iterator(mm_const_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1302  }
1303  }
1304  }
#define MSE_THROW(x)
Definition: msemsevector.h:44

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_const_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_const_iterators, mse::msevector< _Ty, _A >::mm_const_iterator_handle_type::m_key, mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_const_fast_mode1(), and MSE_THROW.

Referenced by mse::msevector< _Ty, _A >::release_const_item_pointer().

◆ release_item_pointer()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::release_item_pointer ( mm_iterator_handle_type  handle)
inline

Definition at line 1334 of file msemsevector.h.

1334  {
1335  if (!mm_fast_mode1()) {
1336  auto it = (*m_aux_mm_iterator_shptrs_ptr).find(handle.m_key);
1337  if ((*m_aux_mm_iterator_shptrs_ptr).end() != it) {
1338  (*m_aux_mm_iterator_shptrs_ptr).erase(it);
1339  }
1340  else {
1341  /* Do we need to throw here? */
1342  MSE_THROW(msevector_range_error("invalid handle - void release_aux_mm_iterator(mm_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1343  }
1344  }
1345  else {
1346  int found_index = -1;
1347  for (int i = 0; i < m_fm1_num_mm_iterators; i += 1) {
1348  if (handle.m_key == m_fm1_key_mm_it_array[i].first) {
1349  found_index = i;
1350  break;
1351  }
1352  }
1353  if (0 <= found_index) {
1355  assert(0 <= m_fm1_num_mm_iterators);
1356  for (int j = found_index; j < m_fm1_num_mm_iterators; j += 1) {
1358  }
1359  }
1360  else {
1361  /* Do we need to throw here? */
1362  MSE_THROW(msevector_range_error("invalid handle - void release_aux_mm_iterator(mm_iterator_handle_type handle) - msevector::mm_iterator_set_type"));
1363  }
1364  }
1365  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_it_array, mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_iterators, mse::msevector< _Ty, _A >::mm_iterator_handle_type::m_key, mse::msevector< _Ty, _A >::mm_iterator_set_type::mm_fast_mode1(), and MSE_THROW.

Referenced by mse::msevector< _Ty, _A >::release_item_pointer().

◆ reset()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::reset ( )
inline

Definition at line 1193 of file msemsevector.h.

1193  {
1194  /* We can use "static" here because the lambda function does not capture any parameters. */
1195  static const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [](std::shared_ptr<mm_const_iterator_type>& a) { a->reset(); };
1197  static const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [](std::shared_ptr<mm_iterator_type>& a) { a->reset(); };
1198  apply_to_all_mm_iterator_shptrs(it_func_obj);
1199  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_const_iterator_shptrs(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_iterator_shptrs().

Referenced by mse::msevector< _Ty, _A >::assign(), mse::msevector< _Ty, _A >::clear(), mse::msevector< _Ty, _A >::operator=(), mse::msevector< _Ty, _A >::mm_iterator_set_type::operator=(), and mse::msevector< _Ty, _A >::swap().

◆ shift_inclusive_range()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::shift_inclusive_range ( msev_size_t  start_index,
msev_size_t  end_index,
msev_int  shift 
)
inline

Definition at line 1216 of file msemsevector.h.

1216  {
1217  const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [start_index, end_index, shift](std::shared_ptr<mm_const_iterator_type>& a) { a->shift_inclusive_range(start_index, end_index, shift); };
1219  const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [start_index, end_index, shift](std::shared_ptr<mm_iterator_type>& a) { a->shift_inclusive_range(start_index, end_index, shift); };
1220  apply_to_all_mm_iterator_shptrs(it_func_obj);
1221  }

References mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_const_iterator_shptrs(), and mse::msevector< _Ty, _A >::mm_iterator_set_type::apply_to_all_mm_iterator_shptrs().

Referenced by mse::msevector< _Ty, _A >::emplace(), mse::msevector< _Ty, _A >::emplace_back(), mse::msevector< _Ty, _A >::erase(), mse::msevector< _Ty, _A >::insert(), mse::msevector< _Ty, _A >::pop_back(), mse::msevector< _Ty, _A >::push_back(), and mse::msevector< _Ty, _A >::resize().

◆ sync_iterators_to_index()

template<class _Ty , class _A = std::allocator<_Ty>>
void mse::msevector< _Ty, _A >::mm_iterator_set_type::sync_iterators_to_index ( )
inline

Definition at line 1200 of file msemsevector.h.

1200  {
1201  /* No longer used. Relic from when mm_iterator_type contained a "native" iterator. */
1202  /* We can use "static" here because the lambda function does not capture any parameters. */
1203  /*
1204  static const std::function<void(std::shared_ptr<mm_const_iterator_type>&)> cit_func_obj = [](std::shared_ptr<mm_const_iterator_type>& a) { a->sync_const_iterator_to_index(); };
1205  apply_to_all_mm_const_iterator_shptrs(cit_func_obj);
1206  static const std::function<void(std::shared_ptr<mm_iterator_type>&)> it_func_obj = [](std::shared_ptr<mm_iterator_type>& a) { a->sync_iterator_to_index(); };
1207  apply_to_all_mm_iterator_shptrs(it_func_obj);
1208  */
1209  }

Referenced by mse::msevector< _Ty, _A >::emplace(), mse::msevector< _Ty, _A >::emplace_back(), mse::msevector< _Ty, _A >::erase(), mse::msevector< _Ty, _A >::insert(), mse::msevector< _Ty, _A >::pop_back(), mse::msevector< _Ty, _A >::push_back(), mse::msevector< _Ty, _A >::reserve(), mse::msevector< _Ty, _A >::resize(), and mse::msevector< _Ty, _A >::shrink_to_fit().

Friends And Related Function Documentation

◆ msevector< _Ty, _A >

template<class _Ty , class _A = std::allocator<_Ty>>
friend class msevector< _Ty, _A >
friend

Definition at line 1423 of file msemsevector.h.

Field Documentation

◆ m_aux_mm_const_iterator_shptrs_ptr

template<class _Ty , class _A = std::allocator<_Ty>>
CMMConstIterators* mse::msevector< _Ty, _A >::mm_iterator_set_type::m_aux_mm_const_iterator_shptrs_ptr = nullptr
private

◆ m_aux_mm_iterator_shptrs_ptr

template<class _Ty , class _A = std::allocator<_Ty>>
CMMIterators* mse::msevector< _Ty, _A >::mm_iterator_set_type::m_aux_mm_iterator_shptrs_ptr = nullptr
private

◆ m_fm1_key_mm_const_it_array

template<class _Ty , class _A = std::allocator<_Ty>>
assignable_CMMConstIterators_value_type mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_const_it_array[sc_fm1_max_mm_iterators]
private

◆ m_fm1_key_mm_it_array

template<class _Ty , class _A = std::allocator<_Ty>>
assignable_CMMIterators_value_type mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_key_mm_it_array[sc_fm1_max_mm_iterators]
private

◆ m_fm1_num_mm_const_iterators

template<class _Ty , class _A = std::allocator<_Ty>>
int mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_const_iterators = 0
private

◆ m_fm1_num_mm_iterators

template<class _Ty , class _A = std::allocator<_Ty>>
int mse::msevector< _Ty, _A >::mm_iterator_set_type::m_fm1_num_mm_iterators = 0
private

◆ m_next_available_key

template<class _Ty , class _A = std::allocator<_Ty>>
CHashKey1 mse::msevector< _Ty, _A >::mm_iterator_set_type::m_next_available_key = 0
private

◆ m_owner_ptr

template<class _Ty , class _A = std::allocator<_Ty>>
_Myt* mse::msevector< _Ty, _A >::mm_iterator_set_type::m_owner_ptr = nullptr
private

◆ sc_fm1_max_mm_iterators

template<class _Ty , class _A = std::allocator<_Ty>>
const int mse::msevector< _Ty, _A >::mm_iterator_set_type::sc_fm1_max_mm_iterators = 6
staticprivate

The documentation for this class was generated from the following file: