Validators.h File
Built-in contract implementations and default registry. More...
Included Headers
#include <memory>
#include <string>
#include <utility>
#include "builder/Node.h"
#include "builder/NodeGroup.h"
#include "contracts/Contract.h"
#include "contracts/ContractRegistry.h"
#include "contracts/ValidationReport.h"
Namespaces Index
| namespace | simaai |
| namespace | neat |
| namespace | validators |
Description
Built-in contract implementations and default registry.
Provides the small set of header-only Contract factories that ship with the framework — non-empty pipeline, no-null nodes, sink-last-for-run, RTSP source presence — plus DefaultRegistry(), the recommended starting point for most callers. Library code can compose its own registry by cloning DefaultRegistry() and adding/removing contracts.
- See Also
Contract
- See Also
ContractRegistry
File Listing
The file content with the documentation metadata removed is:
24#include "contracts/Contract.h"
25#include "contracts/ContractRegistry.h"
26#include "contracts/ValidationReport.h"
28namespace simaai::neat {
29namespace validators {
43inline std::shared_ptr<Contract> NonEmptyPipeline() {
53 void validate(const NodeGroup& nodes, const ValidationContext& ctx,
54 ValidationReport& r) const override {
57 r.add_error(id(), "EMPTY_PIPELINE", "No nodes were added to the pipeline.");
72inline std::shared_ptr<Contract> NoNullNodes() {
82 void validate(const NodeGroup& nodes, const ValidationContext& ctx,
83 ValidationReport& r) const override {
88 r.add_error(id(), "NULL_NODE", "Null node pointer in NodeGroup.", i);
108inline std::shared_ptr<Contract> SinkLastForRun(std::string sink_kind = "Output") {
111 explicit C(std::string kind) : sink_kind_(std::move(kind)) {}
119 void validate(const NodeGroup& nodes, const ValidationContext& ctx,
120 ValidationReport& r) const override {
121 if (ctx.mode != ValidationContext::Mode::Run)
133 r.add_error(id(), "SINK_NOT_LAST", "Last node must be " + sink_kind_ + " for run().",
141 r.add_error(id(), "MULTIPLE_SINKS",
165inline std::shared_ptr<Contract> RtspRequiresSource(std::string source_kind = "StillImageInput") {
168 explicit C(std::string k) : src_kind_(std::move(k)) {}
176 void validate(const NodeGroup& nodes, const ValidationContext& ctx,
177 ValidationReport& r) const override {
178 if (ctx.mode != ValidationContext::Mode::Rtsp)
192 r.add_error(id(), "RTSP_SOURCE_MISSING",
217inline ContractRegistry DefaultRegistry() {
218 ContractRegistry reg;
219 reg.add(NonEmptyPipeline());
220 reg.add(NoNullNodes());
221 reg.add(SinkLastForRun());
222 reg.add(RtspRequiresSource());
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.