QtIotaBlock 0.4.1
Library with block types on IOTA
qfeatures.hpp
1 #pragma once
2 
3 #include "block/carray.hpp"
4 #include "block/qaddresses.hpp"
5 #include <QByteArray>
6 #include <QDataStream>
7 #include <QJsonValue>
8 namespace qiota
9 {
10 namespace qblocks
11 {
12 class Feature
13 {
14  public:
15  enum types : quint8
16  {
20  Tag_typ = 3
21  };
22  Feature(types typ);
23  template <class from_type> static std::shared_ptr<const Feature> from_(from_type &val);
24 
29 
30  virtual void serialize(QDataStream &out) const;
31  virtual QJsonObject get_Json(void) const;
32 
33  friend inline bool operator<(const Feature &a, const Feature &b)
34  {
35  return a.type_m < b.type_m;
36  }
37  types type(void) const
38  {
39  return type_m;
40  }
42 
43  private:
44  const types type_m;
45 };
46 
47 class Sender_Feature : public Feature
48 {
49  public:
51  Sender_Feature(const QJsonValue &val);
53  void serialize(QDataStream &out) const;
54  QJsonObject get_Json(void) const;
56  {
57  return sender_;
58  }
59 
60  private:
62 };
63 class Issuer_Feature : public Feature
64 {
65  public:
67  Issuer_Feature(const QJsonValue &val);
69  void serialize(QDataStream &out) const;
70  QJsonObject get_Json(void) const;
72  {
73  return issuer_;
74  }
75 
76  private:
78 };
79 
80 class Metadata_Feature : public Feature
81 {
82  public:
83  Metadata_Feature(const fl_array<quint16> &data_m);
84  Metadata_Feature(const QJsonValue &val);
86  void serialize(QDataStream &out) const;
87  QJsonObject get_Json(void) const;
88 
89  fl_array<quint16> data(void) const
90  {
91  return data_;
92  }
93 
94  private:
95  fl_array<quint16> data_;
96 };
97 
98 class Tag_Feature : public Feature
99 {
100  public:
101  Tag_Feature(const fl_array<quint8> &tag_m);
102  Tag_Feature(const QJsonValue &val);
104  void serialize(QDataStream &out) const;
105  QJsonObject get_Json(void) const;
106 
107  fl_array<quint8> tag(void) const
108  {
109  return tag_;
110  }
111 
112  private:
113  fl_array<quint8> tag_;
114 };
115 }; // namespace qblocks
116 }; // namespace qiota
Definition: qfeatures.hpp:13
friend bool operator<(const Feature &a, const Feature &b)
Definition: qfeatures.hpp:33
static std::shared_ptr< const Feature > from_(from_type &val)
Definition: qfeatures.cpp:16
static const QHash< types, QString > typesstr
Definition: qfeatures.hpp:41
virtual QJsonObject get_Json(void) const
Definition: qfeatures.cpp:11
static std::shared_ptr< const Feature > Sender(const std::shared_ptr< const Address > &sender_m)
Definition: qfeatures.cpp:39
static std::shared_ptr< const Feature > Issuer(const std::shared_ptr< const Address > &issuer_m)
Definition: qfeatures.cpp:61
types type(void) const
Definition: qfeatures.hpp:37
types
Definition: qfeatures.hpp:16
@ Metadata_typ
Definition: qfeatures.hpp:19
@ Issuer_typ
Definition: qfeatures.hpp:18
@ Tag_typ
Definition: qfeatures.hpp:20
@ Sender_typ
Definition: qfeatures.hpp:17
virtual void serialize(QDataStream &out) const
Definition: qfeatures.cpp:10
static std::shared_ptr< const Feature > Tag(const fl_array< quint8 > &tag_m)
Definition: qfeatures.cpp:107
static std::shared_ptr< const Feature > Metadata(const fl_array< quint16 > &data_m)
Definition: qfeatures.cpp:83
Feature(types typ)
Definition: qfeatures.cpp:15
Definition: qfeatures.hpp:64
void serialize(QDataStream &out) const
Definition: qfeatures.cpp:70
Issuer_Feature(const std::shared_ptr< const Address > &issuer_m)
Definition: qfeatures.cpp:65
QJsonObject get_Json(void) const
Definition: qfeatures.cpp:75
std::shared_ptr< const Address > issuer(void) const
Definition: qfeatures.hpp:71
Definition: qfeatures.hpp:81
QJsonObject get_Json(void) const
Definition: qfeatures.cpp:100
Metadata_Feature(const fl_array< quint16 > &data_m)
Definition: qfeatures.cpp:88
fl_array< quint16 > data(void) const
Definition: qfeatures.hpp:89
void serialize(QDataStream &out) const
Definition: qfeatures.cpp:95
Definition: qfeatures.hpp:48
std::shared_ptr< const Address > sender(void) const
Definition: qfeatures.hpp:55
Sender_Feature(const std::shared_ptr< const Address > &sender_m)
Definition: qfeatures.cpp:44
QJsonObject get_Json(void) const
Definition: qfeatures.cpp:54
void serialize(QDataStream &out) const
Definition: qfeatures.cpp:49
Definition: qfeatures.hpp:99
QJsonObject get_Json(void) const
Definition: qfeatures.cpp:123
Tag_Feature(const fl_array< quint8 > &tag_m)
Definition: qfeatures.cpp:112
void serialize(QDataStream &out) const
Definition: qfeatures.cpp:118
fl_array< quint8 > tag(void) const
Definition: qfeatures.hpp:107
Definition: carray.hpp:22