41 #ifndef __OPENFLUID_WARESDEV_WARECPPWRITERHELPERS_HPP__
42 #define __OPENFLUID_WARESDEV_WARECPPWRITERHELPERS_HPP__
50 #include <openfluid/ware/TypeDefs.hpp>
56 namespace openfluid {
namespace waresdev {
61 static std::string
getHead(
const std::string CommentChar)
64 CommentChar +
" ======\n" +
65 CommentChar +
" AUTOMATICALLY GENERATED FILE. DO NOT EDIT MANUALLY\n" +
66 CommentChar +
" ======\n\n";
76 static std::string
getCPPHead(
const std::string& WareIncludeStr,
const std::string& WareTypeStr)
78 std::string Head =
getHead(
"//");
81 "#include <"+WareIncludeStr+
">\n\n"
85 +WareTypeStr+
"* Signature = new "+WareTypeStr+
"();\n\n";
107 std::string Str =
"openfluid::core::DateTime(";
109 Str += std::to_string(DT.
getYear())+
",";
110 Str += std::to_string(DT.
getMonth())+
",";
111 Str += std::to_string(DT.
getDay())+
",";
112 Str += std::to_string(DT.
getHour())+
",";
113 Str += std::to_string(DT.
getMinute())+
",";
114 Str += std::to_string(DT.
getSecond())+
")";
124 static std::string
getCPPVectorString(
const std::vector<std::string>& StrVect,
bool AutoQuote =
false)
130 for (
const auto& S : StrVect)
158 return "Signature->"+Member;
166 static std::string
getCPPAssignment(
const std::string& Member,
const std::string& Value,
bool AutoQuote =
false)
168 std::string QuotedVal(Value);
183 static std::string
getCPPMethod(
const std::string& Member,
const std::string& Method,
184 const std::vector<std::string>& Args,
const std::string& Access =
".")
187 bool FirstArg =
true;
189 for (
const auto& A : Args)
203 return getCPPEntry(Member)+Access+Method+
"("+ArgsStr+
");\n";
217 "return new std::string(\""+LinkUID+
"\");\n"
229 const std::string Member,
const std::vector<openfluid::ware::SignatureSpatialDataItem>& Data)
233 for (
const auto& D : Data)
252 return "\nreturn Signature;\n}\n}\n";
265 return "openfluid::core::Value::NONE";
267 return "openfluid::core::Value::DOUBLE";
269 return "openfluid::core::Value::INTEGER";
271 return "openfluid::core::Value::BOOLEAN";
273 return "openfluid::core::Value::VECTOR";
275 return "openfluid::core::Value::MATRIX";
277 return "openfluid::core::Value::MAP";
279 return "openfluid::core::Value::TREE";
281 return "openfluid::core::Value::STRING";
283 return "openfluid::core::Value::NULLL";
295 const std::vector<openfluid::ware::SignatureDataItem>& Data)
299 for (
const auto& D : Data)
341 Data.
Name = Item.value(
"name",
"");
343 if (!Validator(Data.
Name))
349 Data.
SIUnit = Item.value(
"siunit",
"");
370 Json[
"name"] = Item.
Name;
372 Json[
"siunit"] = Item.
SIUnit;
383 std::vector<openfluid::ware::SignatureDataItem>
386 std::vector<openfluid::ware::SignatureDataItem> List;
390 for (
const auto& I : Json)
408 auto JsonReq = openfluid::thirdparty::json::array();
413 Json[
"required"] = JsonReq;
415 auto JsonUs = openfluid::thirdparty::json::array();
420 Json[
"used"] = JsonUs;
435 Json[
"name"] = Item.
Name;
438 Json[
"siunit"] = Item.
SIUnit;
454 auto JsonReq = openfluid::thirdparty::json::array();
459 Json[
"required"] = JsonReq;
461 auto JsonUs = openfluid::thirdparty::json::array();
466 Json[
"used"] = JsonUs;
481 auto JsonReq = openfluid::thirdparty::json::array();
486 Json[
"required"] = JsonReq;
488 auto JsonUs = openfluid::thirdparty::json::array();
489 for (
const auto& V : HandledData.
UsedVars)
493 Json[
"used"] = JsonUs;
540 if (Json.contains(
"used"))
545 if (Json.contains(
"required"))
561 Data.
Name = Item.value(
"name",
"");
562 if (!Validator(Data.
Name))
565 "Missing or invalid spatial data name: "+Data.
Name);
568 Data.
UnitsClass = Item.value(
"unitsclass",
"");
575 Data.
SIUnit = Item.value(
"siunit",
"");
592 static std::vector<openfluid::ware::SignatureSpatialDataItem>
596 std::vector<openfluid::ware::SignatureSpatialDataItem> List;
600 for (
const auto& I : Json)
614 static std::vector<openfluid::ware::SignatureSpatialDataItem>
629 if (Json.contains(
"used"))
634 if (Json.contains(
"required"))
648 if (Json.contains(
"used"))
653 if (Json.contains(
"required"))
667 if (Json.contains(
"used"))
672 if (Json.contains(
"required"))
#define WARELINKUID_PROC_NAME
Definition: PluggableWare.hpp:75
#define WARESIGNATURE_PROC_NAME
Definition: PluggableWare.hpp:62
Definition: FrameworkException.hpp:51
Class for management of date and time information.
Definition: DateTime.hpp:88
int getYear() const
Definition: DateTime.hpp:211
int getSecond() const
Definition: DateTime.hpp:256
int getHour() const
Definition: DateTime.hpp:238
int getDay() const
Definition: DateTime.hpp:229
int getMonth() const
Definition: DateTime.hpp:220
int getMinute() const
Definition: DateTime.hpp:247
static bool getValueTypeFromString(const std::string &ValueTypeString, Value::Type &ValueType)
Type
Definition: Value.hpp:66
@ VECTOR
Definition: Value.hpp:66
@ NONE
Definition: Value.hpp:66
@ TREE
Definition: Value.hpp:66
@ STRING
Definition: Value.hpp:66
@ MAP
Definition: Value.hpp:66
@ MATRIX
Definition: Value.hpp:66
@ DOUBLE
Definition: Value.hpp:66
@ NULLL
Definition: Value.hpp:66
@ BOOLEAN
Definition: Value.hpp:66
@ INTEGER
Definition: Value.hpp:66
static std::string getStringFromValueType(const Value::Type ValueType)
Definition: WareSignature.hpp:338
SignatureHandledData HandledData
Definition: WareSignature.hpp:343
Definition: WareSignature.hpp:235
openfluid::core::Value::Type DataType
Definition: WareSignature.hpp:241
std::string SIUnit
Definition: WareSignature.hpp:240
std::string Name
Definition: WareSignature.hpp:238
std::string Description
Definition: WareSignature.hpp:239
Definition: WareSignature.hpp:294
std::vector< SignatureDataItem > UsedParams
Definition: WareSignature.hpp:297
std::vector< SignatureSpatialDataItem > UsedVars
Definition: WareSignature.hpp:303
std::vector< std::string > RequiredExtraFiles
Definition: WareSignature.hpp:309
std::vector< std::string > UsedExtraFiles
Definition: WareSignature.hpp:311
std::vector< SignatureSpatialDataItem > RequiredAttributes
Definition: WareSignature.hpp:305
std::vector< SignatureSpatialDataItem > RequiredVars
Definition: WareSignature.hpp:301
std::vector< SignatureSpatialDataItem > UsedAttributes
Definition: WareSignature.hpp:307
std::vector< SignatureDataItem > RequiredParams
Definition: WareSignature.hpp:299
Definition: WareSignature.hpp:263
openfluid::core::UnitsClass_t UnitsClass
Definition: WareSignature.hpp:266
nlohmann::ordered_json json
Definition: JSON.hpp:52
bool OPENFLUID_API isNonEmpty(const std::string &Str)
Definition: DataItemUtils.hpp:75
Definition: ApplicationException.hpp:47
Definition: WareCppWriterHelpers.hpp:59
static std::string getCPPTail()
Definition: WareCppWriterHelpers.hpp:250
static std::string getHead(const std::string CommentChar)
Definition: WareCppWriterHelpers.hpp:61
static std::string getCPPEntry(const std::string &Member)
Definition: WareCppWriterHelpers.hpp:156
static std::string getCPPVectorString(const std::vector< std::string > &StrVect, bool AutoQuote=false)
Definition: WareCppWriterHelpers.hpp:124
static std::string getCPPDateTimeString(const openfluid::core::DateTime &DT)
Definition: WareCppWriterHelpers.hpp:105
static std::string getQuotedString(const std::string &Str)
Definition: WareCppWriterHelpers.hpp:95
static std::string getCPPHead(const std::string &WareIncludeStr, const std::string &WareTypeStr)
Definition: WareCppWriterHelpers.hpp:76
static std::string getCPPLinkUIDProc(const std::string LinkUID)
Definition: WareCppWriterHelpers.hpp:211
static std::string getCPPAssignment(const std::string &Member, const std::string &Value, bool AutoQuote=false)
Definition: WareCppWriterHelpers.hpp:166
static std::string getCPPSpatialDataString(const std::string Member, const std::vector< openfluid::ware::SignatureSpatialDataItem > &Data)
Definition: WareCppWriterHelpers.hpp:228
static std::string getCPPDataString(const std::string Member, const std::vector< openfluid::ware::SignatureDataItem > &Data)
Definition: WareCppWriterHelpers.hpp:294
static std::string toWareCPPParams(const openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:316
static std::string getCPPValueType(const openfluid::core::Value::Type ValueType)
Definition: WareCppWriterHelpers.hpp:260
static std::string getCPPMethod(const std::string &Member, const std::string &Method, const std::vector< std::string > &Args, const std::string &Access=".")
Definition: WareCppWriterHelpers.hpp:183
Definition: WareCppWriterHelpers.hpp:334
static openfluid::thirdparty::json serializeAttributesToJSON(const openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:450
static void unserializeReadVariablesFromJSON(const openfluid::thirdparty::json &Json, openfluid::ware::DataWareSignature &Sign)
Definition: WareCppWriterHelpers.hpp:645
static openfluid::thirdparty::json serializeDataItemToJSON(const openfluid::ware::SignatureDataItem &Item)
Definition: WareCppWriterHelpers.hpp:366
static openfluid::thirdparty::json serializeSpatialDataItemToJSON(const openfluid::ware::SignatureSpatialDataItem &Item)
Definition: WareCppWriterHelpers.hpp:430
static openfluid::thirdparty::json serializeDataToJSON(const openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:519
static openfluid::ware::SignatureDataItem readDataItemFromJSON(const openfluid::thirdparty::json &Item, std::function< bool(const std::string &)> Validator=openfluid::ware::isNonEmpty)
Definition: WareCppWriterHelpers.hpp:336
static openfluid::thirdparty::json serializeExtrafilesToJSON(const openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:504
static openfluid::thirdparty::json serializeVariablesToJSON(const openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:477
static void unserializeParametersFromJSON(const openfluid::thirdparty::json &Json, openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:537
static void unserializeExtrafilesFromJSON(const openfluid::thirdparty::json &Json, openfluid::ware::DataWareSignature &Sign)
Definition: WareCppWriterHelpers.hpp:664
static openfluid::ware::SignatureSpatialDataItem readSpatialDataItemFromJSON(const openfluid::thirdparty::json &Item, std::function< bool(const std::string &)> Validator=openfluid::ware::isNonEmpty)
Definition: WareCppWriterHelpers.hpp:556
static void unserializeReadAttributesFromJSON(const openfluid::thirdparty::json &Json, openfluid::ware::DataWareSignature &Sign)
Definition: WareCppWriterHelpers.hpp:625
static std::vector< openfluid::ware::SignatureSpatialDataItem > readSpatialDataListFromJSON(const openfluid::thirdparty::json &Json, std::function< bool(const std::string &)> Validator=openfluid::ware::isNonEmpty)
Definition: WareCppWriterHelpers.hpp:593
static openfluid::thirdparty::json serializeParametersToJSON(const openfluid::ware::SignatureHandledData &HandledData)
Definition: WareCppWriterHelpers.hpp:404
static std::vector< openfluid::ware::SignatureDataItem > readDataListFromJSON(const openfluid::thirdparty::json &Json)
Definition: WareCppWriterHelpers.hpp:384
static std::vector< openfluid::ware::SignatureSpatialDataItem > readVariableListFromJSON(const openfluid::thirdparty::json &Json)
Definition: WareCppWriterHelpers.hpp:615