MeshLib
 
Loading...
Searching...
No Matches
MRSystemPath.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRExpected.h"
5
6#include <filesystem>
7
8namespace MR
9{
10
13{
14public:
15#ifndef MR_PARSING_FOR_PB11_BINDINGS
18
21
24
27#endif
28
30 enum class Directory
31 {
35 Fonts,
37 Plugins,
40 Count
41 };
42
44 MRMESH_API static std::filesystem::path getDirectory( Directory dir );
46 MRMESH_API static void overrideDirectory( Directory dir, const std::filesystem::path& path );
47
49 static std::filesystem::path getResourcesDirectory() { return getDirectory( Directory::Resources ); }
51 static std::filesystem::path getFontsDirectory() { return getDirectory( Directory::Fonts ); }
53 static std::filesystem::path getPluginsDirectory() { return getDirectory( Directory::Plugins ); }
55 static std::filesystem::path getPythonModulesDirectory() { return getDirectory( Directory::PythonModules ); }
56
57private:
58 static SystemPath& instance_();
59
60 std::array<std::filesystem::path, (size_t)Directory::Count> directories_;
61};
62
63} // namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:46
system directory path manager
Definition MRSystemPath.h:13
static std::filesystem::path getPythonModulesDirectory()
get the Python modules' binaries' directory path
Definition MRSystemPath.h:55
static std::filesystem::path getPluginsDirectory()
get the plugin binaries' directory path
Definition MRSystemPath.h:53
static MRMESH_API Expected< std::filesystem::path > getLibraryDirectory()
get the MRMesh binary's directory path
static std::filesystem::path getFontsDirectory()
get the font files' directory path
Definition MRSystemPath.h:51
static MRMESH_API Expected< std::filesystem::path > getLibraryPath()
get the MRMesh binary's file path
static MRMESH_API Expected< std::filesystem::path > getExecutableDirectory()
get the current executable's directory path
static std::filesystem::path getResourcesDirectory()
get the resource files' directory path
Definition MRSystemPath.h:49
static MRMESH_API void overrideDirectory(Directory dir, const std::filesystem::path &path)
override the directory path for specified category, useful for custom configurations
static MRMESH_API Expected< std::filesystem::path > getExecutablePath()
get the current executable's file path
static MRMESH_API std::filesystem::path getDirectory(Directory dir)
get the directory path for specified category
Directory
directory category
Definition MRSystemPath.h:31
@ Fonts
fonts (.ttf, .otf)
@ PythonModules
Python modules (.pyd, .so, .dylib, .pyi)
@ Plugins
plugins (.dll, .so, .dylib)
@ Resources
resources (.json, .png)
Definition MRCameraOrientationPlugin.h:8
tl::expected< T, E > Expected
Definition MRExpected.h:58