Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
INode.hpp File Reference
#include "shambase/WithUUID.hpp"
#include "shambase/memory.hpp"
#include "shambase/stacktrace.hpp"
#include "shamsolvergraph/edge/IEdge.hpp"
#include "shamsolvergraph/edge/INullOptEdge.hpp"
#include <memory>
#include <vector>
Include dependency graph for INode.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  shamrock::solvergraph::INode
 Inode is node between data edges, takes multiple inputs, multiple outputs. More...

Namespaces

namespace  shamrock
 namespace for the main framework

Macros

#define INODE_DECL_RO(type, name)
#define INODE_DECL_RW(type, name)
#define INODE_PARAM_RO(type, name)
#define INODE_PARAM_RW(type, name)
#define INODE_PUSH_RO1(type, name)
#define INODE_PUSH_RW1(type, name)
#define INODE_PUSH_RO2(type, name)
#define INODE_PUSH_RW2(type, name)
#define INODE_GET_RO(type, name)
#define INODE_GET_RW(type, name)
#define INODE_DECL_RO_OPTIONAL(type, name)
#define INODE_DECL_RW_OPTIONAL(type, name)
#define INODE_PARAM_RO_OPTIONAL(type, name)
#define INODE_PARAM_RW_OPTIONAL(type, name)
#define INODE_PUSH_RO1_OPTIONAL(type, name)
#define INODE_PUSH_RW1_OPTIONAL(type, name)
#define INODE_PUSH_RO2_OPTIONAL(type, name)
#define INODE_PUSH_RW2_OPTIONAL(type, name)
#define INODE_GET_RO_OPTIONAL(type, name)
#define INODE_GET_RW_OPTIONAL(type, name)
#define EXPAND_NODE_EDGES(EDGES)
#define EXPAND_NODE_EDGES_OPTIONAL(EDGES)

Detailed Description

Author
Timothée David–Cléris (tim.s.nosp@m.hamr.nosp@m.ock@p.nosp@m.roto.nosp@m.n.me)

Definition in file INode.hpp.

Macro Definition Documentation

◆ EXPAND_NODE_EDGES

#define EXPAND_NODE_EDGES ( EDGES)
Value:
\
struct Edges { \
EDGES(INODE_DECL_RO, INODE_DECL_RW) \
}; \
\
inline void set_edges( \
EDGES(INODE_PARAM_RO, INODE_PARAM_RW) SourceLocation loc = SourceLocation{}) { \
__shamrock_log_callsite(loc); \
\
__internal_set_ro_edges({EDGES(INODE_PUSH_RO1, INODE_PUSH_RW1)}); \
__internal_set_rw_edges({EDGES(INODE_PUSH_RO2, INODE_PUSH_RW2)}); \
} \
\
inline Edges get_edges() { \
int ro = 0; \
int rw = 0; \
return Edges{EDGES(INODE_GET_RO, INODE_GET_RW)}; \
}
provide information about the source location

Definition at line 301 of file INode.hpp.

◆ EXPAND_NODE_EDGES_OPTIONAL

#define EXPAND_NODE_EDGES_OPTIONAL ( EDGES)
Value:
\
struct Edges { \
EDGES(INODE_DECL_RO, INODE_DECL_RW, INODE_DECL_RO_OPTIONAL, INODE_DECL_RW_OPTIONAL) \
}; \
\
inline void set_edges( \
EDGES(INODE_PARAM_RO, INODE_PARAM_RW, INODE_PARAM_RO_OPTIONAL, INODE_PARAM_RW_OPTIONAL) \
__shamrock_log_callsite(loc); \
\
__internal_set_ro_edges({EDGES( \
INODE_PUSH_RO1, INODE_PUSH_RW1, INODE_PUSH_RO1_OPTIONAL, INODE_PUSH_RW1_OPTIONAL)}); \
__internal_set_rw_edges({EDGES( \
INODE_PUSH_RO2, INODE_PUSH_RW2, INODE_PUSH_RO2_OPTIONAL, INODE_PUSH_RW2_OPTIONAL)}); \
} \
\
inline Edges get_edges() { \
int ro = 0; \
int rw = 0; \
return Edges{ \
EDGES(INODE_GET_RO, INODE_GET_RW, INODE_GET_RO_OPTIONAL, INODE_GET_RW_OPTIONAL)}; \
}

