PIP 5.9.0
Platform-Independent Primitives
Загрузка...
Поиск...
Не найдено
Класс PICollection

Глобальная коллекция экземпляров на базе PIObject, сгруппированных по имени. Подробнее...

#include <picollection.h>

Классы

class  CollectionAdder
 Вспомогательный класс, регистрирующий объект в коллекции при статической инициализации. Подробнее...

Открытые члены

 PICollection ()
 Создает вспомогательный объект коллекции.

Открытые статические члены

static PIStringList groups ()
 Возвращает имена всех существующих групп.
static PIVector< const PIObject * > groupElements (const PIString &group)
 Возвращает все элементы, хранящиеся в группе "group".
static bool addToGroup (const PIString &group, const PIObject *element)
 Добавляет объект в группу "group", если в группе еще нет объекта того же класса времени выполнения.

(не члены класса)

#define ADD_TO_COLLECTION(group, object)
 Добавляет существующий объект в группу "group".
#define ADD_TO_COLLECTION_WITH_NAME(group, object, name)
 Добавляет существующий объект в группу "group" и присваивает ему имя "name".
#define ADD_NEW_TO_COLLECTION(group, class)
 Создает и добавляет новый объект класса "class" в группу "group".
#define ADD_NEW_TO_COLLECTION_WITH_NAME(group, class, name)
 Создает и добавляет новый объект класса "class" в группу "group" и присваивает ему имя "name".

Подробное описание

Глобальная коллекция экземпляров на базе PIObject, сгруппированных по имени.

Краткий обзор

Этот класс предоставляет статические методы, поэтому не нужно создавать его экземпляр. Имеется несколько макросов для добавления классов или существующих объектов в глобальные группы. Затем можно получить их список в любом месте программы.

class ElementA: public PIObject {
PIOBJECT(ElementA)
// ...
};
ADD_NEW_TO_COLLECTION(ab_group, ElementA)
class ElementB: public PIObject {
PIOBJECT(ElementB)
// ...
};
ADD_NEW_TO_COLLECTION(ab_group, ElementB)
class ElementC: public PIObject {
PIOBJECT(ElementC)
// ...
};
ADD_NEW_TO_COLLECTION(c_group, ElementC)
class ElementD: public PIObject {
PIOBJECT(ElementD)
// ...
};
int main() {
ElementD * el_d = new ElementD();
ADD_TO_COLLECTION(ab_group, el_d)
piCout << gl; // {"ab_group", "c_group"}
piForeachC (PIString g, gl) {
piCout << "group" << g << ":";
piForeachC (PIObject * o, go)
piCout << Tab << o->className();
}
/*
group ab_group :
ElementA
ElementB
ElementD
group c_group :
ElementC
*/
};

◆ ADD_TO_COLLECTION

#define ADD_TO_COLLECTION ( group,
object )
related

Добавляет существующий объект в группу "group".

Если такой группы нет, она создается. В каждой группе может присутствовать только один элемент класса объекта "object". Если такой элемент уже есть, то ничего не изменится.
"object" должен быть наследником PIObject.

◆ ADD_TO_COLLECTION_WITH_NAME

#define ADD_TO_COLLECTION_WITH_NAME ( group,
object,
name )
related

Добавляет существующий объект в группу "group" и присваивает ему имя "name".

Аналогично ADD_TO_COLLECTION(group, object), но дополнительно задает имя объекта.

◆ ADD_NEW_TO_COLLECTION

#define ADD_NEW_TO_COLLECTION ( group,
class )
related

Создает и добавляет новый объект класса "class" в группу "group".

Если такой группы нет, она создается. В каждой группе может присутствовать только один элемент класса "class". Если такой элемент уже есть, то ничего не изменится.
"class" должен быть любым классом, наследным от PIObject.

◆ ADD_NEW_TO_COLLECTION_WITH_NAME

#define ADD_NEW_TO_COLLECTION_WITH_NAME ( group,
class,
name )
related

Создает и добавляет новый объект класса "class" в группу "group" и присваивает ему имя "name".

Аналогично ADD_NEW_TO_COLLECTION(group, class), но дополнительно задает имя объекта.