C3D Toolkit  Kernel - 108159, Vision - 191105.108159
Библиотека шаблонов и сериализации
+ Граф связей класса Библиотека шаблонов и сериализации:

Группы

 Контейнеры
 
 Автоматические указатели
 
 Работа со строками
 
 Работа с потоками
 

Классы

class  StrHash
 Хэш с типом строки. Подробнее...
 
class  MbAccurateTimer
 Высокоточный таймер. Подробнее...
 
class  MbAverageTimer
 Таймер со статистикой. Подробнее...
 
class  BalanceTreeNode< Type >
 Узел сбалансированного дерева. Подробнее...
 
class  BalanceTree< Type >
 Cбалансированное дерево. Подробнее...
 
class  BalanceTreeIterator< Type >
 Итератор сбалансированного дерева. Подробнее...
 
class  PriorityQueue< Index, Weight >
 Очередь с приоритетом с использованием кучи. Подробнее...
 
class  KdTree< Scalar >
 К-d дерево. Подробнее...
 
class  Visitor
 Абстрактный базовый класс посетителя. Подробнее...
 
class  VisitorImpl< T >
 Обобщенное объявление поддержки посещения объекта конкретным посетителем. Подробнее...
 
class  ExceptionMode
 Определение режима обработки исключений. Подробнее...
 
class  ScopedExceptionMode
 Меняет режим обработки исключений в области видимости. Подробнее...
 
class  CacheCleaner
 Базовый класс для объектов, требующих сборки мусора. Подробнее...
 
class  MbGarbageCollection
 Сборщик мусора в объектах, использующих кэширование данных. Подробнее...
 
class  AuxiliaryData
 Родительский класс данных для менеджера параллельной обработки. Подробнее...
 
class  CommonMutex
 Класс блокировки. Подробнее...
 
class  ScopedLock
 Блокировка в области видимости. Может принимать нулевой указатель на мьютекс. Блокировка происходит, если указатель на мьютекс ненулевой и код выполняется параллельно. Подробнее...
 
class  ScopedRecursiveLock
 Рекурсивная блокировка в области видимости. Может принимать нулевой указатель на мьютекс. Блокировка происходит, если указатель на мьютекс ненулевой и код выполняется параллельно. Подробнее...
 
class  MbSyncItem
 Базовый объект синхронизации с отложенной инициализацией. Подробнее...
 
class  MbNestSyncItem
 Базовый объект синхронизации с отложенной инициализацией, поддерживающий множественные блокировки. Подробнее...
 
class  MbPersistentSyncItem
 Базовый объект, предоставляющий средства синхронизации. Подробнее...
 
class  MbPersistentNestSyncItem
 Базовый объект синхронизации, поддерживающий множественные блокировки. Подробнее...
 
struct  IfProgressIndicator
 Индикатор прогресса выполнения. Подробнее...
 

Макросы

#define GOLDENRATIO   0x9e3779b9
 Золотое сечение - произвольное число для хэш-функции.
 
#define NullStrHash   StrHash( 0, StrHash::htp_undef )
 Хэш пустой строки. Подробнее...
 
#define UndefStrHash   StrHash( -1, StrHash::htp_undef )
 Хэш при отсутствии строки. Подробнее...
 
#define C3D_IO_CATCH_START   try {
 Стартовать try-catch регион для I/O операций.
 
#define C3D_IO_CATCH_END(iostrm)
 Завершить try-catch регион для I/O операций (аргумент iostrm - поток чтения или записи).
 
#define PRECONDITION(expr)   ((void)0)
 Определение PRECONDITION.
 
#define CALL_DECLARATION
 Определение CALL_DECLARATION. Подробнее...
 
#define EXPORT_DECLARATION
 Определение EXPORT_DECLARATION. Подробнее...
 
#define OBVIOUS_PRIVATE_COPY(ClassName)
 Объявление оператора присваивания и конструктора копирования. Подробнее...
 
#define COUNTOF(array)   (sizeof(array)/sizeof(array[0]))
 Получить количество элементов массива.
 
#define MATH_CLASS
 Объявление экспортности или импортности классов. Подробнее...
 
