PIP 5.6.1
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
*/
};
#define ADD_TO_COLLECTION(group, object)
Добавляет существующий объект в группу "group".
Definition: picollection.h:51
static PIVector< const PIObject * > groupElements(const PIString &group)
Возвращает все элементы, хранящиеся в группе "group".
Definition: picollection.cpp:49
#define ADD_NEW_TO_COLLECTION(group, class)
Создает и добавляет новый объект класса "class" в группу "group".
Definition: picollection.h:78
static PIStringList groups()
Возвращает имена всех существующих групп.
Definition: picollection.cpp:40
Базовый класс для объектов, которые объявляют события, обработчики событий и зарегистрированные метод...
Definition: piobject.h:56
Класс строки.
Definition: pistring.h:42
Основанный на PIDeque<PIString> массив строк.
Definition: pistringlist.h:36
@ Tab
Definition: picout.h:78
#define piForeachC(i, c)
Макрос для перебора любых контейнеров
Definition: picontainers.h:176
#define piCout
Definition: picout.h:36

Документация по друзьям класса и функциям, относящимся к классу

◆ 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), но дополнительно задает имя объекта.