C3D Toolkit  Kernel - 105122, Vision - 0.181114.105122
Файл reference_item.h

Счетчик ссылок (владельцев объекта). Подробнее...

Классы

class  MbRefItem
 Объект с подсчетом ссылок. Подробнее...
 

Пространства имен

 c3d
 Объявление пространства имен C3D.
 

Перечисления

enum  MbeRefType {
  rt_RefItem = 0, rt_PlaneItem, rt_SpaceItem, rt_TopItem,
  rt_Creator, rt_Attribute, rt_Primitive
}
 Типы объекта со счетчиком ссылок. Подробнее...
 

Функции

template<class Type >
void DeleteMatItem (Type *&item)
 Удалить объект без ссылок.
 
template<class Vector >
void DeleteMatItems (Vector &items)
 Удалить объекты без ссылок.
 
template<class Type >
Type & DuplicateIfUsed (Type &item)
 Сделать копию, если объект используется, иначе вернуть оригинал.
 
template<class Type , class RegType >
Type & DuplicateIfUsed (Type &item, RegType *iReg)
 Сделать копию, если объект используется, иначе вернуть оригинал.
 
template<class Type >
Type * DuplicateIfUsed (SPtr< Type > &item)
 Сделать копию, если объект используется, иначе вернуть оригинал.
 
template<class Type , class RegType >
Type * DuplicateIfUsed (SPtr< Type > &item, RegType *iReg)
 Сделать копию, если объект используется, иначе вернуть оригинал.
 
template<class Type >
void DeleteItem (Type *&item)
 Удалить объект, если он больше никому не нужен.
 
template<class Type >
void ReleaseItem (Type *&item)
 Освободить ссылку на объект.
 
template<class Type >
void AddRefItem (const Type *item)
 Захватить объект.
 
template<class Type >
void DecRefItem (const Type *item)
 Отпустить объект без удаления.
 
template<class Vector >
void AddRefItems (const Vector &items)
 Захватить объекты.
 
template<class Vector >
void DecRefItems (const Vector &items)
 Отпустить объекты без удаления.
 
template<class Vector >
void DeleteItems (Vector &items)
 Удалить никому не нужные объекты.
 
template<class Vector >
void ReleaseItems (Vector &items)
 Отпустить объекты с возможным удалением.
 
template<class Vector , class coType >
void DeleteItems (Vector &items, SArray< coType > &coItems)
 Удалить никому не нужные объекты.
 
template<class Vector , class coType >
void ReleaseItems (Vector &items, SArray< coType > &coItems)
 Отпустить объекты с возможным удалением.
 
template<class TypeVector , class Type >
void AddRefItems (const TypeVector &srcItems, bool same, RPArray< Type > &dstItems)
 Переложить элементы с захватом и возможным копированием.
 
template<class TypeVector , class Type >
void AddRefItems (const TypeVector &srcItems, bool same, std::vector< SPtr< Type > > &dstItems)
 Переложить элементы с захватом и возможным копированием.
 
template<class TypeVector , class Type >
void AddRefItems (const TypeVector &srcItems, bool same, std::vector< Type *> &dstItems)
 Переложить элементы с захватом и возможным копированием.
 
template<class TypeVector , class Type , class RegType >
void AddRefRegItems (const TypeVector &srcItems, bool same, RPArray< Type > &dstItems, RegType *iReg)
 Переложить элементы с захватом и возможным копированием.
 
template<class TypeVector , class Type , class RegType >
void AddRefRegItems (const TypeVector &srcItems, bool same, std::vector< SPtr< Type > > &dstItems, RegType *iReg)
 Переложить элементы с захватом и возможным копированием.
 
template<class TypeVector , class Type , class RegType >
void AddRefRegItems (const TypeVector &srcItems, bool same, std::vector< Type *> &dstItems, RegType *iReg)
 Переложить элементы с захватом и возможным копированием.
 
template<class Item >
bool IsItemSame (const Item *item1, const Item *item2, double accuracy)
 Являются ли объекты подобными.
 
template<class Vector >
bool AreItemsSame (const Vector &items1, const Vector &items2, double accuracy)
 Являются ли объекты подобными.
 
template<class Vector >
bool AreObjectsSame (const Vector &items1, const Vector &items2, double accuracy)
 Являются ли объекты подобными.
 
template<class Vector >
bool AreItemsSimilar (const Vector &items1, const Vector &items2)
 Являются ли объекты подобными.
 
template<class Vector >
bool SetItemsEqual (const Vector &srcItems, Vector &dstItems)
 Сделать равными.
 
template<class TypeVector , class Type , class RegType >
void DuplicateItems (const TypeVector &srcItems, RegType *iReg, bool same, RPArray< Type > &dstItems)
 Дублировать c регистратором (опционально переложить оригиналы).
 
template<class TypeVector , class Type , class RegType >
void DuplicateItems (const TypeVector &srcItems, RegType *iReg, bool same, std::vector< SPtr< Type > > &dstItems)
 Дублировать c регистратором (опционально переложить оригиналы).
 
template<class TypeVector , class Type , class RegType >
void DuplicateItems (const TypeVector &srcItems, RegType *iReg, bool same, std::vector< Type *> &dstItems)
 Дублировать c регистратором (опционально переложить оригиналы).
 
template<class Array , class Matrix , class RegType >
void TransformItems (Array &items, const Matrix &matr, RegType *iReg)
 Преобразовать элементы согласно матрице.
 
template<class Array , class Matrix >
void TransformObjects (Array &objects, const Matrix &matr)
 Преобразовать элементы согласно матрице.
 
