QtIotaBlock 0.4.1
Library with block types on IOTA
qunlocks.hpp
1 #pragma once
2 
3 #include "block/carray.hpp"
4 #include "block/qsignatures.hpp"
5 #include <QByteArray>
6 #include <QDataStream>
7 #include <QJsonValue>
8 namespace qiota
9 {
10 namespace qblocks
11 {
12 class Unlock
13 {
14  public:
15  enum types : quint8
16  {
19  Alias_typ = 2,
20  NFT_typ = 3
21  };
22 
23  Unlock(types typ);
24  template <typename from_type> static std::shared_ptr<const Unlock> from_(from_type &val);
25 
27  static std::shared_ptr<const Unlock> Reference(const quint16 &reference_m);
28  static std::shared_ptr<const Unlock> Alias(const quint16 &alias_reference_unlock_index_m);
29  static std::shared_ptr<const Unlock> NFT(const quint16 &nft_reference_unlock_index_m);
30 
31  virtual void serialize(QDataStream &out) const;
32  virtual QJsonObject get_Json(void) const;
33 
34  types type(void) const
35  {
36  return type_m;
37  }
38 
39  private:
40  const types type_m;
41 };
42 
43 class Signature_Unlock : public Unlock
44 {
45  public:
47  Signature_Unlock(const QJsonValue &val);
49  void serialize(QDataStream &out) const;
50  QJsonObject get_Json(void) const;
51 
52  private:
54 };
55 
56 class Reference_Unlock : public Unlock
57 {
58  public:
59  Reference_Unlock(const quint16 &reference_m);
60  Reference_Unlock(const QJsonValue &val);
62  void serialize(QDataStream &out) const;
63  QJsonObject get_Json(void) const;
64 
65  private:
66  quint16 reference_;
67 };
68 
69 class Alias_Unlock : public Unlock
70 {
71  public:
72  Alias_Unlock(const quint16 &alias_reference_unlock_index_m);
73  Alias_Unlock(const QJsonValue &val);
75  void serialize(QDataStream &out) const;
76  QJsonObject get_Json(void) const;
77 
78  private:
79  quint16 alias_reference_unlock_index_;
80 };
81 
82 class NFT_Unlock : public Unlock
83 {
84  public:
85  NFT_Unlock(const quint16 &nft_reference_unlock_index_m);
86  NFT_Unlock(const QJsonValue &val);
88  void serialize(QDataStream &out) const;
89  QJsonObject get_Json(void) const;
90 
91  private:
92  quint16 nft_reference_unlock_index_;
93 };
94 }; // namespace qblocks
95 }; // namespace qiota
Definition: qunlocks.hpp:70
Alias_Unlock(const quint16 &alias_reference_unlock_index_m)
Definition: qunlocks.cpp:91
void serialize(QDataStream &out) const
Definition: qunlocks.cpp:98
QJsonObject get_Json(void) const
Definition: qunlocks.cpp:103
Definition: qunlocks.hpp:83
void serialize(QDataStream &out) const
Definition: qunlocks.cpp:123
NFT_Unlock(const quint16 &nft_reference_unlock_index_m)
Definition: qunlocks.cpp:116
QJsonObject get_Json(void) const
Definition: qunlocks.cpp:128
Definition: qunlocks.hpp:57
QJsonObject get_Json(void) const
Definition: qunlocks.cpp:78
void serialize(QDataStream &out) const
Definition: qunlocks.cpp:73
Reference_Unlock(const quint16 &reference_m)
Definition: qunlocks.cpp:67
Definition: qunlocks.hpp:44
QJsonObject get_Json(void) const
Definition: qunlocks.cpp:54
void serialize(QDataStream &out) const
Definition: qunlocks.cpp:49
Signature_Unlock(const std::shared_ptr< const class Signature > &signature_m)
Definition: qunlocks.cpp:43
Definition: qunlocks.hpp:13
Unlock(types typ)
Definition: qunlocks.cpp:12
types
Definition: qunlocks.hpp:16
@ Alias_typ
Definition: qunlocks.hpp:19
@ Reference_typ
Definition: qunlocks.hpp:18
@ Signature_typ
Definition: qunlocks.hpp:17
@ NFT_typ
Definition: qunlocks.hpp:20
virtual QJsonObject get_Json(void) const
Definition: qunlocks.cpp:8
static std::shared_ptr< const Unlock > Signature(const std::shared_ptr< const class Signature > &signature_m)
Definition: qunlocks.cpp:38
static std::shared_ptr< const Unlock > Alias(const quint16 &alias_reference_unlock_index_m)
Definition: qunlocks.cpp:86
static std::shared_ptr< const Unlock > Reference(const quint16 &reference_m)
Definition: qunlocks.cpp:62
types type(void) const
Definition: qunlocks.hpp:34
static std::shared_ptr< const Unlock > from_(from_type &val)
Definition: qunlocks.cpp:14
static std::shared_ptr< const Unlock > NFT(const quint16 &nft_reference_unlock_index_m)
Definition: qunlocks.cpp:111
virtual void serialize(QDataStream &out) const
Definition: qunlocks.cpp:7
Definition: carray.hpp:22