Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
subaddress_index.h
Go to the documentation of this file.
1
// Copyright (c) 2017-2019, The Monero Project
2
//
3
// All rights reserved.
4
//
5
// Redistribution and use in source and binary forms, with or without modification, are
6
// permitted provided that the following conditions are met:
7
//
8
// 1. Redistributions of source code must retain the above copyright notice, this list of
9
// conditions and the following disclaimer.
10
//
11
// 2. Redistributions in binary form must reproduce the above copyright notice, this list
12
// of conditions and the following disclaimer in the documentation and/or other
13
// materials provided with the distribution.
14
//
15
// 3. Neither the name of the copyright holder nor the names of its contributors may be
16
// used to endorse or promote products derived from this software without specific
17
// prior written permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
27
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
29
#pragma once
30
31
#include "
serialization/keyvalue_serialization.h
"
32
#include <boost/serialization/serialization.hpp>
33
#include <boost/serialization/version.hpp>
34
#include <ostream>
35
36
namespace
cryptonote
37
{
38
struct
subaddress_index
39
{
40
uint32_t
major
;
41
uint32_t
minor
;
42
bool
operator==
(
const
subaddress_index
& rhs)
const
{
return
!memcmp(
this
, &rhs,
sizeof
(
subaddress_index
)); }
43
bool
operator!=
(
const
subaddress_index
& rhs)
const
{
return
!(*
this
== rhs); }
44
bool
is_zero
()
const
{
return
major
== 0 &&
minor
== 0; }
45
46
BEGIN_SERIALIZE_OBJECT
()
47
FIELD
(
major
)
48
FIELD
(
minor
)
49
END_SERIALIZE
()
50
51
BEGIN_KV_SERIALIZE_MAP
()
52
KV_SERIALIZE
(
major
)
53
KV_SERIALIZE
(
minor
)
54
END_KV_SERIALIZE_MAP
()
55
};
56
}
57
58
namespace
cryptonote
{
59
inline
std::ostream&
operator<<
(std::ostream& out,
const
cryptonote::subaddress_index
& subaddr_index)
60
{
61
return
out << subaddr_index.
major
<<
'/'
<< subaddr_index.
minor
;
62
}
63
}
64
65
namespace
std
66
{
67
template
<>
68
struct
hash<
cryptonote
::subaddress_index>
69
{
70
size_t
operator()
(
const
cryptonote::subaddress_index
& index )
const
71
{
72
size_t
res
;
73
if
(
sizeof
(
size_t
) == 8)
74
{
75
res
= ((
uint64_t
)index.
major
<< 32) | index.
minor
;
76
}
77
else
78
{
79
// https://stackoverflow.com/a/17017281
80
res
= 17;
81
res
=
res
* 31 + hash<uint32_t>()(index.
major
);
82
res
=
res
* 31 + hash<uint32_t>()(index.
minor
);
83
}
84
return
res
;
85
}
86
};
87
}
88
89
BOOST_CLASS_VERSION
(cryptonote::subaddress_index, 0)
90
91
namespace boost
92
{
93
namespace
serialization
94
{
95
template
<
class
Archive>
96
inline
void
serialize
(Archive &
a
,
cryptonote::subaddress_index
&x,
const
boost::serialization::version_type ver)
97
{
98
a
& x.
major
;
99
a
& x.
minor
;
100
}
101
}
102
}
BOOST_CLASS_VERSION
BOOST_CLASS_VERSION(nodetool::node_server< cryptonote::t_cryptonote_protocol_handler< tests::proxy_core > >, 1)
res
const char * res
Definition
hmac_keccak.cpp:41
keyvalue_serialization.h
KV_SERIALIZE
#define KV_SERIALIZE(varialble)
Definition
keyvalue_serialization.h:104
END_KV_SERIALIZE_MAP
#define END_KV_SERIALIZE_MAP()
Definition
keyvalue_serialization.h:102
BEGIN_KV_SERIALIZE_MAP
#define BEGIN_KV_SERIALIZE_MAP()
Definition
keyvalue_serialization.h:43
cryptonote
Holds cryptonote related classes and helpers.
Definition
ban.cpp:40
cryptonote::operator<<
std::ostream & operator<<(std::ostream &out, const cryptonote::subaddress_index &subaddr_index)
Definition
subaddress_index.h:59
a
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition
pointer.h:1124
serialize
void serialize(Archive &a, unsigned_tx_set &x, const boost::serialization::version_type ver)
Definition
serialization.cpp:872
BEGIN_SERIALIZE_OBJECT
#define BEGIN_SERIALIZE_OBJECT()
FIELD
#define FIELD(f)
END_SERIALIZE
#define END_SERIALIZE()
uint32_t
unsigned int uint32_t
Definition
stdint.h:126
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:136
cryptonote::subaddress_index
Definition
subaddress_index.h:39
cryptonote::subaddress_index::major
uint32_t major
Definition
subaddress_index.h:40
cryptonote::subaddress_index::minor
uint32_t minor
Definition
subaddress_index.h:41
cryptonote::subaddress_index::operator==
bool operator==(const subaddress_index &rhs) const
Definition
subaddress_index.h:42
cryptonote::subaddress_index::is_zero
bool is_zero() const
Definition
subaddress_index.h:44
cryptonote::subaddress_index::operator!=
bool operator!=(const subaddress_index &rhs) const
Definition
subaddress_index.h:43
std::hash< cryptonote::subaddress_index >::operator()
size_t operator()(const cryptonote::subaddress_index &index) const
Definition
subaddress_index.h:70
src
cryptonote_basic
subaddress_index.h
Generated on
for Electroneum by
1.17.0