template<class Array , class Vector , class RegType >
void MoveItems (Array &items, const Vector &to, RegType *iReg)
 Сдвинуть вдоль объекты вектора.
 
template<class Array , class Vector >
void MoveObjects (Array &objects, const Vector &to)
 Сдвинуть вдоль объекты вектора.
 
template<class Array , class Axis , class RegType >
void RotateItems (Array &items, const Axis &axis, double angle, RegType *iReg)
 Повернуть вокруг оси.
 
template<class Array , class Axis >
void RotateObjects (Array &objects, const Axis &axis, double angle)
 Повернуть вокруг оси.
 
template<class Vector , class Writer >
void WriteRefItems (const Vector &items, Writer &out)
 Запись объектов в поток.
 
template<class Type , class Writer >
void WriteRefItems (const std::vector< SPtr< Type > > &items, Writer &out)
 Запись объекты в поток.
 
template<class Type , class Reader >
void ReadRefItems (Reader &in, RPArray< Type > &items)
 Чтение массива объектов из потока с захватом.
 
template<class Type , class Reader >
void ReadRefItems (Reader &in, std::vector< Type *> &items)
 Чтение массива объектов из потока с захватом.
 
template<class Type , class Reader >
void ReadRefItems (Reader &in, std::vector< SPtr< Type > > &items)
 Чтение массива объектов из потока с захватом.
 
template<class Vector >
void ReleaseAndDetachItem_ (Vector &items, size_t index)
 Отцепить от массива и уменьшить счетчик ссылок. Подробнее...
 
template<class Vector , class Type >
void AddRefAndAddItem_ (Vector &items, Type *newItem)
 Добавить объект и увеличить счетчик ссылок. Подробнее...
 
template<class Vector , class Type >
void AddRefAndAddAtItem_ (Vector &items, Type *newItem, size_t index)
 Добавить объект и увеличить счетчик ссылок. Подробнее...
 
template<class Type >
void ReleaseAndDetachItem_ (std::vector< SPtr< Type > > &items, size_t index)
 Отцепить от массива и уменьшить счетчик ссылок. Подробнее...
 
template<class Type >
void AddRefAndAddItem_ (std::vector< SPtr< Type > > &items, Type *newItem)
 Добавить объект и увеличить счетчик ссылок. Подробнее...
 
template<class Type >
void AddRefAndAddAtItem_ (std::vector< SPtr< Type > > &items, Type *newItem, size_t index)
 Добавить объект и увеличить счетчик ссылок. Подробнее...
 
template<class Type >
Type * DetachItem (SPtr< Type > &itemOwner)
 Отцепить объект из владеющего указателя.
 
template<class Type >
void ReplaceByCopy (Type *&item)
 Заменить объект на копию.
 
template<class Objects , class Gab >
void AddYourGabaritTo (Objects &objects, Gab &gab)
 Включить габариты объектов массива в общий габарит.
 

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

Счетчик ссылок (владельцев объекта).

Функции

◆ ReleaseAndDetachItem_() [1/2]

template<class Vector >
void ReleaseAndDetachItem_ ( Vector &  items,
size_t  index 
)

Отцепить от массива и уменьшить счетчик ссылок.

Отцепить от массива и уменьшить счетчик ссылок без проверок.

Аргументы
[in,out]items- Множество элементов.
[in]index- Номер элемента. Не проверяется на корректность.

◆ AddRefAndAddItem_() [1/2]

template<class Vector , class Type >
void AddRefAndAddItem_ ( Vector &  items,
Type *  newItem 
)

Добавить объект и увеличить счетчик ссылок.

Добавить объект и увеличить счетчик ссылок без проверок.

Аргументы
[in,out]items- Множество элементов.
[in]newItem- Новый элемент.

◆ AddRefAndAddAtItem_() [1/2]

template<class Vector , class Type >
void AddRefAndAddAtItem_ ( Vector &  items,
Type *  newItem,
size_t  index 
)

Добавить объект и увеличить счетчик ссылок.

Добавить объект и увеличить счетчик ссылок без проверок.

Аргументы
[in,out]items- Множество элементов.
[in]newItem- Новый элемент.
[in]index- Номер элемента. Не проверяется на корректность.

◆ ReleaseAndDetachItem_() [2/2]

template<class Type >
void ReleaseAndDetachItem_ ( std::vector< SPtr< Type > > &  items,
size_t  index 
)

Отцепить от массива и уменьшить счетчик ссылок.

Отцепить от массива и уменьшить счетчик ссылок без проверок.

Аргументы
[in,out]items- Множество элементов.
[in]index- Номер элемента. Не проверяется на корректность.

◆ AddRefAndAddItem_() [2/2]

template<class Type >
void AddRefAndAddItem_ ( std::vector< SPtr< Type > > &  items,
Type *  newItem 
)

Добавить объект и увеличить счетчик ссылок.

Добавить объект и увеличить счетчик ссылок без проверок.

Аргументы
[in,out]items- Множество элементов.
[in]newItem- Новый элемент.

◆ AddRefAndAddAtItem_() [2/2]

template<class Type >
void AddRefAndAddAtItem_ ( std::vector< SPtr< Type > > &  items,
Type *  newItem,
size_t  index 
)

Добавить объект и увеличить счетчик ссылок.

Добавить объект и увеличить счетчик ссылок без проверок.

Аргументы
[in,out]items- Множество элементов.
[in]newItem- Новый элемент.
[in]index- Номер элемента. Не проверяется на корректность.