QtIotaBlock 0.4.1
Library with block types on IOTA
qaddresses.hpp
1 #pragma once
2 
3 #include "block/carray.hpp"
4 #include <QJsonObject>
5 namespace qiota
6 {
7 namespace qblocks
8 {
9 
10 class Address
11 {
12  public:
13  enum types : quint8
14  {
15  NFT_typ = 16,
16  Alias_typ = 8,
17  Ed25519_typ = 0
18  };
19 
20  Address(types typ, c_array addrhash_m);
21  Address(types typ, QDataStream &in);
22  template <class from_type> static std::shared_ptr<const Address> from_(from_type &val);
24 
25  static std::shared_ptr<const Address> NFT(const c_array &nft_id_m);
26  static std::shared_ptr<const Address> Alias(const c_array &alias_id_m);
27  static std::shared_ptr<const Address> Ed25519(const c_array &pubkeyhash_m);
28 
29  virtual void serialize(QDataStream &out) const;
30  virtual QJsonObject get_Json(void) const;
31  c_array addrhash(void) const
32  {
33  return addrhash_;
34  }
35  c_array addr(void) const
36  {
37  c_array addr;
39  buffer.setByteOrder(QDataStream::LittleEndian);
40  serialize(buffer);
41  return addr;
42  }
43 
44  types type(void) const
45  {
46  return type_m;
47  }
48 
49  private:
50  const types type_m;
51  c_array addrhash_;
52 };
53 
54 class NFT_Address : public Address
55 {
56  public:
57  NFT_Address(const c_array &nft_id_m);
58  NFT_Address(const QJsonValue &val);
60 
61  QJsonObject get_Json(void) const;
62 };
63 class Alias_Address : public Address
64 {
65  public:
66  Alias_Address(const c_array &alias_id_m);
67  Alias_Address(const QJsonValue &val);
69 
70  QJsonObject get_Json(void) const;
71 };
72 
73 class Ed25519_Address : public Address
74 {
75  public:
76  Ed25519_Address(const c_array &pubkeyhash_m);
77  Ed25519_Address(const QJsonValue &val);
79 
80  QJsonObject get_Json(void) const;
81 };
82 
83 }; // namespace qblocks
84 }; // namespace qiota
Definition: qaddresses.hpp:11
virtual QJsonObject get_Json(void) const
Definition: qaddresses.cpp:11
static std::shared_ptr< const Address > NFT(const c_array &nft_id_m)
Definition: qaddresses.cpp:48
static std::shared_ptr< const Address > Ed25519(const c_array &pubkeyhash_m)
Definition: qaddresses.cpp:81
Address(types typ, c_array addrhash_m)
Definition: qaddresses.cpp:15
static std::shared_ptr< const Address > Alias(const c_array &alias_id_m)
Definition: qaddresses.cpp:64
c_array addr(void) const
Definition: qaddresses.hpp:35
c_array addrhash(void) const
Definition: qaddresses.hpp:31
types
Definition: qaddresses.hpp:14
@ Alias_typ
Definition: qaddresses.hpp:16
@ Ed25519_typ
Definition: qaddresses.hpp:17
@ NFT_typ
Definition: qaddresses.hpp:15
virtual void serialize(QDataStream &out) const
Definition: qaddresses.cpp:6
static std::shared_ptr< const Address > from_array(QByteArray &val)
Definition: qaddresses.cpp:41
types type(void) const
Definition: qaddresses.hpp:44
static std::shared_ptr< const Address > from_(from_type &val)
Definition: qaddresses.cpp:21
Definition: qaddresses.hpp:64
QJsonObject get_Json(void) const
Definition: qaddresses.cpp:73
Alias_Address(const c_array &alias_id_m)
Definition: qaddresses.cpp:69
Definition: qaddresses.hpp:74
Ed25519_Address(const c_array &pubkeyhash_m)
Definition: qaddresses.cpp:86
QJsonObject get_Json(void) const
Definition: qaddresses.cpp:90
Definition: qaddresses.hpp:55
NFT_Address(const c_array &nft_id_m)
Definition: qaddresses.cpp:53
QJsonObject get_Json(void) const
Definition: qaddresses.cpp:57
Byte Array that takes care of storing the objects in serialized form.
Definition: carray.hpp:30
Definition: carray.hpp:22