Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
Split.h
1#pragma once
2
3#include "Module.h"
4#include "declarative/PropertyMacros.h"
5
6class SplitProps : public ModuleProps
7{
8public:
10 {
11 number = 2;
12 }
13
14 uint32_t number;
15
16 // ============================================================
17 // Property Binding for Declarative Pipeline
18 // ============================================================
19 template<typename PropsT>
20 static void applyProperties(
21 PropsT& props,
22 const std::map<std::string, apra::ScalarPropertyValue>& values,
23 std::vector<std::string>& missingRequired
24 ) {
25 apra::applyProp(props.number, "number", values, false, missingRequired);
26 }
27
28 apra::ScalarPropertyValue getProperty(const std::string& propName) const {
29 if (propName == "number") return static_cast<int64_t>(number);
30 throw std::runtime_error("Unknown property: " + propName);
31 }
32
33 bool setProperty(const std::string& propName, const apra::ScalarPropertyValue& value) {
34 if (propName == "number") {
35 return apra::applyFromVariant(number, value);
36 }
37 return false;
38 }
39
40 std::vector<std::string> dynamicPropertyNames() const {
41 return {}; // number is not dynamically changeable at runtime
42 }
43};
44
45class Split : public Module {
46public:
47
48 Split(SplitProps _props=SplitProps());
49 virtual ~Split() {}
50
51 virtual bool init();
52 virtual bool term();
53
54protected:
55 bool process(frame_container& frames);
56 bool validateInputPins();
57 bool validateOutputPins();
58 void addInputPin(framemetadata_sp& metadata, string& pinId);
59
60private:
61 uint32_t mNumber;
62 uint32_t mCurrentIndex;
63 uint32_t mFIndex2;
64 std::vector<std::string> mPinIds;
65};
66
67
68
Definition Module.h:33
Definition Module.h:151
Definition Split.h:7
SplitProps()
Definition Split.h:9
static void applyProperties(PropsT &props, const std::map< std::string, apra::ScalarPropertyValue > &values, std::vector< std::string > &missingRequired)
Definition Split.h:20
uint32_t number
Definition Split.h:14
apra::ScalarPropertyValue getProperty(const std::string &propName) const
Definition Split.h:28
bool setProperty(const std::string &propName, const apra::ScalarPropertyValue &value)
Definition Split.h:33
std::vector< std::string > dynamicPropertyNames() const
Definition Split.h:40
Definition Split.h:45
uint32_t mNumber
Definition Split.h:61
virtual bool term()
Definition Split.cpp:46
std::vector< std::string > mPinIds
Definition Split.h:64
bool validateOutputPins()
Definition Split.cpp:25
virtual bool init()
Definition Split.cpp:36
uint32_t mCurrentIndex
Definition Split.h:62
Split(SplitProps _props=SplitProps())
Definition Split.cpp:9
virtual ~Split()
Definition Split.h:49
void addInputPin(framemetadata_sp &metadata, string &pinId)
Definition Split.cpp:51
bool validateInputPins()
Definition Split.cpp:14
uint32_t mFIndex2
Definition Split.h:63
bool process(frame_container &frames)
Definition Split.cpp:60
void applyProp(T &member, const char *propName, const std::map< std::string, ScalarPropertyValue > &values, bool isRequired, std::vector< std::string > &missingRequired)
Definition PropertyMacros.h:36
bool applyFromVariant(T &member, const ScalarPropertyValue &value)
Definition PropertyMacros.h:108
std::variant< int64_t, double, bool, std::string > ScalarPropertyValue
Definition ModuleRegistry.h:30