// Basic Data types, abstract (not yet machine specific) #pragma once #include #include namespace FlowGraph { // Explicitely not including size enum class DataType { Size, Int, UInt, Pointer, Bool, Char, UChar, }; class Storage; ///< forward declaration // Argument for Operations // -> includes identity of data point, e.g. a local int variable // Built up as a list of Data instances for global and local data points in parallel to FlowGraph class Data { public: Data(DataType type, std::shared_ptr storage):m_type(type) {} DataType type() const { return m_type; } private: const DataType m_type; std::shared_ptr m_storage; }; } namespace GlobalData { // variable of simple or struct type class Element { private: size_t size; std::vector data; // may be empty if uninitialized }; class Segment: public std::vector { }; }