Hedgehog  3.1.0
A library to generate hybrid pipeline workflow systems
Loading...
Searching...
No Matches
concepts.h
Go to the documentation of this file.
1
2// NIST-developed software is provided by NIST as a public service. You may use, copy and distribute copies of the
3// software in any medium, provided that you keep intact this entire notice. You may improve, modify and create
4// derivative works of the software or any portion of the software, and you may copy and distribute such modifications
5// or works. Modified works should carry a notice stating that you changed the software and should note the date and
6// nature of any such change. Please explicitly acknowledge the National Institute of Standards and Technology as the
7// source of the software. NIST-developed software is expressly provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND,
8// EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
9// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST NEITHER REPRESENTS NOR
10// WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE
11// CORRECTED. NIST DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR THE RESULTS
12// THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, RELIABILITY, OR USEFULNESS OF THE SOFTWARE. You
13// are solely responsible for determining the appropriateness of using and distributing the software and you assume
14// all risks associated with its use, including but not limited to the risks and costs of program errors, compliance
15// with applicable laws, damage to or loss of data, programs or equipment, and the unavailability or interruption of
16// operation. This software is not intended to be used in any situation where a failure could cause risk of injury or
17// damage to property. The software developed by NIST employees is not subject to copyright protection within the
18// United States.
19
20#ifndef HEDGEHOG_CX_CONCEPTS_H_
21#define HEDGEHOG_CX_CONCEPTS_H_
22
23#ifdef HH_ENABLE_HH_CX
24
25#include "meta_functions.h"
26
28namespace hh_cx {
30namespace behavior {
31
32#ifndef DOXYGEN_SHOULD_SKIP_THIS
34class AbstractNode;
35#endif //DOXYGEN_SHOULD_SKIP_THIS
36
37}
39namespace tool {
40
43template<class HedgehogNode>
45
49template<typename StaticHedgehogNode>
50concept HedgehogStaticNode = requires{
51 std::is_base_of_v<hh_cx::behavior::AbstractNode, StaticHedgehogNode>;
52 typename StaticHedgehogNode::ro_type_t;
53 typename StaticHedgehogNode::dynamic_node_t;
54 typename StaticHedgehogNode::inputs_t;
55 typename StaticHedgehogNode::outputs_t;
56};
57
62template<typename DynamicHedgehogNode>
63concept HedgehogDynamicGraphForStaticAnalysis =
64HedgehogConnectableNode<DynamicHedgehogNode>
65 && std::is_base_of_v<
66 hh_cx::tool::Graph_t<
67 std::tuple_size_v<typename DynamicHedgehogNode::inputs_t>,
68 hh_cx::tool::CatTuples_t<
69 typename DynamicHedgehogNode::inputs_t,
70 typename DynamicHedgehogNode::outputs_t>
71 >,
72 DynamicHedgehogNode>
73 && std::is_constructible_v<DynamicHedgehogNode, std::string const &>;
74}
75
76}
77#endif //HH_ENABLE_HH_CX
78#endif //HEDGEHOG_CX_CONCEPTS_H_
Test if a node is a sender node.
Definition: concepts.h:175
Test if a node is a receiver node.
Definition: concepts.h:186