Библиотека CntmLib C++  :: Утилиты (пакет Cntm.Utils)
Документация
  • Знакомство с 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".


    Главная :: Документация :: Описание классов :: Download 

    © 2005, Овсеевич Р.В.
    SourceForge.net Logo