summaryrefslogtreecommitdiffhomepage
path: root/flowgraph/data.h
blob: a52627de7e87f6b127bb80bb7d99be4e44f781b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Basic Data types, abstract (not yet machine specific)

#pragma once

#include <cstdint>
#include <memory>
#include <vector>

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> storage);
  DataType type() const;
  std::shared_ptr<Storage> storage() const;
  bool operator==(const Data& other) const;
 private:
  const DataType m_type;
  std::shared_ptr<Storage> m_storage;
 };

}

namespace GlobalData {

#if 0
 // variable of simple or struct type
 class Element
 {
 private:
  size_t size;
  std::vector<uint8_t> data; // may be empty if uninitialized
 };

 class Segment: public std::vector<Element>
 {
 };
#endif

}