#define MATH_5_11_R03_VERSION   0x0590005CL
 Версия файла - 5.11.
 
#define MATH_5_BC_VERSION   0x0590005FL
 Версия файла - 5.0.
 
#define MATH_6_0_VERSION   0x06000009L
 Версия файла - 6.0.
 
#define MATH_6_PLUS_VERSION   0x06000032L
 Версия файла - 6.1.
 
#define MATH_7_0_VERSION   0x07000005L
 Версия файла - 7.0.
 
#define MATH_7_PLUS_VERSION   0x0701012CL
 Версия файла - 7.1.
 
#define MATH_8_0_VERSION   0x0800001AL
 Версия файла - 8.0.
 
#define MATH_8_PLUS_VERSION   0x08000133L
 Версия файла - 8.1.
 
#define MATH_9_0_VERSION   0x09000005L
 Версия файла - 9.0.
 
#define MATH_9_SP1_VERSION   0x09000008L
 Версия файла - 9.1.
 
#define LAST_NOUNICODE_VERSION   0x0A000018L
 Версия файла - 10.0 NoUnicode.
 
#define UNICODE_VERSION   0x0A001000L
 Версия файла - 10.0 Unicode.
 
#define MATH_10_VERSION   0x0A001021L
 Версия файла - 10.0.
 
#define MATH_10_SP1_VERSION   0x0A001023L
 Версия файла - 10.1.
 
#define MATH_11_VERSION   0x0B000031L
 Версия файла - 11.0.
 
#define MATH_11_SP1_VERSION   0x0B000032L
 Версия файла - 11.1.
 
#define MATH_12_VERSION   0x0C00004DL
 Версия файла - 12.0.
 
#define MATH_12_SP1_VERSION   0x0C00004EL
 Версия файла - 12.1.
 
#define MATH_13_START_VERSION   0x0D000000L
 Версия файла - 13.0 (начало версии).
 
#define MATH_13_VERSION   0x0D000060L
 Версия файла - 13.0.
 
#define MATH_13_SP1_VERSION   0x0D001016L
 Версия файла - 13.1.
 
#define MATH_13_SP2_VERSION   0x0D002004L
 Версия файла - 13.2.
 
#define MATH_13_SP3_START_VERSION   0x0D003000L
 Версия файла - 13.3 (начало версии).
 
#define MATH_13_SP3_VERSION   0x0D003001L
 Версия файла - 13.3.
 
#define MATH_14_START_VERSION   0x0E000000L
 Версия файла - 14.0 (начало версии).
 
#define MATH_14_VERSION   0x0E000021L
 Версия файла - 14.0.
 
#define MATH_14_SP1_START_VERSION   0x0E001000L
 Версия файла - 14.1 (начало версии).
 
#define MATH_14_SP1_VERSION   0x0E001011L
 Версия файла - 14.1.
 
#define MATH_14_SP2_START_VERSION   0x0E002000L
 Версия файла - 14.2 (начало версии).
 
#define MATH_14_SP2_VERSION   0x0E002001L
 Версия файла - 14.2.
 
#define MATH_15_START_VERSION   0x0F000000L
 Версия файла - 15.0 (начало версии).
 
#define MATH_15_VERSION   0x0F000014L
 Версия файла - 15.0.
 
#define MATH_15_SP1_START_VERSION   0x0F001000L
 Версия файла - 15.1 (начало версии).
 
#define MATH_15_SP1_VERSION   0x0F001010L
 Версия файла - 15.1.
 
#define MATH_15_SP2_START_VERSION   0x0F002000L
 Версия файла - 15.2 (начало версии).
 
#define MATH_15_SP2_VERSION   0x0F002010L
 Версия файла - 15.2.
 
#define MATH_16_START_VERSION   0x10000000L
 Версия файла - 16.0 (начало версии).
 
#define C3D_16_VERSION   0x10000008L
 Версия файла - C3D 16.0.
 
#define MATH_16_VERSION   0x1000000DL
 Версия файла - 16.0.
 
