Xmipp  v3.23.11-Nereus
Classes | Public Types | Public Member Functions | List of all members
mrsrc::rsrc Class Reference

Class mrsrc::rsrc contains a pointer to the data in the resource, as well as offering an iterator interface to its children. More...

Classes

class  iterator_t
 

Public Types

using iterator = iterator_t< rsrc >
 

Public Member Functions

 rsrc ()
 
 rsrc (const rsrc &other)
 
rsrcoperator= (const rsrc &other)
 
 rsrc (std::filesystem::path path)
 
std::string name () const
 
const char * data () const
 
unsigned long size () const
 
 operator bool () const
 
iterator begin () const
 
iterator end () const
 

Detailed Description

Class mrsrc::rsrc contains a pointer to the data in the resource, as well as offering an iterator interface to its children.

Definition at line 479 of file utilities.cpp.

Member Typedef Documentation

◆ iterator

Definition at line 560 of file utilities.cpp.

Constructor & Destructor Documentation

◆ rsrc() [1/3]

mrsrc::rsrc::rsrc ( )
inline

Definition at line 482 of file utilities.cpp.

483  : m_impl(rsrc_data::instance().index())
484  {
485  }
static rsrc_data & instance()
Definition: utilities.cpp:439
viol index

◆ rsrc() [2/3]

mrsrc::rsrc::rsrc ( const rsrc other)
inline

Definition at line 487 of file utilities.cpp.

488  : m_impl(other.m_impl)
489  {
490  }

◆ rsrc() [3/3]

mrsrc::rsrc::rsrc ( std::filesystem::path  path)
inline

Definition at line 584 of file utilities.cpp.

585 {
586  m_impl = rsrc_data::instance().index();
587 
588  // using std::filesytem::path would have been natural here of course...
589 
590  auto pb = p.begin();
591  auto pe = p.end();
592 
593  while (m_impl != nullptr and pb != pe)
594  {
595  auto name = *pb++;
596 
597  const rsrc_imp *impl = nullptr;
598  for (rsrc child : *this)
599  {
600  if (child.name() == name)
601  {
602  impl = child.m_impl;
603  break;
604  }
605  }
606 
607  m_impl = impl;
608  }
609 
610  if (pb != pe) // not found
611  m_impl = nullptr;
612 }
static rsrc_data & instance()
Definition: utilities.cpp:439
std::string name() const
Definition: utilities.cpp:500
const rsrc_imp * index() const
Definition: utilities.cpp:445

Member Function Documentation

◆ begin()

iterator mrsrc::rsrc::begin ( ) const
inline

Definition at line 562 of file utilities.cpp.

563  {
564  const rsrc_imp *impl = nullptr;
565  if (m_impl and m_impl->m_child)
566  impl = rsrc_data::instance().index() + m_impl->m_child;
567  return iterator(impl);
568  }
unsigned int m_child
Definition: utilities.cpp:402
static rsrc_data & instance()
Definition: utilities.cpp:439
iterator_t< rsrc > iterator
Definition: utilities.cpp:560
const rsrc_imp * index() const
Definition: utilities.cpp:445

◆ data()

const char* mrsrc::rsrc::data ( ) const
inline

Definition at line 502 of file utilities.cpp.

502 { return rsrc_data::instance().data(m_impl->m_data); }
const char * data(unsigned int offset) const
Definition: utilities.cpp:447
static rsrc_data & instance()
Definition: utilities.cpp:439
unsigned int m_data
Definition: utilities.cpp:405

◆ end()

iterator mrsrc::rsrc::end ( ) const
inline

Definition at line 570 of file utilities.cpp.

571  {
572  return iterator(nullptr);
573  }
iterator_t< rsrc > iterator
Definition: utilities.cpp:560

◆ name()

std::string mrsrc::rsrc::name ( ) const
inline

Definition at line 500 of file utilities.cpp.

500 { return rsrc_data::instance().name(m_impl->m_name); }
static rsrc_data & instance()
Definition: utilities.cpp:439
const char * name(unsigned int offset) const
Definition: utilities.cpp:452
unsigned int m_name
Definition: utilities.cpp:403

◆ operator bool()

mrsrc::rsrc::operator bool ( ) const
inlineexplicit

Definition at line 506 of file utilities.cpp.

506 { return m_impl != NULL and m_impl->m_size > 0; }
unsigned int m_size
Definition: utilities.cpp:404

◆ operator=()

rsrc& mrsrc::rsrc::operator= ( const rsrc other)
inline

Definition at line 492 of file utilities.cpp.

493  {
494  m_impl = other.m_impl;
495  return *this;
496  }

◆ size()

unsigned long mrsrc::rsrc::size ( ) const
inline

Definition at line 504 of file utilities.cpp.

504 { return m_impl->m_size; }
unsigned int m_size
Definition: utilities.cpp:404

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