retdec
metadatable.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_LLVMIR2HLL_SUPPORT_METADATABLE_H
8 #define RETDEC_LLVMIR2HLL_SUPPORT_METADATABLE_H
9 
10 namespace retdec {
11 namespace llvmir2hll {
12 
18 template<typename T>
19 class Metadatable {
20 public:
26  void setMetadata(T data) {
27  this->data = data;
28  }
29 
33  T getMetadata() const {
34  return data;
35  }
36 
40  bool hasMetadata() const {
41  return !data.empty();
42  }
43 
44 protected:
48  Metadatable(): data() {}
49 
50 private:
52  T data;
53 };
54 
55 } // namespace llvmir2hll
56 } // namespace retdec
57 
58 #endif
A mixin providing metadata attached to objects.
Definition: metadatable.h:19
bool hasMetadata() const
Are there any non-empty metadata?
Definition: metadatable.h:40
T data
Attached metadata.
Definition: metadatable.h:52
void setMetadata(T data)
Attaches new metadata.
Definition: metadatable.h:26
Metadatable()
Constructs a new metadatable object.
Definition: metadatable.h:48
T getMetadata() const
Returns the attached metadata.
Definition: metadatable.h:33
A library providing API for working with back-end IR.
Definition: archive_wrapper.h:19