#include "node.h" #include "data.h" #include #include using namespace FlowGraph; FlowGraph::Data& Node::destination() { if (mOperands.size() < 1) throw std::runtime_error("ICE: No destination operand available"); return mOperands[0]; } // 4 byte for now Data FlowGraph::MakeConstantInt(int i) { std::vector value(size_t(4), uint8_t(0)); *(reinterpret_cast(value.data())) = boost::endian::native_to_little(static_cast(i)); return Data{DataType::Int, std::make_shared(value)}; } Data FlowGraph::MakeLocalPointer(FlowGraph::LocalScope& scope, const std::string& name) { Data data{DataType::Pointer, std::make_shared(scope, name)}; scope.push_back(std::make_shared(data)); return data; } Data FlowGraph::MakeLocalSize(FlowGraph::LocalScope& scope, const std::string& name) { Data data{DataType::Size, std::make_shared(scope, name)}; scope.push_back(std::make_shared(data)); return data; } Data FlowGraph::MakeTemporaryInt(FlowGraph::LocalScope& scope) { Data data{DataType::Int, std::make_shared(scope)}; scope.push_back(std::make_shared(data)); return data; } LocalScope& CreateScopeOp::scope() { return m_scope; }