@@ -41,6 +41,7 @@ struct TreeNodeManifest
4141};
4242
4343using PortsRemapping = std::unordered_map<std::string, std::string>;
44+ using NonPortAttributes = std::unordered_map<std::string, std::string>;
4445
4546enum class PreCond
4647{
@@ -52,6 +53,10 @@ enum class PreCond
5253 COUNT_
5354};
5455
56+ static const std::array<std::string, 4 > PreCondNames = { //
57+ " _failureIf" , " _successIf" , " _skipIf" , " _while"
58+ };
59+
5560enum class PostCond
5661{
5762 // order of the enums also tell us the execution order
@@ -62,11 +67,15 @@ enum class PostCond
6267 COUNT_
6368};
6469
70+ static const std::array<std::string, 4 > PostCondNames = { //
71+ " _onHalted" , " _onFailure" , " _onSuccess" , " _post"
72+ };
73+
6574template <>
66- [[nodiscard]] std::string toStr<BT::PostCond>(const BT::PostCond& status );
75+ [[nodiscard]] std::string toStr<BT::PostCond>(const BT::PostCond& cond );
6776
6877template <>
69- [[nodiscard]] std::string toStr<BT::PreCond>(const BT::PreCond& status );
78+ [[nodiscard]] std::string toStr<BT::PreCond>(const BT::PreCond& cond );
7079
7180using ScriptingEnumsRegistry = std::unordered_map<std::string, int >;
7281
@@ -84,6 +93,10 @@ struct NodeConfig
8493 // output ports
8594 PortsRemapping output_ports;
8695
96+ // Any other attributes found in the xml that are not parsed as ports
97+ // or built-in identifier (e.g. anything with a leading '_')
98+ NonPortAttributes other_attributes;
99+
87100 const TreeNodeManifest* manifest = nullptr ;
88101
89102 // Numberic unique identifier
0 commit comments