Документация
Знакомство с CntmLib
Общие сведения
Установка и использование
Основные пакеты
Вспомогательные пакеты
Лицензия
Описание классов
|
НАЗНАЧЕНИЕ ПАКЕТА
Данный пакет содержит разнообразные функции и классы вспомогательного
назначения. Утилиты можно разбить на следующие группы: целочисленные типы,
математические функции, средства форматирования, базовый класс для эл-та
двусвязанного списка, средства для разбора сигнатур функций и методов.
ЦЕЛОЧИСЛЕННЫЕ ТИПЫ
Библиотека предоставляет следующие целочисленные типы:
- Cntm::uint - беззнаковое целое;
- Cntm::ulong - беззнаковое длинное целое;
- Cntm::int8 - знаковое 1-байтовое целое;
- Cntm::int16 - знаковое 2-байтовое целое;
- Cntm::int32 - знаковое 4-байтовое целое;
- Cntm::int64 - знаковое 8-байтовое целое;
- Cntm::uint8 - беззнаковое 1-байтовое целое;
- Cntm::uint16 - беззнаковое 2-байтовое целое;
- Cntm::uint32 - беззнаковое 4-байтовое целое;
- Cntm::uint64 - беззнаковое 8-байтовое целое.
Многие библиотеки (например, QT) определяют свои собственные типы uint и т.д. В обычном случае конфликтов с CntmLib не возникает, однако,
если использовать директиву using namespace Cntm, то конфликт возникнет. Для его устранения следует использовать макрос
CNTM_USING_INTTYPES, либо объявляя его параметром компиляции, либо определяя перед включением заголовков CntmLib. При
определении этого макроса будут использованы типы из CntmLib (этот макрос разрешает директивы using Cntm::uint и т.д.).
МАТЕМАТИЧЕСКИЕ ФУНКЦИИ
Библиотека предоставляет следующие математические функции:
- Определение минимума: template < typename Type > inline const Type
& Cntm::Min(const Type & value1, const Type &
value2);
- Определение максимума: template < typename Type > inline const
Type & Cntm::Max(const Type & value1, const Type
& value2);
- Целочисленное деление с округлением в большую сторону: template <
typename Type > inline Type Cntm::DivIntGreatRound(Type
value1, Type value2);
- Обмен эл-тов: template < typename Type > inline void
Cntm::Exchange(Type & value1, Type &
value2);
- Проверить значение на попадание в пределы отрезка (оба конца входят в
отрезок): template < typename Type > inline bool
Cntm::InRange(const Type & value, const Type & low,
const Type & high);
- Проверить значение на выход за пределы отрезка (оба конца входят в
отрезок): template < typename Type > inline bool
Cntm::OutRange(const Type & value, const
Type & low, const Type & high);
- Отсечь значение по указанным пределам отрезка (оба конца входят в
отрезок): template < typename Type > inline const Type &
Cntm::TrimRange(const Type & value,
const Type & low, const Type & high);
- Индекс отрезка (оба конца входят в отрезок). Результат: -1 - до граниицы,
0 - на границе, 1 - после границы: template < typename Type > inline int
Cntm::RangeIndex(const Type & value,
const Type & bound);
- Индекс отрезка (оба конца входят в отрезок). Результат: -1 - до low
граниицы, 0 - в отрезке, 1 - после high границы: template < typename Type
> inline int Cntm::RangeIndex(const Type
& value, const Type & low, const Type & high);
- Проверить значение на попадание в пределы интервала (левый конец входит в
интервал, правый - нет): template < typename Type > inline bool
Cntm::InInterval(const Type & value,
const Type & low, const Type & high);
- Проверить значение на выход за пределы интервала (левый конец входит в
интервал, правый - нет): template < typename Type > inline bool
Cntm::OutInterval(const Type & value,
const Type & low, const Type & high);
- Индекс интервала (левый конец входит в интервал, правый - нет). Результат:
-1 - до low граниицы, 0 - в интервале, 1 - после или на high границе: template
< typename Type > inline int
Cntm::IntervalIndex(const Type & value,
const Type & low, const Type & high).
СРЕДСТВА ФОРМАТИРОВАНИЯ СООБЩЕНИЙ
Функция Cntm::FormatMsg() предназначена для форматирования
сообщений путем вставки в строку шаблона подставляемых значений, которых м.б.
до
8 штук. Место подстановки значения в строке шаблона -
последовательность "%%INDEX", где INDEX = 1..8. И строка шаблона и
результат имеют тип std::string. Пример: cout << FormatMsg("Пользователь %%2 выполнил операцию %%1 раз(а)", 2, "Вася").
Для преобразования подставляемых значений в строку используется
промежуточный тип FmtMsgPrm, в конструкторе которого вызывается оператор
<< для basic_ostream. Тип значения должен поддерживать эту
операцию.
Также имеется класс Cntm::FormatString для хранения форматных строк
(содержащих текст сообщения и указатели мест вставки подставляемых значений,
имеющие вид "%%INDEX", где INDEX = 1..8), который является потомком
std::string. Данный класс имеет оператор (...) использующийся для
подстановки реальных значений параметров. Пример: FormatString fsGenericError = "Общая ошибка: %%2, приоритет: %%1, user: %%3"); throw exception(fsGenericError(3, "Ошибка параметра", fCurrentUser));
ПРОЧЕЕ
Дополнительно пакет содержит базовый класс эл-та двусвязанного списка
Cntm::LinkedListItemBase.
Также пакет содержит средства для разбора сигнатур функций и методов и сбора
параметров в операторе (). Эти средства используются событиями, асинхронными
процедурами, потоками активных объектов и др., т.е. там, где встречаются методы
вида ИмяМетода()(). Для ознакомления с этими средствами см. классы Cntm::SignatureInfo,
Cntm::SignatureArgsCollector, Cntm::SignatureArgsCollectObjectBase и исходные модули
"Cntm\Utils\SignatureInfo.h" и
"Cntm\Utils\SignatureArgsCollector.h".
|