QtIotaBlock 0.4.1
Library with block types on IOTA
qunlock_conditions.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 {
13 {
14  public:
15  enum types : quint8
16  {
24  };
25  Unlock_Condition(types typ, const std::shared_ptr<const Address> &address_m = nullptr);
26  template <class from_type> static std::shared_ptr<const Unlock_Condition> from_(from_type &val);
27 
30  const std::shared_ptr<const class Address> &return_address_m, const quint64 &return_amount_m);
31  static std::shared_ptr<const Unlock_Condition> Timelock(const quint32 &unix_time_m);
33  const quint32 &unix_time_m, const std::shared_ptr<const class Address> &return_address_m);
35  const std::shared_ptr<const class Address> &address_m);
37  const std::shared_ptr<const class Address> &address_m);
39  const std::shared_ptr<const class Address> &address_m);
40 
41  virtual void serialize(QDataStream &out) const;
42  virtual QJsonObject get_Json(void) const;
43 
44  friend inline bool operator<(const Unlock_Condition &a, const Unlock_Condition &b)
45  {
46  return a.type_m < b.type_m;
47  }
49  {
50  return address_;
51  }
52  types type(void) const
53  {
54  return type_m;
55  }
56 
57  private:
58  const types type_m;
60 };
61 
63 {
64  public:
68 };
69 
71 {
72  public:
74  const quint64 &return_amount_m);
77  void serialize(QDataStream &out) const;
78  QJsonObject get_Json(void) const;
79  quint64 return_amount(void) const
80  {
81  return return_amount_;
82  }
83 
84  private:
85  quint64 return_amount_;
86 };
87 
89 {
90  public:
91  Timelock_Unlock_Condition(const quint32 &unix_time_m);
94  void serialize(QDataStream &out) const;
95  QJsonObject get_Json(void) const;
96  quint32 unix_time(void) const
97  {
98  return unix_time_;
99  }
100 
101  private:
102  quint32 unix_time_;
103 };
104 
106 {
107  public:
108  Expiration_Unlock_Condition(const quint32 &unix_time_m,
109  const std::shared_ptr<const class Address> &return_address_m);
112  void serialize(QDataStream &out) const;
113  QJsonObject get_Json(void) const;
114  quint32 unix_time(void) const
115  {
116  return unix_time_;
117  }
118 
119  private:
120  quint32 unix_time_;
121 };
122 
124 {
125  public:
129 };
130 
132 {
133  public:
137 };
139 {
140  public:
144 };
145 }; // namespace qblocks
146 }; // namespace qiota
Definition: qunlock_conditions.hpp:63
Address_Unlock_Condition(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:57
Definition: qunlock_conditions.hpp:106
void serialize(QDataStream &out) const
Definition: qunlock_conditions.cpp:182
quint32 unix_time(void) const
Definition: qunlock_conditions.hpp:114
QJsonObject get_Json(void) const
Definition: qunlock_conditions.cpp:187
Expiration_Unlock_Condition(const quint32 &unix_time_m, const std::shared_ptr< const class Address > &return_address_m)
Definition: qunlock_conditions.cpp:170
Definition: qunlock_conditions.hpp:132
Governor_Address_Unlock_Condition(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:84
Definition: qunlock_conditions.hpp:139
Immutable_Alias_Address_Unlock_Condition(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:98
Definition: qunlock_conditions.hpp:124
State_Controller_Address_Unlock_Condition(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:70
Definition: qunlock_conditions.hpp:71
void serialize(QDataStream &out) const
Definition: qunlock_conditions.cpp:123
QJsonObject get_Json(void) const
Definition: qunlock_conditions.cpp:128
Storage_Deposit_Return_Unlock_Condition(const std::shared_ptr< const class Address > &return_address_m, const quint64 &return_amount_m)
Definition: qunlock_conditions.cpp:112
quint64 return_amount(void) const
Definition: qunlock_conditions.hpp:79
Definition: qunlock_conditions.hpp:89
QJsonObject get_Json(void) const
Definition: qunlock_conditions.cpp:155
void serialize(QDataStream &out) const
Definition: qunlock_conditions.cpp:150
quint32 unix_time(void) const
Definition: qunlock_conditions.hpp:96
Timelock_Unlock_Condition(const quint32 &unix_time_m)
Definition: qunlock_conditions.cpp:142
Definition: qunlock_conditions.hpp:13
friend bool operator<(const Unlock_Condition &a, const Unlock_Condition &b)
Definition: qunlock_conditions.hpp:44
static std::shared_ptr< const Unlock_Condition > Immutable_Alias_Address(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:92
std::shared_ptr< const class Address > address(void) const
Definition: qunlock_conditions.hpp:48
static std::shared_ptr< const Unlock_Condition > Timelock(const quint32 &unix_time_m)
Definition: qunlock_conditions.cpp:137
types type(void) const
Definition: qunlock_conditions.hpp:52
static std::shared_ptr< const Unlock_Condition > Address(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:52
static std::shared_ptr< const Unlock_Condition > State_Controller_Address(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:64
virtual QJsonObject get_Json(void) const
Definition: qunlock_conditions.cpp:12
static std::shared_ptr< const Unlock_Condition > Storage_Deposit_Return(const std::shared_ptr< const class Address > &return_address_m, const quint64 &return_amount_m)
Definition: qunlock_conditions.cpp:106
virtual void serialize(QDataStream &out) const
Definition: qunlock_conditions.cpp:7
types
Definition: qunlock_conditions.hpp:16
@ Storage_Deposit_Return_typ
Definition: qunlock_conditions.hpp:18
@ Governor_Address_typ
Definition: qunlock_conditions.hpp:22
@ Expiration_typ
Definition: qunlock_conditions.hpp:20
@ Address_typ
Definition: qunlock_conditions.hpp:17
@ State_Controller_Address_typ
Definition: qunlock_conditions.hpp:21
@ Immutable_Alias_Address_typ
Definition: qunlock_conditions.hpp:23
@ Timelock_typ
Definition: qunlock_conditions.hpp:19
static std::shared_ptr< const Unlock_Condition > from_(from_type &val)
Definition: qunlock_conditions.cpp:21
static std::shared_ptr< const Unlock_Condition > Governor_Address(const std::shared_ptr< const class Address > &address_m)
Definition: qunlock_conditions.cpp:78
static std::shared_ptr< const Unlock_Condition > Expiration(const quint32 &unix_time_m, const std::shared_ptr< const class Address > &return_address_m)
Definition: qunlock_conditions.cpp:164
Unlock_Condition(types typ, const std::shared_ptr< const Address > &address_m=nullptr)
Definition: qunlock_conditions.cpp:19
Definition: carray.hpp:22