Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
Issue.h
1// ============================================================
2// File: declarative/Issue.h
3// Common Issue struct for validation and build phases
4// ============================================================
5
6#pragma once
7
8#include <string>
9#include <vector>
10#include <algorithm>
11
12namespace apra {
13
14// ============================================================
15// Issue - Represents a validation/build problem or info message
16// Used by both PipelineValidator and ModuleFactory
17// ============================================================
18struct Issue {
19 enum class Level {
20 Error, // Fatal - stops validation/build
21 Warning, // Non-fatal - continues with warning
22 Info // Informational - for logging
23 };
24
26 std::string code; // e.g., "E001", "W002", "I001"
27 std::string location; // e.g., "modules.decoder.props.device_id"
28 std::string message; // Human-readable description
29 std::string suggestion; // Optional fix suggestion with TOML snippet
30
31 // Factory methods for common issues
32 static Issue error(const std::string& code,
33 const std::string& location,
34 const std::string& message,
35 const std::string& suggestion = "") {
37 }
38
39 static Issue warning(const std::string& code,
40 const std::string& location,
41 const std::string& message,
42 const std::string& suggestion = "") {
44 }
45
46 static Issue info(const std::string& code,
47 const std::string& location,
48 const std::string& message) {
49 return {Level::Info, code, location, message, ""};
50 }
51
52 // ============================================================
53 // Error codes - organized by phase
54 // ============================================================
55
56 // Module validation (E1xx)
57 static constexpr const char* UNKNOWN_MODULE = "E100";
58 static constexpr const char* MODULE_VERSION_MISMATCH = "W100";
59 static constexpr const char* MODULE_CREATION_FAILED = "E101";
60
61 // Property validation (E2xx)
62 static constexpr const char* UNKNOWN_PROPERTY = "E200";
63 static constexpr const char* PROPERTY_TYPE_MISMATCH = "E201";
64 static constexpr const char* PROPERTY_OUT_OF_RANGE = "E202";
65 static constexpr const char* PROPERTY_INVALID_ENUM = "E203";
66 static constexpr const char* PROPERTY_REGEX_MISMATCH = "E204";
67 static constexpr const char* MISSING_REQUIRED_PROPERTY = "E205";
68 static constexpr const char* PROP_TYPE_CONVERSION = "W201";
69
70 // Connection validation (E3xx)
71 static constexpr const char* UNKNOWN_SOURCE_MODULE = "E300";
72 static constexpr const char* UNKNOWN_DEST_MODULE = "E301";
73 static constexpr const char* UNKNOWN_SOURCE_PIN = "E302";
74 static constexpr const char* UNKNOWN_DEST_PIN = "E303";
75 static constexpr const char* FRAME_TYPE_INCOMPATIBLE = "E304";
76 static constexpr const char* DUPLICATE_INPUT_CONNECTION = "E305";
77 static constexpr const char* CONNECTION_FAILED = "E306";
78 static constexpr const char* MISSING_REQUIRED_INPUT = "E307";
79 static constexpr const char* REQUIRED_PIN_UNCONNECTED = "W300";
80
81 // Graph validation (E4xx)
82 static constexpr const char* NO_SOURCE_MODULE = "E400";
83 static constexpr const char* GRAPH_HAS_CYCLE = "E401";
84 static constexpr const char* EMPTY_PIPELINE = "E402";
85 static constexpr const char* ORPHAN_MODULE = "W400";
86
87 // Build/Runtime (E5xx)
88 static constexpr const char* INIT_FAILED = "E500";
89 static constexpr const char* RUN_FAILED = "E501";
90
91 // Info messages (I0xx)
92 static constexpr const char* INFO_VALIDATING = "I000";
93 static constexpr const char* INFO_MODULE_FOUND = "I010";
94 static constexpr const char* INFO_MODULE_CREATED = "I011";
95 static constexpr const char* INFO_CONNECTION_ESTABLISHED = "I020";
96
97 // Aliases for backwards compatibility
98 static constexpr const char* MODULE_CREATED = "I011";
99 static constexpr const char* CONNECTION_ESTABLISHED = "I020";
100 static constexpr const char* MISSING_REQUIRED_PROP = "E205"; // Alias for MISSING_REQUIRED_PROPERTY
101 static constexpr const char* UNKNOWN_MODULE_TYPE = "E100"; // Alias for UNKNOWN_MODULE
102};
103
104// Type alias for backwards compatibility
107
108} // namespace apra
Definition FrameTypeRegistrations.h:10
Definition Issue.h:18
static constexpr const char * UNKNOWN_SOURCE_MODULE
Definition Issue.h:71
static constexpr const char * MODULE_VERSION_MISMATCH
Definition Issue.h:58
static constexpr const char * PROP_TYPE_CONVERSION
Definition Issue.h:68
static constexpr const char * EMPTY_PIPELINE
Definition Issue.h:84
static constexpr const char * CONNECTION_FAILED
Definition Issue.h:77
static constexpr const char * GRAPH_HAS_CYCLE
Definition Issue.h:83
static constexpr const char * PROPERTY_OUT_OF_RANGE
Definition Issue.h:64
static constexpr const char * NO_SOURCE_MODULE
Definition Issue.h:82
static constexpr const char * PROPERTY_INVALID_ENUM
Definition Issue.h:65
static constexpr const char * FRAME_TYPE_INCOMPATIBLE
Definition Issue.h:75
static constexpr const char * UNKNOWN_SOURCE_PIN
Definition Issue.h:73
static constexpr const char * CONNECTION_ESTABLISHED
Definition Issue.h:99
static constexpr const char * PROPERTY_REGEX_MISMATCH
Definition Issue.h:66
static constexpr const char * INFO_CONNECTION_ESTABLISHED
Definition Issue.h:95
static constexpr const char * REQUIRED_PIN_UNCONNECTED
Definition Issue.h:79
static constexpr const char * INFO_MODULE_CREATED
Definition Issue.h:94
std::string suggestion
Definition Issue.h:29
static constexpr const char * UNKNOWN_PROPERTY
Definition Issue.h:62
static Issue warning(const std::string &code, const std::string &location, const std::string &message, const std::string &suggestion="")
Definition Issue.h:39
static constexpr const char * INIT_FAILED
Definition Issue.h:88
Level level
Definition Issue.h:25
static constexpr const char * MODULE_CREATED
Definition Issue.h:98
static Issue info(const std::string &code, const std::string &location, const std::string &message)
Definition Issue.h:46
static constexpr const char * UNKNOWN_DEST_MODULE
Definition Issue.h:72
static constexpr const char * MISSING_REQUIRED_PROPERTY
Definition Issue.h:67
static constexpr const char * UNKNOWN_MODULE
Definition Issue.h:57
static constexpr const char * DUPLICATE_INPUT_CONNECTION
Definition Issue.h:76
std::string location
Definition Issue.h:27
static constexpr const char * RUN_FAILED
Definition Issue.h:89
static constexpr const char * MISSING_REQUIRED_INPUT
Definition Issue.h:78
static constexpr const char * ORPHAN_MODULE
Definition Issue.h:85
static constexpr const char * INFO_MODULE_FOUND
Definition Issue.h:93
Level
Definition Issue.h:19
static constexpr const char * MISSING_REQUIRED_PROP
Definition Issue.h:100
static constexpr const char * UNKNOWN_DEST_PIN
Definition Issue.h:74
static constexpr const char * INFO_VALIDATING
Definition Issue.h:92
static Issue error(const std::string &code, const std::string &location, const std::string &message, const std::string &suggestion="")
Definition Issue.h:32
static constexpr const char * MODULE_CREATION_FAILED
Definition Issue.h:59
std::string message
Definition Issue.h:28
static constexpr const char * PROPERTY_TYPE_MISMATCH
Definition Issue.h:63
static constexpr const char * UNKNOWN_MODULE_TYPE
Definition Issue.h:101
std::string code
Definition Issue.h:26