Definition at line 321 of file INode.hpp.

◆ INODE_DECL_RO

#define INODE_DECL_RO ( type,
name )
Value:
const type &name;

Definition at line 278 of file INode.hpp.

◆ INODE_DECL_RO_OPTIONAL

#define INODE_DECL_RO_OPTIONAL ( type,
name )
Value:
const std::optional<std::reference_wrapper<const type>> name;

Definition at line 289 of file INode.hpp.

◆ INODE_DECL_RW

#define INODE_DECL_RW ( type,
name )
Value:
type & name;

Definition at line 279 of file INode.hpp.

◆ INODE_DECL_RW_OPTIONAL

#define INODE_DECL_RW_OPTIONAL ( type,
name )
Value:
const std::optional<std::reference_wrapper<type>> name;

Definition at line 291 of file INode.hpp.

◆ INODE_GET_RO

#define INODE_GET_RO ( type,
name )
Value:
get_ro_edge<type>(ro++),

Definition at line 286 of file INode.hpp.

◆ INODE_GET_RO_OPTIONAL

#define INODE_GET_RO_OPTIONAL ( type,
name )
Value:
get_ro_edge_optional<type>(ro++),

Definition at line 298 of file INode.hpp.

◆ INODE_GET_RW

#define INODE_GET_RW ( type,
name )
Value:
get_rw_edge<type>(rw++),

Definition at line 287 of file INode.hpp.

◆ INODE_GET_RW_OPTIONAL

#define INODE_GET_RW_OPTIONAL ( type,
name )
Value:
get_rw_edge_optional<type>(rw++),

Definition at line 299 of file INode.hpp.

◆ INODE_PARAM_RO

#define INODE_PARAM_RO ( type,
name )
Value:
const std::shared_ptr<type> &name,

Definition at line 280 of file INode.hpp.

◆ INODE_PARAM_RO_OPTIONAL

#define INODE_PARAM_RO_OPTIONAL ( type,
name )
Value:
const std::optional<std::shared_ptr<type>> &name,

Definition at line 292 of file INode.hpp.

◆ INODE_PARAM_RW

#define INODE_PARAM_RW ( type,
name )
Value:
const std::shared_ptr<type> &name,

Definition at line 281 of file INode.hpp.

◆ INODE_PARAM_RW_OPTIONAL

#define INODE_PARAM_RW_OPTIONAL ( type,
name )
Value:
const std::optional<std::shared_ptr<type>> &name,

Definition at line 293 of file INode.hpp.

◆ INODE_PUSH_RO1

#define INODE_PUSH_RO1 ( type,
name )
Value:
name,

Definition at line 282 of file INode.hpp.

◆ INODE_PUSH_RO1_OPTIONAL

#define INODE_PUSH_RO1_OPTIONAL ( type,
name )
Value:
shamrock::solvergraph::obsfucate_null_opt_edge(name),

Definition at line 294 of file INode.hpp.

◆ INODE_PUSH_RO2

#define INODE_PUSH_RO2 ( type,
name )

Definition at line 284 of file INode.hpp.

◆ INODE_PUSH_RO2_OPTIONAL

#define INODE_PUSH_RO2_OPTIONAL ( type,
name )

Definition at line 296 of file INode.hpp.

◆ INODE_PUSH_RW1

#define INODE_PUSH_RW1 ( type,
name )

Definition at line 283 of file INode.hpp.

◆ INODE_PUSH_RW1_OPTIONAL

#define INODE_PUSH_RW1_OPTIONAL ( type,
name )

Definition at line 295 of file INode.hpp.

◆ INODE_PUSH_RW2

#define INODE_PUSH_RW2 ( type,
name )
Value:
name,

Definition at line 285 of file INode.hpp.

◆ INODE_PUSH_RW2_OPTIONAL

#define INODE_PUSH_RW2_OPTIONAL ( type,
name )
Value:
shamrock::solvergraph::obsfucate_null_opt_edge(name),

Definition at line 297 of file INode.hpp.