Документация

This commit is contained in:
Andrei Astafev 2019-11-25 16:57:54 +03:00
parent d6c1e42a26
commit cca2ab2f50
3 changed files with 154 additions and 26 deletions

View File

@ -1,3 +1,8 @@
/**
* @file current_executable.hpp
* @brief Параметры исполняемового файла
*/
#ifndef MYX_FILESYSTEM_CURRENT_EXECUTABLE_HPP_ #ifndef MYX_FILESYSTEM_CURRENT_EXECUTABLE_HPP_
#define MYX_FILESYSTEM_CURRENT_EXECUTABLE_HPP_ #define MYX_FILESYSTEM_CURRENT_EXECUTABLE_HPP_
@ -11,17 +16,34 @@ namespace filesystem {
class CurrentExecutable class CurrentExecutable
{ {
/// Путь к символической ссылке, указывающей на текущий исполняемый файл
QFileInfo m_procFilePath; QFileInfo m_procFilePath;
/// Канонический путь к текущему исполняемому файлу
QFileInfo m_canonicalFilePath; QFileInfo m_canonicalFilePath;
/// Канонический путь к каталогу с текущим исполняемым файлом
QDir m_canonicalPath; QDir m_canonicalPath;
/// Имя текущего исполняемого файла
QString m_fileName; QString m_fileName;
public: public:
/**
* @brief Конструктор, собирающий информацию о текущем исполняемом файле.
* Иницализируются все внутренние переменные.
*/
CurrentExecutable(); CurrentExecutable();
/**
* @brief Канонический путь к текущему исполняемому файлу
*/
QFileInfo canonicalFilePath() const; QFileInfo canonicalFilePath() const;
/**
* @brief Канонический путь к каталогу с текущим исполняемым файлом
*/
QDir canonicalPath() const; QDir canonicalPath() const;
/**
* @brief Имя текущего исполняемого файла
*/
QString fileName() const; QString fileName() const;
}; }; // class CurrentExecutable
} // namespace filesystem } // namespace filesystem

View File

