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