#define MATH_16_SP1_START_VERSION   0x10001000L
 Версия файла - 16.1 (начало версии).
 
#define MATH_16_SP1_VERSION   0x10001002L
 Версия файла - 16.1.
 
#define MATH_17_START_VERSION   0x11000000L
 Версия файла - 17.0 (начало версии).
 
#define C3D_2016_VERSION   0x1100000FL
 Версия файла - C3D 2016.
 
#define MATH_17_VERSION   0x1100001FL
 Версия файла - 17.0.
 
#define C3D_2017_VERSION   MATH_17_VERSION
 Версия файла - C3D 2017.
 
#define MATH_17_SP1_VERSION   0x11001001L
 Версия файла - 17.1.
 
#define MATH_18_START_VERSION   0x12000000L
 Версия файла - 18.0 (начало версии).
 
#define C3D_2018_VERSION   0x1200000DL
 Версия файла - C3D 2018.
 
#define MATH_18_VERSION   0x12000010L
 Версия файла - 18.0.
 
#define MATH_19_START_VERSION   0x13000000L
 Версия файла - 19.0 (начало версии).
 
#define MATH_18_SP1_VERSION   0x13000005L
 Версия файла - 18.1.
 
#define C3D_2019_VERSION   0x1300000FL
 Версия файла - C3D 2019.
 
#define VISITING_CLASS(Class)
 Реализация функции, инициирующей посещение объекта. Подробнее...
 
#define C3D_CONTROLED_THROW_EX(expt)   if( ExceptionMode::IsEnabled() ) throw expt;
 Бросить указанное исключение, если режим позволяет.
 
#define C3D_CONTROLED_THROW   if( ExceptionMode::IsEnabled() ) throw;
 Бросить исключение, если режим позволяет.
 
#define CommonRecursiveMutex   CommonMutex
 Одинаковая реализация CommonMutex и CommonRecursiveMutex.
 

Определения типов

typedef uint32 SimpleName
 Определение простого имени. Подробнее...
 
typedef uint32 VERSION
 Версия.
 

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

enum  MbeWritableReleaseVersion {
  wrv_FirstRelease = MATH_17_SP1_VERSION, wrv_MATH_17_SP1 = MATH_17_SP1_VERSION, wrv_C3D_2018 = C3D_2018_VERSION, wrv_MATH_18 = MATH_18_VERSION,
  wrv_MATH_18_SP1 = MATH_18_SP1_VERSION, wrv_C3D_2019 = C3D_2019_VERSION, wrv_PrevRelease = wrv_MATH_18_SP1, wrv_LastRelease = wrv_C3D_2019,
  wrv_MaxPossible = SYS_MAX_UINT32
}
 Список потенциально допустимых предыдущих версий для записи. Подробнее...
 
enum  DelType { defDelete, noDelete, Delete }
 Типы удаления элементов. Подробнее...
 
enum  ThreeStates { ts_negative = -1, ts_neutral = 0, ts_positive = 1 }
 Трехпозиционный флаг. Подробнее...
 

Функции

int SimpleNameCompare (const SimpleName &h1, const SimpleName &h2)
 Сравнить простые имена.
 
bool IsGoodSimpleName (const SimpleName &s)
 Проверить валидность простого имени.
 
SimpleName Hash32 (uint8 *k, size_t length, SimpleName _c=INIT_HASH32_VAL)
 Хэш-функция. Подробнее...
 
template<typename T >
SimpleName Hash32Ptr (T *k)
 Хэш указателя. Подробнее...
 
SimpleName HashStr (const c3d::string_t &str)
 Хэш строки. Подробнее...
 
SimpleName HashStr (const char *c_str)
 Хэш строки. Подробнее...
 
SimpleName HashStr (const wchar_t *w_str)
 Хэш строки. Подробнее...
 
SimpleName Hash32SN (SimpleName k1, SimpleName k2)
 Хэш двух простых имен. Подробнее...
 
bool IsVersion16bit (VERSION version)
 Является ли версия файла 16-битной.
 
bool IsVersion32bit (VERSION version)
 Является ли версия файла 32-битной.
 
