Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
PipelineValidator.h
1// ============================================================
2// File: declarative/PipelineValidator.h
3// Pipeline Validator Shell (Framework)
4// Task C1: Validator Shell
5// ============================================================
6
7#pragma once
8
9#include "declarative/PipelineDescription.h"
10#include "declarative/Issue.h"
11#include <vector>
12#include <string>
13#include <algorithm>
14#include <functional>
15#include <iterator>
16
17namespace apra {
18
19// ============================================================
20// PipelineValidator - Validates PipelineDescription
21// ============================================================
23public:
24 // Validation result
25 struct Result {
26 std::vector<ValidationIssue> issues;
27
28 bool hasErrors() const {
29 return std::any_of(issues.begin(), issues.end(),
30 [](const ValidationIssue& i) { return i.level == ValidationIssue::Level::Error; });
31 }
32
33 bool hasWarnings() const {
34 return std::any_of(issues.begin(), issues.end(),
35 [](const ValidationIssue& i) { return i.level == ValidationIssue::Level::Warning; });
36 }
37
38 std::vector<ValidationIssue> errors() const {
39 std::vector<ValidationIssue> result;
40 std::copy_if(issues.begin(), issues.end(), std::back_inserter(result),
41 [](const ValidationIssue& i) { return i.level == ValidationIssue::Level::Error; });
42 return result;
43 }
44
45 std::vector<ValidationIssue> warnings() const {
46 std::vector<ValidationIssue> result;
47 std::copy_if(issues.begin(), issues.end(), std::back_inserter(result),
48 [](const ValidationIssue& i) { return i.level == ValidationIssue::Level::Warning; });
49 return result;
50 }
51
52 // Merge results from multiple phases
53 void merge(const Result& other) {
54 issues.insert(issues.end(), other.issues.begin(), other.issues.end());
55 }
56
57 // Format for display
58 std::string format() const;
59 };
60
61 // Validation options
62 struct Options {
63 bool stopOnFirstError; // Stop validation on first error
64 bool includeInfoMessages; // Include info-level messages
65 bool validateConnections; // Run connection validation
66 bool validateGraph; // Run graph validation
67
70 };
71
72 // Constructor
73 explicit PipelineValidator(Options opts = Options());
74
75 // Main entry point - runs all validation phases
76 Result validate(const PipelineDescription& desc) const;
77
78 // Individual phases (for tooling that wants partial validation)
79 Result validateModules(const PipelineDescription& desc) const;
80 Result validateProperties(const PipelineDescription& desc) const;
81 Result validateConnections(const PipelineDescription& desc) const;
82 Result validateGraph(const PipelineDescription& desc) const;
83
84 // Get/set options
85 const Options& options() const { return options_; }
86 void setOptions(Options opts) { options_ = std::move(opts); }
87
88private:
90};
91
92} // namespace apra
Definition PipelineValidator.h:22
Result validate(const PipelineDescription &desc) const
Definition PipelineValidator.cpp:141
Result validateModules(const PipelineDescription &desc) const
Definition PipelineValidator.cpp:205
void setOptions(Options opts)
Definition PipelineValidator.h:86
Result validateConnections(const PipelineDescription &desc) const
Definition PipelineValidator.cpp:443
Options options_
Definition PipelineValidator.h:89
Result validateProperties(const PipelineDescription &desc) const
Definition PipelineValidator.cpp:261
Result validateGraph(const PipelineDescription &desc) const
Definition PipelineValidator.cpp:727
PipelineValidator(Options opts=Options())
Definition PipelineValidator.cpp:134
const Options & options() const
Definition PipelineValidator.h:85
Definition FrameTypeRegistrations.h:10
Definition Issue.h:18
Definition PipelineDescription.h:90
Definition PipelineValidator.h:62
bool stopOnFirstError
Definition PipelineValidator.h:63
bool validateConnections
Definition PipelineValidator.h:65
bool includeInfoMessages
Definition PipelineValidator.h:64
bool validateGraph
Definition PipelineValidator.h:66
Options()
Definition PipelineValidator.h:68
Definition PipelineValidator.h:25
std::string format() const
Definition PipelineValidator.cpp:102
void merge(const Result &other)
Definition PipelineValidator.h:53
bool hasWarnings() const
Definition PipelineValidator.h:33
std::vector< ValidationIssue > warnings() const
Definition PipelineValidator.h:45
bool hasErrors() const
Definition PipelineValidator.h:28
std::vector< ValidationIssue > issues
Definition PipelineValidator.h:26
std::vector< ValidationIssue > errors() const
Definition PipelineValidator.h:38