#include "picollection.h" /** \class PICollection * \brief Interface to discover element groups * \details * \section PICollection_sec0 Synopsis * This class has only static functions so no need to create instance of the * %PICollection. This class provide macros to add some classes or existing * objects to global collection and access to them from any place of the code. * \snippet picollection.cpp main * */ PIStringList PICollection::groups() { PIStringList sl; piForeachC (Group & g, _groups) sl << g.name; return sl; } PIVector PICollection::groupElements(const PIString & group) { piForeachC (Group & g, _groups) if (g.name == group) return g.elements; return PIVector(); } void PICollection::addToGroup(const PIString & group, const PIObject * element) { PIString n = element->className(); piForeach (Group & g, _groups) if (g.name == group) { for (int i = 0; i < g.elements.size_s(); ++i) if (PIString(g.elements[i]->className()) == n) return; g.elements << element; return; } _groups << Group(group); _groups.back().elements << element; } PIVector PICollection::_groups;