bool IsVersion64bit (VERSION version)
 Является ли версия файла 64-битной.
 
VERSION GetCurrentMathFileVersion ()
 Текущая версия потока.
 
bool CanWriteToMathFileVersion (VERSION dstVertsion, bool *canUseWriterEx=NULL)
 Можно ли потенциально сохранить в заданную версию?
 
VERSION GetPrevReleaseMathFileVersion ()
 Версия потока предпоследнего релиза.
 
VERSION GetLastReleaseMathFileVersion ()
 Версия потока последнего релиза.
 
uint16 MkUint16 (uint8 lo, uint8 hi)
 Создать uint16 на основе двух uint8.
 
uint32 MkUint32 (uint16 lo, uint16 hi)
 Создать uint32 на основе двух uint16.
 
uint64 MkUint64 (uint32 lo, uint32 hi)
 Создать uint64 на основе двух uint32.
 
uint32 LoUint32 (uint64 u64)
 Выделить младшее слово uint32 из uint64.
 
int32 LoInt32 (uint64 u64)
 Выделить младшее слово int32 из int64.
 
uint32 HiUint32 (uint64 u64)
 Выделить старшее слово uint32 из uint64.
 
int32 HiInt32 (uint64 u64)
 Выделить старшее слово int32 из int64.
 
uint16 LoUint16 (uint32 u32)
 Выделить младшее слово uint16 из uint32.
 
int16 LoInt16 (uint32 u32)
 Выделить младшее слово int16 из uint32.
 
uint16 HiUint16 (uint32 u32)
 Выделить старшее слово uint16 из uint32.
 
int16 HiInt16 (uint32 u32)
 Выделить старшее слово int16 из uint32.
 
uint8 LoUint8 (uint16 u16)
 Выделить младшее слово uint8 из uint16.
 
int8 LoInt8 (uint16 u16)
 Выделить младшее слово int8 из uint16.
 
uint8 HiUint8 (uint16 u16)
 Выделить старшее слово uint8 из uint16.
 
int8 HiInt8 (uint16 u16)
 Выделить младшее слово int8 из uint16.
 
template<class SignedType >
SignedType abs_t (const SignedType x)
 Модуль числа. Подробнее...
 
void EnableMathModules (const char *name, int nameLength, const char *key, int keyLength)
 Включить модули ядра. Подробнее...
 
bool VerifyLicenseKey (const char *name, const char *key, const char *pub_key)
 Проверить ключ активации на валидность. Подробнее...
 
bool IsMathModelerEnable ()
 Проверить контроллер защиты моделировщика. Подробнее...
 
bool IsMathConverterEnable ()
 Проверить контроллер защиты конвертеров. Подробнее...
 
bool IsMathSolverEnable ()
 Проверить контроллер защиты решателя. Подробнее...
 
bool IsMathVisionEnable ()
 Проверить контроллер защиты визуализатора. Подробнее...
 
bool IsMathBShaperEnable ()
 Проверить контроллер защиты преобразователя сеток в BRep. Подробнее...
 
void FreeMathModulesChecker ()
 Отпустить контролера работы модулей ядра. Подробнее...
 
void c3d::EnableMemoryLeakDump ()
 Включить контроль утечек памяти. Подробнее...
 
void * ReallocArraySize (void *arr_parr, size_t newBytesCount, bool)
 Функция перезахватов памяти в массивах.
 

Переменные

const SimpleName SIMPLENAME_MAX = SYS_MAX_UINT32
 Максимально допустимое простое имя.
 
const SimpleName UNDEFINED_SNAME = SYS_MAX_UINT32
 Значение используемое, в качестве "неопределенного", еще не назначенного имени.
 
const SimpleName INIT_HASH32_VAL = 31415926
 Начальное число для хэш-функции.
 
const uint SYS_MAX_UINT = 0xffffffff
 Максимальное значение uint.
 
const size_t SYS_MAX_T = 0xffffffff
 Максимальное значение size_t.
 
const ptrdiff_t SYS_MAX_ST = 0x7fffffff
 Максимальное значение ptrdiff_t.
 
