MidlePayQml 0.0.4
MiddlePay QML module
qfeatures.hpp
1 #pragma once
2 
3 #include <QByteArray>
4 #include <QDataStream>
5 #include <QJsonValue>
6 #include"block/carray.hpp"
7 #include"block/qaddresses.hpp"
8 namespace qiota{
9 namespace qblocks{
10 class Feature
11 {
12 public:
13  enum types : quint8 { Sender_typ=0, Issuer_typ=1 , Metadata_typ=2 , Tag_typ=3};
14  Feature(types typ);
15  template<class from_type>static std::shared_ptr<const Feature> from_(from_type& val);
16 
21 
22  virtual void serialize(QDataStream &out)const;
23  virtual QJsonObject get_Json(void) const;
24 
25  friend inline bool operator<(const Feature& a, const Feature& b)
26  {
27  return a.type_m<b.type_m;
28  }
29  types type(void)const{return type_m;}
31 
32 private:
33  const types type_m;
34 
35 };
36 
37 class Sender_Feature : public Feature
38 {
39 public:
43  void serialize(QDataStream &out)const;
44  QJsonObject get_Json(void) const;
45  std::shared_ptr<const Address> sender(void)const {return sender_;}
46 private:
48 
49 };
50 class Issuer_Feature : public Feature
51 {
52 public:
56  void serialize(QDataStream &out)const;
57  QJsonObject get_Json(void) const;
58  std::shared_ptr<const Address> issuer(void)const {return issuer_;}
59 private:
61 
62 };
63 
64 class Metadata_Feature : public Feature
65 {
66 public:
70  void serialize(QDataStream &out)const;
71  QJsonObject get_Json(void) const;
72 
73  fl_array<quint16> data(void)const {return data_;}
74 
75 private:
76  fl_array<quint16> data_;
77 
78 };
79 
80 class Tag_Feature: public Feature
81 {
82 public:
84  Tag_Feature(const QJsonValue& val);
86  void serialize(QDataStream &out)const;
87  QJsonObject get_Json(void) const;
88 
89  fl_array<quint8> tag(void)const {return tag_;}
90 
91 private:
92  fl_array<quint8> tag_;
93 
94 };
95 };
96 };
Definition: qfeatures.hpp:11
static std::shared_ptr< const Feature > Issuer(const std::shared_ptr< const Address > &issuer_m)
friend bool operator<(const Feature &a, const Feature &b)
Definition: qfeatures.hpp:25
virtual void serialize(QDataStream &out) const
static std::shared_ptr< const Feature > Metadata(const fl_array< quint16 > &data_m)
static std::shared_ptr< const Feature > from_(from_type &val)
static const QHash< types, QString > typesstr
Definition: qfeatures.hpp:30
types type(void) const
Definition: qfeatures.hpp:29
types
Definition: qfeatures.hpp:13
@ Metadata_typ
Definition: qfeatures.hpp:13
@ Issuer_typ
Definition: qfeatures.hpp:13
@ Tag_typ
Definition: qfeatures.hpp:13
@ Sender_typ
Definition: qfeatures.hpp:13
static std::shared_ptr< const Feature > Sender(const std::shared_ptr< const Address > &sender_m)
static std::shared_ptr< const Feature > Tag(const fl_array< quint8 > &tag_m)
virtual QJsonObject get_Json(void) const
Definition: qfeatures.hpp:51
void serialize(QDataStream &out) const
Issuer_Feature(QDataStream &in)
Issuer_Feature(const std::shared_ptr< const Address > &issuer_m)
Issuer_Feature(const QJsonValue &val)
QJsonObject get_Json(void) const
std::shared_ptr< const Address > issuer(void) const
Definition: qfeatures.hpp:58
Definition: qfeatures.hpp:65
QJsonObject get_Json(void) const
Metadata_Feature(const fl_array< quint16 > &data_m)
fl_array< quint16 > data(void) const
Definition: qfeatures.hpp:73
void serialize(QDataStream &out) const
Metadata_Feature(const QJsonValue &val)
Definition: qfeatures.hpp:38
std::shared_ptr< const Address > sender(void) const
Definition: qfeatures.hpp:45
Sender_Feature(const std::shared_ptr< const Address > &sender_m)
QJsonObject get_Json(void) const
Sender_Feature(const QJsonValue &val)
Sender_Feature(QDataStream &in)
void serialize(QDataStream &out) const
Definition: qfeatures.hpp:81
QJsonObject get_Json(void) const
Tag_Feature(QDataStream &in)
Tag_Feature(const fl_array< quint8 > &tag_m)
Tag_Feature(const QJsonValue &val)
void serialize(QDataStream &out) const
fl_array< quint8 > tag(void) const
Definition: qfeatures.hpp:89
Definition: qbigint.hpp:7