@ -1,3 +1,8 @@
/**
* @file paths.hpp
* @brief Стандартные пути к каталогам и файлам
*/
#ifndef MYX_FILESYSTEM_PATHS_HPP_ #ifndef MYX_FILESYSTEM_PATHS_HPP_
#define MYX_FILESYSTEM_PATHS_HPP_ #define MYX_FILESYSTEM_PATHS_HPP_
@ -13,46 +18,136 @@ namespace filesystem {
class Paths class Paths
{ {
/// Путь к базовому каталогу
QDir m_prefixDirectory; QDir m_prefixDirectory;
/// Путь к каталогу с исполняемым файлом
QDir m_binaryDirectory; QDir m_binaryDirectory;
QDir m_configDirectory; /// Путь к каталогу с изменяемыми файлами
QDir m_cacheDirectory; QDir m_cacheDirectory;
/// Путь к каталогу с временными файлами
QDir m_tempDirectory; QDir m_tempDirectory;
/// Путь к каталогу с неизменяемыми файлами
QDir m_dataDirectory; QDir m_dataDirectory;
/// Путь к каталогу с журналами работы
QDir m_logDirectory; QDir m_logDirectory;
/// Путь к домашнему каталогу текущего пользователя
QDir m_homeDirectory; QDir m_homeDirectory;
QString m_configFileExtension; /// Путь к каталогу с файлами настройки
QString m_configFileName; QDir m_configDirectory;
/// Полный путь к файлу настройки
QFileInfo m_configFilePath; QFileInfo m_configFilePath;
/// Имя файла настройки
QString m_configFileName;
/// Расширение для файла настройки
QString m_configFileExtension;
/// Параметры текущего исполняемого файла
CurrentExecutable m_currentExecutable; CurrentExecutable m_currentExecutable;
public: public:
/**
* @brief Конструктор
* @param configFileExtension Расширение для файла настройки
*/
Paths( const QString& configFileExtension = "conf" ); Paths( const QString& configFileExtension = "conf" );
/**
* @brief Получение пути к базовому каталогу
*/
QDir prefixDirectory() const; QDir prefixDirectory() const;
/**
* @brief Установка пути к базовому каталогу
*/
void setPrefixDirectory( const QString& prefixDirectory ); void setPrefixDirectory( const QString& prefixDirectory );
/**
* @brief Получение пути к каталогу с исполняемым файлом
*/
QDir binaryDirectory() const; QDir binaryDirectory() const;
/**
* @brief Установка пути к каталогу с исполняемым файлом
*/
void setBinaryDirectory( const QString& binaryDirectory ); void setBinaryDirectory( const QString& binaryDirectory );
/**
* @brief Получение пути к каталогу с файлами настройки
*/
QDir configDirectory() const; QDir configDirectory() const;
/**
* @brief Установка пути к каталогу с файлами настройки
*/
void setConfigDirectory( const QString& configDirectory ); void setConfigDirectory( const QString& configDirectory );
/**
* @brief Получение пути к каталогу с изменяемыми файлами
*/
QDir cacheDirectory() const; QDir cacheDirectory() const;
/**
* @brief Установка пути к каталогу с изменяемыми файлами
*/
void setCacheDirectory( const QString& cacheDirectory ); void setCacheDirectory( const QString& cacheDirectory );
/**
* @brief Получение пути к каталогу с временными файлами
*/
QDir tempDirectory() const; QDir tempDirectory() const;
/**
* @brief Установка пути к каталогу с временными файлами
*/
void setTempDirectory( const QString& tempDirectory ); void setTempDirectory( const QString& tempDirectory );
/**
* @brief Получение пути к каталогу с неизменяемыми файлами
*/
QDir dataDirectory() const; QDir dataDirectory() const;
/**
* @brief Установка пути к каталогу с неизменяемыми файлами
*/
void setDataDirectory( const QString& dataDirectory ); void setDataDirectory( const QString& dataDirectory );
/**
* @brief Получение пути к каталогу с журналами работы
*/
QDir logDirectory() const; QDir logDirectory() const;
/**
* @brief Установка пути к каталогу с журналами работы
*/
void setLogDirectory( const QString& logDirectory ); void setLogDirectory( const QString& logDirectory );
/**
* @brief Имя исполняемого файла
*/
QString executableFileName() const; QString executableFileName() const;
QString configFileName() const; /**
void setConfigFileName( const QString& configFileName ); * @brief Полный путь к исполняемому файлу
*/
QFileInfo executableFilePath() const; QFileInfo executableFilePath() const;
/**
* @brief Имя файла настройки
*/
QString configFileName() const;
/**
* @brief Установка имени файла настройки
*/
void setConfigFileName( const QString& configFileName );
/**
* @brief Полный путь к файлу настройки
*/
QFileInfo configFilePath() const; QFileInfo configFilePath() const;
/**
* @brief Установка полного пути к файлу настройки
*/
void setConfigFilePath( const QFileInfo& configFilePath ); void setConfigFilePath( const QFileInfo& configFilePath );
/**
* @brief Обновление путей с учётом расположения исполняемого файла
*/
bool updatePaths(); bool updatePaths();
/**
* @brief Создание стандартных каталогов
*/
bool makeDefaultDirectories(); bool makeDefaultDirectories();
/**
* @brief Поиск существующего файла настойки.
* Поиск выполняется до тех пор пока не будет найден файл в следующем порядке:
* 1. Имя файла, указанное в качестве параметра функции
* 2. Имя файла, заданное переменной окружения вида PORJECT_NAME_CONFIG
* 3. Имя файла, полученное из внутренней переменной класса
* Если файл настройки не будет найден, то будет возвращена пустая строка
*/
QString findConfigFile( const QString& defaultConfigFile = "" ); QString findConfigFile( const QString& defaultConfigFile = "" );
}; // class Paths }; // class Paths

View File

@ -35,9 +35,9 @@ T degrees_to_radians( const T& degrees, typename std::enable_if< std::is_floatin
/*! /*!
* \brief decibel_to_power Перевод из децибелов в мощность * \brief decibel_to_power Перевод из децибелов в мощность $y = 10^{db / 10}$
* \param degrees Значение в градусах * \param db Децибелы
* \return Значение в радианах * \return Мощность
*/ */
template < typename T > template < typename T >
T decibel_to_power( T const& db ) T decibel_to_power( T const& db )
@ -47,7 +47,11 @@ T decibel_to_power( T const& db )
} }
// y = 10 * \log(x) /*!
* \brief power_to_decibel Перевод из мощности в децибелы по формуле $y = 10 * \log(x)$
* \param power Мощность
* \return Децибелы
*/
template < typename T > template < typename T >
T power_to_decibel( T const& power ) T power_to_decibel( T const& power )
{ {
@ -56,21 +60,28 @@ T power_to_decibel( T const& power )
} }
// y = 10^{x / 20} /*!
template < typename T > * \brief decibel_to_power Перевод из децибелов в амплитуду $y = 10^{db / 20}$
T decibel_to_magnitude( T const& value ) * \param db Децибелы
* \return Амплитуда
*/template < typename T >
T decibel_to_magnitude( T const& db )
{ {
static_assert( std::is_arithmetic< T >::value, "Arithmetic type is required." ); static_assert( std::is_arithmetic< T >::value, "Arithmetic type is required." );
return( std::pow( 10, value / 20.0 ) ); return( std::pow( 10, db / 20.0 ) );
} }
// y = 10^{x / 20} /*!
* \brief magnitude_to_decibel Перевод из амплитуды в децибелы по формуле $y = 20 * \log(x)$
* \param magnitude Амплитуда
* \return Децибелы
*/
template < typename T > template < typename T >
T decibel_to_magnitude( T const& value ) T magnitude_to_decibel( T const& magnitude )
{ {
static_assert( std::is_arithmetic< T >::value, "Arithmetic type is required." ); static_assert( std::is_arithmetic< T >::value, "Arithmetic type is required." );
return( std::pow( 10, value / 20.0 ) ); return( 20 * std::log( magnitude ) );
} }
} // namespace math } // namespace math