const ptrdiff_t SYS_MIN_ST = 0x80000000
 Минимальное значение ptrdiff_t.
 
const uint8 SYS_MAX_UINT8 = 0xFF
 Максимальное значение uint8.
 
const uint16 SYS_MAX_UINT16 = 0xFFFF
 Максимальное значение uint16.
 
const uint32 SYS_MAX_UINT32 = 0xFFFFFFFF
 Максимальное значение uint32.
 
const uint64 SYS_MAX_UINT64 = 0xFFFFFFFFFFFFFFFF
 Максимальное значение uint64.
 
const int16 SYS_MAX_INT16 = 0x7FFF
 Максимальное значение int16.
 
const int32 SYS_MAX_INT32 = 0x7FFFFFFF
 Максимальное значение int32.
 
const int64 SYS_MAX_INT64 = 0x7FFFFFFFFFFFFFFF
 Максимальное значение int64.
 
const int16 SYS_MIN_INT16 = (int16)(uint16)0x8000
 Минимальное значение int16.
 
const int32 SYS_MIN_INT32 = (int32)(uint32)0x80000000
 Минимальное значение int32.
 
const int64 SYS_MIN_INT64 = (int64)(uint64)0x8000000000000000
 Минимальное значение int64.
 
const size_t NSIZE = SYS_MAX_T
 Неопределенный размер.
 
const uint NPOS32 = (uint)SYS_MAX_UINT32
 Неопределенная позиция (для 32 битных данных).
 
const size_t SIZE_OF_POINTER = sizeof(char *)
 Размер указателя в байтах. Подробнее...
 

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

Макросы

◆ NullStrHash

#define NullStrHash   StrHash( 0, StrHash::htp_undef )

Хэш пустой строки.

Хэш пустой строки.

◆ UndefStrHash

#define UndefStrHash   StrHash( -1, StrHash::htp_undef )

Хэш при отсутствии строки.

Хэш при отсутствии строки.

◆ CALL_DECLARATION

#define CALL_DECLARATION

Определение CALL_DECLARATION.

Определение CALL_DECLARATION.

◆ EXPORT_DECLARATION

#define EXPORT_DECLARATION

Определение EXPORT_DECLARATION.

Определение EXPORT_DECLARATION.

◆ OBVIOUS_PRIVATE_COPY

#define OBVIOUS_PRIVATE_COPY (   ClassName)
Макроопределение:
private: \
ClassName & operator = ( const ClassName & ); \
ClassName( const ClassName & );

Объявление оператора присваивания и конструктора копирования.

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

◆ MATH_CLASS

#define MATH_CLASS

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

Объявление экспортности в данном модуле или импортности в других подключаемых модулях.

◆ VISITING_CLASS

#define VISITING_CLASS (   Class)
Макроопределение:
public: \
virtual void Accept( Visitor & visitor ) \
{ \
VisitorImpl<Class> * impl = dynamic_cast<VisitorImpl<Class> *>(&visitor); \
if( impl ) \
impl->Visit( *this ); \
}
Абстрактный базовый класс посетителя.
Definition: templ_visitor.h:24
virtual void Visit(T &)=0
Функция, обрабатывающая посещение объекта.
Обобщенное объявление поддержки посещения объекта конкретным посетителем.
Definition: templ_visitor.h:43

Реализация функции, инициирующей посещение объекта.

Реализация функции, инициирующей посещение объекта.
Сделана через динамическое приведение типов ради реализации асимметричного посетителя (см. Александреску "Modern C++ Design"). Необходимо объявлять в любом классе, поддерживающем посещение.

Типы

◆ SimpleName

typedef uint32 SimpleName

Определение простого имени.

Определение простого имени.

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

◆ MbeWritableReleaseVersion

Список потенциально допустимых предыдущих версий для записи.

Элементы перечислений
wrv_FirstRelease 

Версия потока первого допустимого релиза.

wrv_MATH_17_SP1 

Версия файла - 17.1.

wrv_C3D_2018 

Версия файла - C3D 2018.

wrv_MATH_18 

Версия файла - 18.0.

wrv_MATH_18_SP1 

Версия файла - 18.1.

