// Basic Data types, abstract (not yet machine specific) #pragma once #include #include #include namespace FlowGraph { // Explicitely not including size enum class DataType: int { 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); DataType type() const; std::shared_ptr storage() const; bool operator==(const Data& other) const; private: const DataType m_type; std::shared_ptr m_storage; }; } namespace GlobalData { #if 0 // 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 { }; #endif }