#include "cpp-common/bt2/graph.hpp"
#include "cpp-common/bt2c/c-string-view.hpp"
+#include "cpp-common/bt2c/span.hpp"
+#include "cpp-common/bt2s/make-unique.hpp"
#include "utils.hpp"
* Creates a simple condition trigger, calling `func`.
*/
template <typename FuncT>
-CondTrigger *makeSimpleTrigger(FuncT&& func, const CondTrigger::Type type,
- const std::string& condId, const bt2c::CStringView nameSuffix = {})
+CondTrigger::UP makeSimpleTrigger(FuncT&& func, const CondTrigger::Type type,
+ const std::string& condId,
+ const bt2c::CStringView nameSuffix = {})
{
- return new SimpleCondTrigger {std::forward<FuncT>(func), type, condId, nameSuffix};
+ return bt2s::make_unique<SimpleCondTrigger>(std::forward<FuncT>(func), type, condId,
+ nameSuffix);
}
using OnCompInitFunc = std::function<void(bt2::SelfComponent)>;
* Creates a condition trigger, calling `func` in a component
* initialization context.
*/
-CondTrigger *makeRunInCompInitTrigger(OnCompInitFunc func, const CondTrigger::Type type,
- const std::string& condId,
- const bt2c::CStringView nameSuffix = {})
+CondTrigger::UP makeRunInCompInitTrigger(OnCompInitFunc func, const CondTrigger::Type type,
+ const std::string& condId,
+ const bt2c::CStringView nameSuffix = {})
{
- return new RunInCondTrigger<RunInDelegator> {RunInDelegator::makeOnCompInit(std::move(func)),
- type, condId, nameSuffix};
+ return bt2s::make_unique<RunInCondTrigger<RunInDelegator>>(
+ RunInDelegator::makeOnCompInit(std::move(func)), type, condId, nameSuffix);
}
bt2::IntegerFieldClass::Shared createUIntFc(const bt2::SelfComponent self)
return self.createTraceClass()->createUnsignedIntegerFieldClass();
}
-/* Our condition triggers */
-CondTrigger * const triggers[] = {
- makeSimpleTrigger(
+} /* namespace */
+
+int main(const int argc, const char ** const argv)
+{
+ CondTriggers triggers;
+
+ triggers.emplace_back(makeSimpleTrigger(
[] {
bt2::Graph::create(292);
},
- CondTrigger::Type::PRE, "graph-create:valid-mip-version"),
+ CondTrigger::Type::PRE, "graph-create:valid-mip-version"));
- makeRunInCompInitTrigger(
+ triggers.emplace_back(makeRunInCompInitTrigger(
[](const bt2::SelfComponent self) {
createUIntFc(self)->fieldValueRange(0);
},
- CondTrigger::Type::PRE, "field-class-integer-set-field-value-range:valid-n", "0"),
+ CondTrigger::Type::PRE, "field-class-integer-set-field-value-range:valid-n", "0"));
- makeRunInCompInitTrigger(
+ triggers.emplace_back(makeRunInCompInitTrigger(
[](const bt2::SelfComponent self) {
createUIntFc(self)->fieldValueRange(65);
},
- CondTrigger::Type::PRE, "field-class-integer-set-field-value-range:valid-n", "gt-64"),
+ CondTrigger::Type::PRE, "field-class-integer-set-field-value-range:valid-n", "gt-64"));
- makeSimpleTrigger(
+ triggers.emplace_back(makeSimpleTrigger(
[] {
bt_field_class_integer_set_field_value_range(nullptr, 23);
},
- CondTrigger::Type::PRE, "field-class-integer-set-field-value-range:not-null:field-class"),
-};
-
-} /* namespace */
+ CondTrigger::Type::PRE, "field-class-integer-set-field-value-range:not-null:field-class"));
-int main(const int argc, const char ** const argv)
-{
- condMain(argc, argv, triggers);
+ condMain(bt2c::makeSpan(argv, argc), triggers);
}