merged AI doc, some new pages
This commit is contained in:
@@ -1,17 +1,17 @@
|
||||
/*! \file pibase.h
|
||||
* \ingroup Core
|
||||
* \~\brief
|
||||
* \~english Base types and functions
|
||||
* \~russian Базовые типы и методы
|
||||
*
|
||||
* \~\details
|
||||
* \~english
|
||||
* This file implements first layer above the system and
|
||||
* declares some basic useful functions
|
||||
* \~russian
|
||||
* Этот файл реализует первый слой после системы и объявляет
|
||||
* несколько базовых полезных методов
|
||||
*/
|
||||
//! \addtogroup Core
|
||||
//! \{
|
||||
//! \~\file pibase.h
|
||||
//! \brief
|
||||
//! \~english Base types and functions
|
||||
//! \~russian Базовые типы и методы
|
||||
//! \details
|
||||
//! \~english
|
||||
//! This file implements first layer above the system and
|
||||
//! declares some basic useful functions
|
||||
//! \~russian
|
||||
//! Этот файл реализует первый слой после системы и объявляет
|
||||
//! несколько базовых полезных методов
|
||||
//! \~\}
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Base types and functions
|
||||
@@ -245,6 +245,9 @@ inline constexpr T piAbs(const T & v) {
|
||||
}
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Templated function return minimum of two values
|
||||
//! \~russian Шаблонный метод, возвращающий минимум из двух значений
|
||||
template<typename T>
|
||||
constexpr T piMin(const T & f, const T & s) {
|
||||
return ((f > s) ? s : f);
|
||||
@@ -282,6 +285,9 @@ constexpr T piMin(const T & f, const T & s, const Args &... args) {
|
||||
}
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Templated function return maximum of two values
|
||||
//! \~russian Шаблонный метод, возвращающий максимум из двух значений
|
||||
template<typename T>
|
||||
constexpr T piMax(const T & f, const T & s) {
|
||||
return ((f < s) ? s : f);
|
||||
@@ -509,51 +515,87 @@ inline uint piHashData(const uchar * data, uint len, uint seed = 0) {
|
||||
}
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Generic hash function, returns 0 for unknown types
|
||||
//! \~russian Хэш-функция общего назначения, возвращает 0 для неизвестных типов
|
||||
template<typename T>
|
||||
inline uint piHash(const T & v) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for char type
|
||||
//! \~russian Специализация хэш-функции для типа char
|
||||
template<>
|
||||
inline uint piHash(const char & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for uchar type
|
||||
//! \~russian Специализация хэш-функции для типа uchar
|
||||
template<>
|
||||
inline uint piHash(const uchar & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for short type
|
||||
//! \~russian Специализация хэш-функции для типа short
|
||||
template<>
|
||||
inline uint piHash(const short & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for ushort type
|
||||
//! \~russian Специализация хэш-функции для типа ushort
|
||||
template<>
|
||||
inline uint piHash(const ushort & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for int type
|
||||
//! \~russian Специализация хэш-функции для типа int
|
||||
template<>
|
||||
inline uint piHash(const int & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for uint type
|
||||
//! \~russian Специализация хэш-функции для типа uint
|
||||
template<>
|
||||
inline uint piHash(const uint & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for llong type using piHashData
|
||||
//! \~russian Специализация хэш-функции для типа llong с использованием piHashData
|
||||
template<>
|
||||
inline uint piHash(const llong & v) {
|
||||
return piHashData((const uchar *)&v, sizeof(v));
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for ullong type using piHashData
|
||||
//! \~russian Специализация хэш-функции для типа ullong с использованием piHashData
|
||||
template<>
|
||||
inline uint piHash(const ullong & v) {
|
||||
return piHashData((const uchar *)&v, sizeof(v));
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for float type
|
||||
//! \~russian Специализация хэш-функции для типа float
|
||||
template<>
|
||||
inline uint piHash(const float & v) {
|
||||
return (uint)v;
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for double type using piHashData
|
||||
//! \~russian Специализация хэш-функции для типа double с использованием piHashData
|
||||
template<>
|
||||
inline uint piHash(const double & v) {
|
||||
return piHashData((const uchar *)&v, sizeof(v));
|
||||
}
|
||||
//! \~\brief
|
||||
//! \~english Hash function specialization for ldouble type using piHashData
|
||||
//! \~russian Специализация хэш-функции для типа ldouble с использованием piHashData
|
||||
template<>
|
||||
inline uint piHash(const ldouble & v) {
|
||||
return piHashData((const uchar *)&v, sizeof(v));
|
||||
@@ -736,16 +778,30 @@ struct PIP_EXPORT PINonTriviallyCopyable {
|
||||
inline PINonTriviallyCopyable::PINonTriviallyCopyable(PINonTriviallyCopyable &&) noexcept = default;
|
||||
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Template struct for extracting function type from callable objects
|
||||
//! \~russian Шаблонная структура для извлечения типа функции из вызываемых объектов
|
||||
template<typename T>
|
||||
struct FunctionType {
|
||||
using Type = void;
|
||||
};
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Specialization for member function pointers
|
||||
//! \~russian Специализация для указателей на члены класса
|
||||
template<typename Ret, typename Class, typename... Args>
|
||||
struct FunctionType<Ret (Class::*)(Args...) const> {
|
||||
using Type = std::function<Ret(Args...)>;
|
||||
};
|
||||
|
||||
//! \~\brief
|
||||
//! \~english Convert lambda/functional object to std::function
|
||||
//! \~russian Преобразует лямбду/функциональный объект в std::function
|
||||
//! \~\details
|
||||
//! \~english
|
||||
//! Uses FunctionType template to extract the function signature from the callable object
|
||||
//! \~russian
|
||||
//! Использует шаблон FunctionType для извлечения сигнатуры функции из вызываемого объекта
|
||||
template<typename L>
|
||||
typename FunctionType<decltype(&L::operator())>::Type toStdFunction(L const & func) {
|
||||
return func;
|
||||
|
||||
Reference in New Issue
Block a user