DDS  ver. 3.4
Public Types | Public Member Functions | Protected Member Functions | Friends | List of all members
dds::topology_api::CTopoContainer Class Reference

#include <TopoContainer.h>

Inheritance diagram for dds::topology_api::CTopoContainer:
dds::topology_api::CTopoElement dds::topology_api::CTopoBase dds::topology_api::CTopoCollection dds::topology_api::CTopoGroup

Public Types

typedef std::shared_ptr< CTopoContainerPtr_t
 
typedef std::vector< CTopoContainer::Ptr_tPtrVector_t
 
- Public Types inherited from dds::topology_api::CTopoElement
using Ptr_t = std::shared_ptr< CTopoElement >
 
using PtrVector_t = std::vector< CTopoElement::Ptr_t >
 
- Public Types inherited from dds::topology_api::CTopoBase
enum  EType {
  EType::TOPO_BASE, EType::TOPO_PROPERTY, EType::TOPO_ELEMENT, EType::TASK,
  EType::COLLECTION, EType::GROUP, EType::REQUIREMENT, EType::TOPO_VARS,
  EType::TRIGGER
}
 
using Ptr_t = std::shared_ptr< CTopoBase >
 
using PtrVector_t = std::vector< CTopoBase::Ptr_t >
 

Public Member Functions

size_t getNofElements () const
 Return number of elements. More...
 
CTopoElement::Ptr_t getElement (size_t _i) const
 Return topology element by index. More...
 
const CTopoElement::PtrVector_tgetElements () const
 Return vector of elements. More...
 
CTopoElement::Ptr_t addElement (CTopoBase::EType _type, const std::string &_name)
 Adds TopoElement to a container using enum type. More...
 
template<class Object_t >
Object_t::Ptr_t addElement (const std::string &_name)
 Adds TopoElement to a container using specified type. CTopoTask, CTopoCollection and CTopoGroup are supported. More...
 
virtual std::string toString () const
 Returns string representation of an object. More...
 
template<>
CTopoTask::Ptr_t addElement (const std::string &_name)
 
template<>
CTopoCollection::Ptr_t addElement (const std::string &_name)
 
template<>
CTopoGroup::Ptr_t addElement (const std::string &_name)
 
- Public Member Functions inherited from dds::topology_api::CTopoElement
virtual size_t getNofTasks () const =0
 Return number of all tasks including daughter elements. More...
 
virtual size_t getTotalNofTasks () const =0
 Return total number of tasks, i.e. number of tasks multiplied by n. More...
 
- Public Member Functions inherited from dds::topology_api::CTopoBase
void setName (const std::string &_name)
 Modifiers. More...
 
void setParent (CTopoBase *_parent)
 
const std::string & getName () const
 Accessors. More...
 
CTopoBase::EType getType () const
 
CTopoBasegetParent () const
 
std::string getPath () const
 Return full path to topo element or property. More...
 
void initFromXML (const std::string &_filepath, const std::string &_schemaFilepath="", std::string *_topologyName=nullptr)
 Initializes object with data from XML file. More...
 
virtual void initFromPropertyTree (const boost::property_tree::ptree &_pt)=0
 Initialize object with data from property tree. More...
 
virtual void saveToPropertyTree (boost::property_tree::ptree &_pt)=0
 Save object to a property tree. More...
 
virtual std::string hashString () const =0
 Returns string which is used to calculate CRC checksum of the object. More...
 

Protected Member Functions

 CTopoContainer (const std::string &_name)
 Constructor. More...
 
virtual ~CTopoContainer ()
 Destructor. More...
 
size_t getNofTasksDefault () const
 Default implementation for TopoElement::getNofTasks, TopoElement::getTotalNofTasks. Calculate recursively number of tasks in all daughter elements. More...
 
bool canAddElement (CTopoBase::EType _type)
 Checks if element can be added to the container. TopoTask can be added to any container (TopoCollection or TopoGroup). TopoCollection can be added only to TopoGroup. TopoGroup can be added only to Main TopoGroup. More...
 
template<class Object_t >
Object_t::Ptr_t makeElement (const std::string &_name)
 Makes new topology element. More...
 
- Protected Member Functions inherited from dds::topology_api::CTopoElement
 CTopoElement (const std::string &_name)
 Constructor. More...
 
virtual ~CTopoElement ()
 Destructor. More...
 
