8 #include "Arp/System/Core/AppDomainSingleton.hxx" 9 #include "Arp/System/Core/Endianness.hpp" 18 namespace Arp {
namespace System {
namespace Commons
24 static void Setup(
void);
25 static void SetupSettings(
int core);
26 static void SetupTrustStore(
const std::vector<String>& trustStorePaths,
const String& trustStoreEditPath);
27 static void SetupIdentityStore(
const std::vector<String>& identityStorePaths,
const String& identityStoreEditPath);
28 static void Dispose(
void);
31 static int64 GetTickCount(
void);
33 static String GetVariable(
const char* variableName);
35 static bool GetVariableValue(
const char* variableName, T& result);
36 static bool GetVariableValue(
const char* variableName,
String& value);
38 static bool GetDefaultVariableValue(
const char* variableName, T& result);
39 static bool GetDefaultVariableValue(
const char* variableName,
String& value);
41 static bool AddVariable(
const char* variableName,
const T& value);
42 static bool AddVariable(
const char* variableName,
const String& value);
44 static bool AddOverriddenVariable(
const char* variableName,
const T& value);
45 static bool AddOverriddenVariable(
const char* variableName,
const String& value);
46 static bool SetVariable(
const char* variableName,
const String& value);
49 static void RegisterEnvironmentVariables(
void);
50 static bool RegisterEnvironmentVariable(
const String& name,
const char* value);
59 using VariableNames = std::set<String>;
60 using EnvironmentVariables = std::map<String, String>;
64 ~Data(
void) =
default;
67 bool AddDefaultVariable(
const char* variableName,
const String& value);
68 bool AddOverriddenVariable(
const char* variableName,
const String& value);
69 bool SetDefaultVariable(
const char* variableName,
const String& value);
70 bool SetOverriddenVariable(
const char* variableName,
const String& value);
71 bool GetCurrentVariableValue(
const char* variableName,
const char*& pResult)
const;
72 bool GetDefaultVariableValue(
const char* variableName,
const char*& pResult)
const;
73 bool GetOverriddenVariableValue(
const char* variableName,
const char*& pResult)
const;
76 void GetVariableNames(VariableNames& result);
79 static bool GetVariableValueFrom(
const EnvironmentVariables& items,
const char* variableName,
const char*& pResult);
82 EnvironmentVariables environmentVariables;
83 EnvironmentVariables overriddenVariables;
89 inline int64 Environment::GetTickCount()
91 return duration_cast<milliseconds>(steady_clock::now().time_since_epoch()).count();
94 inline Endianness Environment::GetEndianness(
void)
96 return Endianness::Current;
100 inline bool Environment::GetVariableValue(
const char* variableName, T& result)
103 if (!GetVariableValue(variableName, value))
108 std::istringstream iss(value.CStr());
109 iss >> boolalpha >> result;
113 inline String Environment::GetVariable(
const char* variableName)
116 if (GetVariableValue(variableName, result))
121 return String::Empty;
125 inline bool Environment::GetDefaultVariableValue(
const char* variableName, T& result)
128 if (!GetDefaultVariableValue(variableName, value))
133 std::istringstream iss(value.CStr());
134 iss >> boolalpha >> result;
139 inline bool Environment::AddVariable(
const char* variableName,
const T& value)
141 std::stringstream ss;
142 ss << boolalpha << value;
143 return Environment::AddVariable(variableName,
String(ss.str()));
146 inline bool Environment::AddVariable(
const char* variableName,
const String& value)
148 return Data::GetInstance().AddDefaultVariable(variableName, value);
152 inline bool Environment::AddOverriddenVariable(
const char* variableName,
const T& value)
154 std::stringstream ss;
155 ss << boolalpha << value;
156 return Environment::AddOverriddenVariable(variableName,
String(ss.str()));
159 inline bool Environment::AddOverriddenVariable(
const char* variableName,
const String& value)
161 return Data::GetInstance().AddOverriddenVariable(variableName, value);
166 inline bool Environment::Data::GetCurrentVariableValue(
const char* variableName,
const char*& pResult)
const 169 if (GetOverriddenVariableValue(variableName, pResult))
174 return GetDefaultVariableValue(variableName, pResult);
177 inline bool Environment::Data::GetDefaultVariableValue(
const char* variableName,
const char*& pResult)
const 179 return GetVariableValueFrom(this->environmentVariables, variableName, pResult);
182 inline bool Environment::Data::GetOverriddenVariableValue(
const char* variableName,
const char*& pResult)
const 184 return GetVariableValueFrom(this->overriddenVariables, variableName, pResult);
Arp::BasicString< char8 > String
The Arp String class.
Definition: TypeSystem.h:27
Root namespace for the PLCnext API
This class implements the singleton pattern for singletons with process wide scope.
Definition: AppDomainSingleton.hxx:24
Endianness
This enum defines the endinannes of the target architecture.
Definition: Endianness.hpp:12
System components used by the System, Device, Plc or Io domains.
Definition: Environment.hpp:21
std::int64_t int64
The Arp integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:41