8#include "Arp/System/Core/Endianness.hpp"
15namespace Arp {
namespace System {
namespace Commons
21 static const char* ArpBinaryDirVariableName;
24 static void Setup(
void);
25 static void SetupSettings(
int core);
26 static void SetupSecuritySettings(
const String& securitySettingsPath);
27 static void SetupTrustStore(
const std::vector<String>& trustStorePaths,
const String& trustStoreEditPath);
28 static void SetupIdentityStore(
const std::vector<String>& identityStorePaths,
const String& identityStoreEditPath);
29 static void Dispose(
void);
32 static int64 GetTickCount(
void);
33 static Endianness GetEndianness(
void);
34 static String GetVariable(
const char* variableName);
36 static bool GetVariableValue(
const char* variableName, T& result);
37 static bool GetVariableValue(
const char* variableName,
String& value);
39 static bool GetDefaultVariableValue(
const char* variableName, T& result);
40 static bool GetDefaultVariableValue(
const char* variableName,
String& value);
42 static bool AddVariable(
const char* variableName,
const T& value);
43 static bool AddVariable(
const char* variableName,
const String& value);
45 static bool AddOverriddenVariable(
const char* variableName,
const T& value);
46 static bool AddOverriddenVariable(
const char* variableName,
const String& value);
47 static bool SetVariable(
const char* variableName,
const String& value);
48 static void LogVariables(
void);
49 static void RegisterEnvironmentVariables(
void);
52 static bool RegisterEnvironmentVariable(
const String& name,
const char* value);
61 using InstancePtr = std::unique_ptr<Instance>;
62 using VariableNames = std::set<String>;
63 using EnvironmentVariables = std::map<String, String>;
69 static Instance& CreateInstance(
void);
70 static bool IsCreated(
void);
71 static void DisposeInstance(
void);
75 bool AddDefaultVariable(
const char* variableName,
const String& value);
76 bool AddOverriddenVariable(
const char* variableName,
const String& value);
77 bool SetDefaultVariable(
const char* variableName,
const String& value);
78 bool SetOverriddenVariable(
const char* variableName,
const String& value);
79 bool GetCurrentVariableValue(
const char* variableName,
const char*& pResult)
const;
80 bool GetDefaultVariableValue(
const char* variableName,
const char*& pResult)
const;
81 bool GetOverriddenVariableValue(
const char* variableName,
const char*& pResult)
const;
84 void GetVariableNames(VariableNames& result);
85 void LogVariables(
void);
88 static bool GetVariableValueFrom(
const EnvironmentVariables& items,
const char* variableName,
const char*& pResult);
91 EnvironmentVariables environmentVariables;
92 EnvironmentVariables overriddenVariables;
95 static InstancePtr instancePtr;
103inline bool Environment::GetVariableValue<String>(
const char* variableName,
String& result)
105 return GetVariableValue(variableName, result);
109inline bool Environment::GetVariableValue(
const char* variableName, T& result)
112 if (!GetVariableValue(variableName, value))
117 std::istringstream iss(value.
CStr());
118 iss >> std::boolalpha >> result;
123inline bool Environment::GetDefaultVariableValue<String>(
const char* variableName, String& result)
125 return GetDefaultVariableValue(variableName, result);
129inline bool Environment::GetDefaultVariableValue(
const char* variableName, T& result)
132 if (!GetDefaultVariableValue(variableName, value))
137 std::istringstream iss(value.CStr());
138 iss >> std::boolalpha >> result;
143inline bool Environment::AddVariable(
const char* variableName,
const T& value)
145 std::stringstream ss;
146 ss << std::boolalpha << value;
147 return Environment::AddVariable(variableName, String(ss.str()));
151inline bool Environment::AddOverriddenVariable(
const char* variableName,
const T& value)
153 std::stringstream ss;
154 ss << std::boolalpha << value;
155 return Environment::AddOverriddenVariable(variableName, String(ss.str()));
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
const CharType * CStr(void) const
Gets the character data of this string.
Definition: String.ipp:1395
Definition: Environment.hpp:19
std::int64_t int64
The Arp integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:39
Root namespace for the PLCnext API