wrv_C3D_2019 

Версия файла - C3D 2019.

wrv_PrevRelease 

Версия потока предпоследнего релиза.

wrv_LastRelease 

Версия потока последнего релиза.

wrv_MaxPossible 

Использовать последнюю версия потока.

◆ DelType

enum DelType

Типы удаления элементов.

Типы удаления элементов при удалении из массива.

Элементы перечислений
defDelete 

Удалять объект по умолчанию.

noDelete 

Не удалять объект.

Delete 

Удалять объект.

◆ ThreeStates

Трехпозиционный флаг.

Флаг из трех состояний.

Элементы перечислений
ts_negative 

Состояние НЕТ.

ts_neutral 

Состояние НЕ ИЗВЕСТНО.

ts_positive 

Состояние ДА.

Функции

◆ Hash32()

SimpleName Hash32 ( uint8 *  k,
size_t  length,
SimpleName  _c = INIT_HASH32_VAL 
)
inline

Хэш-функция.

Хэш по последовательности байти и предыдущему хэшу.
Каждый бит k влияет на возвращаемое значение.
Функция плохо подходит для использования в криптографии.
k - Указатель на начало последовательности байт.
length - Количество байт в последовательности.
_c - Предыдущий hash или произвольное значение.

Возвращает
Возвращает 32-битное число.

◆ Hash32Ptr()

template<typename T >
SimpleName Hash32Ptr ( T *  k)

Хэш указателя.

Хэш указателя.

◆ HashStr() [1/3]

SimpleName HashStr ( const c3d::string_t str)
inline

Хэш строки.

Хэш строки.

◆ HashStr() [2/3]

SimpleName HashStr ( const char *  c_str)
inline

Хэш строки.

Хэш строки.

◆ HashStr() [3/3]

SimpleName HashStr ( const wchar_t *  w_str)
inline

Хэш строки.

Хэш строки.

◆ Hash32SN()

SimpleName Hash32SN ( SimpleName  k1,
SimpleName  k2 
)
inline

Хэш двух простых имен.

Хэш двух простых имен.
Часто встречающаяся комбинация - hash от двух SimpleName (uint32).

◆ abs_t()

template<class SignedType >
SignedType abs_t ( const SignedType  x)

Модуль числа.

Модуль числа.

◆ EnableMathModules()

void EnableMathModules ( const char *  name,
int  nameLength,
const char *  key,
int  keyLength 
)

Включить модули ядра.

Включить соответствующие модули ядра.

◆ VerifyLicenseKey()

bool VerifyLicenseKey ( const char *  name,
const char *  key,
const char *  pub_key 
)

Проверить ключ активации на валидность.

Проверить ключ активации на валидность.

◆ IsMathModelerEnable()

bool IsMathModelerEnable ( )

Проверить контроллер защиты моделировщика.

Проверить контроллер защиты моделировщика.

◆ IsMathConverterEnable()

bool IsMathConverterEnable ( )

Проверить контроллер защиты конвертеров.

Проверить контроллер защиты конвертеров.

◆ IsMathSolverEnable()

bool IsMathSolverEnable ( )

Проверить контроллер защиты решателя.

Проверить контроллер защиты решателя.

◆ IsMathVisionEnable()

bool IsMathVisionEnable ( )

Проверить контроллер защиты визуализатора.

Проверить контроллер защиты визуализатора.

◆ IsMathBShaperEnable()

bool IsMathBShaperEnable ( )

Проверить контроллер защиты преобразователя сеток в BRep.

Проверить контроллер защиты преобразователя сеток в BRep.

◆ FreeMathModulesChecker()

void FreeMathModulesChecker ( )

Отпустить контролера работы модулей ядра.

Отпустить контролера работы модулей ядра.

◆ EnableMemoryLeakDump()

void c3d::EnableMemoryLeakDump ( )

Включить контроль утечек памяти.

Включить контроль утечек памяти.

Переменные

◆ SIZE_OF_POINTER

const size_t SIZE_OF_POINTER = sizeof(char *)

Размер указателя в байтах.

Размер указателя в байтах.