docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
element.h File Reference
#include <cassert>
#include <cstdint>
#include <string>
#include <string_view>
#include <type_traits>
#include <unordered_map>
#include "sdfg/exceptions.h"
#include "sdfg/symbolic/symbolic.h"

Go to the source code of this file.

Classes

class  sdfg::DebugInfo
class  sdfg::Element

Namespaces

namespace  sdfg
namespace  sdfg::builder
namespace  sdfg::deepcopy
namespace  sdfg::serializer

Typedefs

typedef size_t sdfg::ElementId
template<typename T>
using sdfg::element_cast_target_t = std::remove_pointer_t<std::remove_reference_t<T>>
 Resolves the concrete target type for isa/dyn_cast, accepting the type itself (Block), a pointer to it (Block*), or a reference to it (Block&).

Enumerations

enum class  sdfg::ElementType : uint64_t {
  sdfg::State = 1LL , sdfg::InterstateEdge = 1LL << 1 , sdfg::AccessNode = 1LL << 2 , sdfg::ConstantNode = 1LL << 3 ,
  sdfg::Tasklet = 1LL << 4 , sdfg::LibraryNode = 1LL << 5 , sdfg::Memlet = 1LL << 6 , sdfg::Return = 1LL << 7 ,
  sdfg::Block = 1LL << 8 , sdfg::Sequence = 1LL << 9 , sdfg::AssignmentBlock = 1LL << 10 , sdfg::IfElse = 1LL << 11 ,
  sdfg::While = 1LL << 12 , sdfg::Continue = 1LL << 13 , sdfg::Break = 1LL << 14 , sdfg::For = 1LL << 15 ,
  sdfg::Map = 1LL << 16 , sdfg::Reduce = 1LL << 17
}

Functions

constexpr ElementType sdfg::operator| (ElementType lhs, ElementType rhs)
 Bitwise combination of element types, enabling category masks.
constexpr ElementType sdfg::operator& (ElementType lhs, ElementType rhs)
constexpr ElementType sdfg::operator~ (ElementType type)
constexpr bool sdfg::is_a (ElementType type, ElementType mask)
 Tests whether type is contained in the category mask (efficient, branch-free type check).
constexpr std::string_view sdfg::element_type_name (ElementType type)
 Returns the type of an element as a human-readable string (no allocation).
std::ostream & sdfg::operator<< (std::ostream &os, ElementType type)
template<typename T>
bool sdfg::isa (const Element &element)
 LLVM-style RTTI check: true if element belongs to type category T.
template<typename T>
bool sdfg::isa (const Element *element)
template<typename T>
element_cast_target_t< T > * sdfg::dyn_cast (Element *element)
 Efficient down-cast to T, or nullptr if element is not a T.
template<typename T>
const element_cast_target_t< T > * sdfg::dyn_cast (const Element *element)
template<typename T>
element_cast_target_t< T > & sdfg::dyn_cast (Element &element)
 Checked down-cast to T; throws InvalidSDFGException if element is not a T.
template<typename T>
const element_cast_target_t< T > & sdfg::dyn_cast (const Element &element)