NixonCpp
Loading...
Searching...
No Matches
UtilsFactory.hpp
Go to the documentation of this file.
1#pragma once
2
15#include <filesystem>
16#include <memory>
17
18namespace nixoncpp::utils {
19
20 // Import types from other namespaces
21 using nixoncpp::assets::IAssetManager;
22 using nixoncpp::logging::ILogger;
23 using nixoncpp::logging::LoggerConfig;
25
27 public:
28 [[nodiscard]]
29 static std::shared_ptr<IFileReader> createFileReader();
30 [[nodiscard]]
31 static std::shared_ptr<IFileWriter> createFileWriter();
32 [[nodiscard]]
33 static std::shared_ptr<IPathResolver> createPathResolver();
34 [[nodiscard]]
35 static std::shared_ptr<IDirectoryManager> createDirectoryManager();
36 [[nodiscard]]
37 static std::unique_ptr<IPlatformInfo> createPlatformInfo();
38 [[nodiscard]]
39 static std::unique_ptr<IPlatformInfo> createPlatformInfo(Platform platform);
40 [[nodiscard]]
41 static std::shared_ptr<IAssetManager>
42 createAssetManager(const std::filesystem::path &executablePath, const std::string &appName);
43 [[nodiscard]]
44 static std::shared_ptr<IJsonSerializer> createJsonSerializer();
45 [[nodiscard]]
46 static std::shared_ptr<ICustomStringsLoader>
47 createCustomStringsLoader(const std::filesystem::path &executablePath,
48 const std::string &appName);
49 [[nodiscard]]
50 static std::shared_ptr<IStringFormatter> createStringFormatter();
51 [[nodiscard]]
52 static std::shared_ptr<ILogger> createLogger(LoggerType type, const LoggerConfig &config);
53 [[nodiscard]]
54 static std::shared_ptr<ILogger> createDefaultLogger();
55
56 // Unified application context
58
59 // System components
60 std::shared_ptr<ILogger> logger;
61 std::unique_ptr<IPlatformInfo> platformInfo;
62
63 // File system utilities
64 std::shared_ptr<IFileReader> fileReader;
65 std::shared_ptr<IFileWriter> fileWriter;
66 std::shared_ptr<IPathResolver> pathResolver;
67 std::shared_ptr<IDirectoryManager> directoryManager;
68
69 // Serialization & formatting
70 std::shared_ptr<IJsonSerializer> jsonSerializer;
71 std::shared_ptr<IStringFormatter> stringFormatter;
72
73 // Application-specific (nullable for flexibility)
74 std::shared_ptr<IAssetManager> assetManager;
75 std::shared_ptr<ICustomStringsLoader> customStringsLoader;
76 };
77
84 [[nodiscard]]
85 static ApplicationContext createFullContext(const std::string &appName,
86 const LoggerConfig &loggerConfig);
87
93 [[nodiscard]]
94 static ApplicationContext createCoreContext(const LoggerConfig &loggerConfig);
95
100 [[nodiscard]]
102 };
103
104} // namespace nixoncpp::utils
const std::string appName
Definition Application.cpp:10
Definition UtilsFactory.hpp:26
static std::shared_ptr< IFileWriter > createFileWriter()
Definition UtilsFactory.cpp:21
static std::shared_ptr< ILogger > createLogger(LoggerType type, const LoggerConfig &config)
Definition UtilsFactory.cpp:72
static ApplicationContext createFullContext(const std::string &appName, const LoggerConfig &loggerConfig)
Create full application context with all components.
Definition UtilsFactory.cpp:87
static std::shared_ptr< ICustomStringsLoader > createCustomStringsLoader(const std::filesystem::path &executablePath, const std::string &appName)
Definition UtilsFactory.cpp:58
static std::shared_ptr< IAssetManager > createAssetManager(const std::filesystem::path &executablePath, const std::string &appName)
Definition UtilsFactory.cpp:44
static std::shared_ptr< ILogger > createDefaultLogger()
Definition UtilsFactory.cpp:76
static ApplicationContext createCoreContext(const LoggerConfig &loggerConfig)
Create minimal context without app-specific components.
Definition UtilsFactory.cpp:116
static std::shared_ptr< IFileReader > createFileReader()
Definition UtilsFactory.cpp:17
static std::shared_ptr< IStringFormatter > createStringFormatter()
Definition UtilsFactory.cpp:67
static ApplicationContext createBasicContext()
Create basic utilities context with default logger.
Definition UtilsFactory.cpp:130
static std::shared_ptr< IJsonSerializer > createJsonSerializer()
Definition UtilsFactory.cpp:50
static std::shared_ptr< IDirectoryManager > createDirectoryManager()
Definition UtilsFactory.cpp:29
static std::shared_ptr< IPathResolver > createPathResolver()
Definition UtilsFactory.cpp:25
static std::unique_ptr< IPlatformInfo > createPlatformInfo()
Definition UtilsFactory.cpp:34
LoggerType
Definition LoggerFactory.hpp:8
Definition DirectoryManager.cpp:5
Platform
Definition IPlatformInfo.hpp:10
Configuration options for creating a logger.
Definition LoggerFactory.hpp:13
std::shared_ptr< IFileWriter > fileWriter
Definition UtilsFactory.hpp:65
std::shared_ptr< IStringFormatter > stringFormatter
Definition UtilsFactory.hpp:71
std::shared_ptr< IJsonSerializer > jsonSerializer
Definition UtilsFactory.hpp:70
std::shared_ptr< IPathResolver > pathResolver
Definition UtilsFactory.hpp:66
std::shared_ptr< IAssetManager > assetManager
Definition UtilsFactory.hpp:74
std::shared_ptr< ILogger > logger
Definition UtilsFactory.hpp:60
std::shared_ptr< IFileReader > fileReader
Definition UtilsFactory.hpp:64
std::unique_ptr< IPlatformInfo > platformInfo
Definition UtilsFactory.hpp:61
std::shared_ptr< ICustomStringsLoader > customStringsLoader
Definition UtilsFactory.hpp:75
std::shared_ptr< IDirectoryManager > directoryManager
Definition UtilsFactory.hpp:67