libqi
1.14.5
|
Provide access to application's path, this include configuration, data, executable and library paths.
See qi::path Developer Guide for a global overview of path related functions
.
More...
Namespaces | |
namespace | qi::path |
Set of tools to handle SDK layouts. | |
Functions | |
QI_API std::string | qi::path::sdkPrefix () |
Return the default SDK prefix path.It's always a complete, native path. | |
QI_API std::string | qi::path::findBin (const std::string &name) |
Look for a binary.This will search in all SDK prefixes for a file named 'name'. It will then add '.exe' suffix if needed. | |
QI_API std::string | qi::path::findLib (const std::string &name) |
Look for a library.This will search in all SDK prefixes for a file named 'name'. It will then add 'lib' prefix, and appropriated suffixes ('.dll' on windows, '.so' on linux, '.dylib' on mac). | |
QI_API std::string | qi::path::findConf (const std::string &applicationName, const std::string &filename) |
Look for a configuration file.The file is searched in a list of possible directories, the first match is returned. | |
QI_API std::string | qi::path::findData (const std::string &applicationName, const std::string &filename) |
Look for a data file.The file is search in a list of possible directories, the first match is returned. The list of paths is constructed like this: | |
QI_API std::vector< std::string > | qi::path::confPaths (const std::string &applicationName="") |
Get the list of directories used when searching for configuration files for the given application name.This is used by the qi::path::findConfigurationPath method. | |
QI_API std::vector< std::string > | qi::path::dataPaths (const std::string &applicationName="") |
Get the list of directories used when searching for data files for the given application name.This is used by the qi::path::findDataPath method. | |
QI_API std::vector< std::string > | qi::path::binPaths () |
Get the list of directories used when searching for binaries.This is used by the qi::path::findBin() method. | |
QI_API std::vector< std::string > | qi::path::libPaths () |
Get the list of directories used when searching for libraries.This is used by the qi::path::findLib() method. | |
QI_API std::string | qi::path::userWritableDataPath (const std::string &applicationName, const std::string &filename) |
Get the writable data files path for users. | |
QI_API std::string | qi::path::userWritableConfPath (const std::string &applicationName, const std::string &filename="") |
Get the writable configuration files path for users. |
Provide access to application's path, this include configuration, data, executable and library paths.
See qi::path Developer Guide for a global overview of path related functions
.
Provide access to various path including:
Since this library is cross-platform we need to take care of different charsets and localizations (UTF-8, UTF-16).
To support internationalization we will always consider path to be encoded in UTF-8 under Windows. We will convert them to UTF-16 to pass them to the native windows API. On Posix platform we have nothing to do.
We recommand to use boost::filesystem::path with and imbued UTF-8 locale. you could use this code in your main to initialise boost::filesystem locale once:
// create a locale with a unicode facet to convert between char(utf-8) and wchar(utf-16/utf-32) std::locale loc(std::locale(), &qi::unicodeFacet()); // Make boost.filesystem always use the unicode facet boost::filesystem::path::imbue(loc); // it's although possible to set the locale as global. // This will enable UTF8 supportfor iostream. std::locale::global(loc);
QI_API std::vector<std::string> qi::path::binPaths | ( | ) |
Get the list of directories used when searching for binaries.This is used by the qi::path::findBin() method.
Warning: you should not assume those directories exist, nor that they are writeable.
QI_API std::vector<std::string> qi::path::confPaths | ( | const std::string & | applicationName = "" | ) |
Get the list of directories used when searching for configuration files for the given application name.This is used by the qi::path::findConfigurationPath method.
applicationName | Name of the application (in UTF-8). |
Warning: you should not assume those directories exist, nor that they are writeable.
QI_API std::vector<std::string> qi::path::dataPaths | ( | const std::string & | applicationName = "" | ) |
Get the list of directories used when searching for data files for the given application name.This is used by the qi::path::findDataPath method.
applicationName | Name of the application (in UTF-8). |
Warning: you should not assume those directories exist, nor that they are writeable.
QI_API std::string qi::path::findBin | ( | const std::string & | name | ) |
Look for a binary.This will search in all SDK prefixes for a file named 'name'. It will then add '.exe' suffix if needed.
name | The full name of the binary, or just the name (without '.exe') (in UTF-8). |
QI_API std::string qi::path::findConf | ( | const std::string & | applicationName, |
const std::string & | filename | ||
) |
Look for a configuration file.The file is searched in a list of possible directories, the first match is returned.
* The list of paths is constructed like this: * - first, a standard path in the home directory (like * ~/.config/<applicationName>/<filename>) * - then: * <sdk_prefix>/etc/<applicationName>/<filename> * for each known SDK prefix * - then a standard path in the system. (like * /etc/<applicationName>/<filename>) *
applicationName | Name of the application (in UTF-8). |
filename | Name of the file to look for (in UTF-8). You can specify subdirectories using "/" as directory separator. |
QI_API std::string qi::path::findData | ( | const std::string & | applicationName, |
const std::string & | filename | ||
) |
Look for a data file.The file is search in a list of possible directories, the first match is returned. The list of paths is constructed like this:
* - first, a standard path in the home directory (like * ~/.local/share/<applicationName>/<filename>) * - then * <sdk_prefix>/share/<applicationName>/<filename> * for each known SDK prefix *
applicationName | Name of the application (in UTF-8). |
filename | Name of the file to look for (in UTF-8). You can specify subdirectories using "/" as directory separator. |
QI_API std::string qi::path::findLib | ( | const std::string & | name | ) |
Look for a library.This will search in all SDK prefixes for a file named 'name'. It will then add 'lib' prefix, and appropriated suffixes ('.dll' on windows, '.so' on linux, '.dylib' on mac).
name | The full name of the library, or just the name (without '.dll', '.so') (in UTF-8). |
You can specify subdirectories using "/" as directory separator (in UTF-8).
QI_API std::vector<std::string> qi::path::libPaths | ( | ) |
Get the list of directories used when searching for libraries.This is used by the qi::path::findLib() method.
Warning: you should not assume those directories exist, nor that they are writeable.
QI_API std::string qi::path::userWritableConfPath | ( | const std::string & | applicationName, |
const std::string & | filename = "" |
||
) |
Get the writable configuration files path for users.
applicationName | The name of the application. |
filename | If filename is empty, return the directory in which to write. Otherwise the path is constructed like this: * <home>/.config/<applicatioName>/<filename> (on linux) * %AppData%\<applicatioName>\<filename> (windows) * You can specify subdirectories using "/" as directory separator * (in UTF-8). * |
QI_API std::string qi::path::userWritableDataPath | ( | const std::string & | applicationName, |
const std::string & | filename | ||
) |
Get the writable data files path for users.
applicationName | The name of the application (in UTF-8). |
filename | If filename is empty, return the directory in which to write. Otherwise the path is constructed like this: * <home>/.local/share/<applicatioName>/<filename> (on linux) * %AppData%\<applicatioName>\<filename> (windows) * You can specify subdirectories using "/" as directory separator * (in UTF-8). * |