size_t getTotalCounterDefault () const
 If parent is a group than return N, else return 1. Default implementation for Task::getTotalCounter and TaskCollection::getTotalCounter. More...
 
- Protected Member Functions inherited from dds::topology_api::CTopoBase
 CTopoBase (const std::string &_name)
 Constructor. More...
 
virtual ~CTopoBase ()
 Destructor. More...
 
void setType (CTopoBase::EType _type)
 

Friends

std::ostream & operator<< (std::ostream &_strm, const CTopoContainer &_taskContainer)
 Operator << for convenient output to ostream. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from dds::topology_api::CTopoBase
template<class Object_t >
static Object_t::Ptr_t make (const std::string &_objectName, const std::string &_filepath, const std::string &_schemaFilepath="", std::string *_topologyName=nullptr)
 Convenience API to create topology object from XML file. More...
 
template<class Object_t >
static Object_t::Ptr_t make (const std::string &_name, const boost::property_tree::ptree &_pt)
 Convenience API to create topology object with data from property tree. More...
 

Member Typedef Documentation

◆ Ptr_t

◆ PtrVector_t

Constructor & Destructor Documentation

◆ CTopoContainer()

CTopoContainer::CTopoContainer ( const std::string &  _name)
protected

Constructor.

◆ ~CTopoContainer()

CTopoContainer::~CTopoContainer ( )
protectedvirtual

Destructor.

Member Function Documentation

◆ addElement() [1/5]

CTopoElement::Ptr_t CTopoContainer::addElement ( CTopoBase::EType  _type,
const std::string &  _name 
)

Adds TopoElement to a container using enum type.

Parameters
[in]_typeType of the element to be added to the container (Task, Collection or Group).
Exceptions
std::runtime_errorif element can't be added.

◆ addElement() [2/5]

template<class Object_t >
Object_t::Ptr_t dds::topology_api::CTopoContainer::addElement ( const std::string &  _name)

Adds TopoElement to a container using specified type. CTopoTask, CTopoCollection and CTopoGroup are supported.

Exceptions
std::runtime_errorif element can't be added.

◆ addElement() [3/5]

template<>
CTopoTask::Ptr_t dds::topology_api::CTopoContainer::addElement ( const std::string &  _name)

◆ addElement() [4/5]

template<>
CTopoCollection::Ptr_t dds::topology_api::CTopoContainer::addElement ( const std::string &  _name)

◆ addElement() [5/5]

template<>
CTopoGroup::Ptr_t dds::topology_api::CTopoContainer::addElement ( const std::string &  _name)

◆ canAddElement()

bool CTopoContainer::canAddElement ( CTopoBase::EType  _type)
protected

Checks if element can be added to the container. TopoTask can be added to any container (TopoCollection or TopoGroup). TopoCollection can be added only to TopoGroup. TopoGroup can be added only to Main TopoGroup.

Parameters
[in]_typeType of the element to be added to the container.
Returns
True if TopoElement can be added, otherwise return false.

◆ getElement()

CTopoElement::Ptr_t CTopoContainer::getElement ( size_t  _i) const

Return topology element by index.

Returns
Topology element by index.
Exceptions
std::out_of_range

◆ getElements()

const CTopoElement::PtrVector_t & CTopoContainer::getElements ( ) const

Return vector of elements.

Returns
Vector of elements.

◆ getNofElements()

size_t CTopoContainer::getNofElements ( ) const

Return number of elements.

Returns
Number of elements.

◆ getNofTasksDefault()

size_t CTopoContainer::getNofTasksDefault ( ) const
protected

Default implementation for TopoElement::getNofTasks, TopoElement::getTotalNofTasks. Calculate recursively number of tasks in all daughter elements.

◆ makeElement()

template<class Object_t >
Object_t::Ptr_t dds::topology_api::CTopoContainer::makeElement ( const std::string &  _name)
inlineprotected

Makes new topology element.

Exceptions
std::runtime_errorif element can't be added.

◆ toString()

string CTopoContainer::toString ( ) const
virtual

Returns string representation of an object.

Returns
String representation of an object.

Reimplemented from dds::topology_api::CTopoBase.

Reimplemented in dds::topology_api::CTopoGroup.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  _strm,
const CTopoContainer _taskContainer 
)
friend

Operator << for convenient output to ostream.

Returns
Insertion stream in order to be able to call a succession of insertion operations.

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