Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Classes | Namespaces | Macros
INode.hpp File Reference
#include "shambase/WithUUID.hpp"
#include "shambase/memory.hpp"
#include "shambase/stacktrace.hpp"
#include "shamrock/solvergraph/IEdge.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)   const type &name;
 
#define INODE_DECL_RW(type, name)   type & name;
 
#define INODE_PARAM_RO(type, name)   std::shared_ptr<type> name,
 
#define INODE_PARAM_RW(type, name)   std::shared_ptr<type> name,
 
#define INODE_PUSH_RO1(type, name)   name,
 
#define INODE_PUSH_RW1(type, name)
 
#define INODE_PUSH_RO2(type, name)
 
#define INODE_PUSH_RW2(type, name)   name,
 
#define INODE_GET_RO(type, name)   get_ro_edge<type>(ro++),
 
#define INODE_GET_RW(type, name)   get_rw_edge<type>(rw++),
 
#define EXPAND_NODE_EDGES(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 250 of file INode.hpp.

◆ INODE_DECL_RO

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

Definition at line 239 of file INode.hpp.

◆ INODE_DECL_RW

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

Definition at line 240 of file INode.hpp.

◆ INODE_GET_RO

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

Definition at line 247 of file INode.hpp.

◆ INODE_GET_RW

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

Definition at line 248 of file INode.hpp.

◆ INODE_PARAM_RO

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

Definition at line 241 of file INode.hpp.

◆ INODE_PARAM_RW

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

Definition at line 242 of file INode.hpp.

◆ INODE_PUSH_RO1

#define INODE_PUSH_RO1 (   type,
  name 
)    name,

Definition at line 243 of file INode.hpp.

◆ INODE_PUSH_RO2

#define INODE_PUSH_RO2 (   type,
  name 
)

Definition at line 245 of file INode.hpp.

◆ INODE_PUSH_RW1

#define INODE_PUSH_RW1 (   type,
  name 
)

Definition at line 244 of file INode.hpp.

◆ INODE_PUSH_RW2

#define INODE_PUSH_RW2 (   type,
  name 
)    name,

Definition at line 246 of file INode.hpp.