Skip to content

Commit 9d755f9

Browse files
authored
Merge pull request #583 from evoskuil/master
Refactor primitives in advance of cascade filtering.
2 parents f788199 + f3e2969 commit 9d755f9

51 files changed

Lines changed: 1312 additions & 727 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile.am

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ test_libbitcoin_database_test_SOURCES = \
9999
test/tables/archives/puts.cpp \
100100
test/tables/archives/transaction.cpp \
101101
test/tables/archives/txs.cpp \
102+
test/tables/caches/doubles.cpp \
102103
test/tables/caches/prevout.cpp \
103104
test/tables/caches/validated_bk.cpp \
104105
test/tables/caches/validated_tx.cpp \
@@ -130,8 +131,6 @@ include_bitcoin_HEADERS = \
130131

131132
include_bitcoin_databasedir = ${includedir}/bitcoin/database
132133
include_bitcoin_database_HEADERS = \
133-
include/bitcoin/database/association.hpp \
134-
include/bitcoin/database/associations.hpp \
135134
include/bitcoin/database/boost.hpp \
136135
include/bitcoin/database/define.hpp \
137136
include/bitcoin/database/error.hpp \
@@ -214,16 +213,23 @@ include_bitcoin_database_primitives_HEADERS = \
214213
include/bitcoin/database/primitives/hashhead.hpp \
215214
include/bitcoin/database/primitives/hashmap.hpp \
216215
include/bitcoin/database/primitives/iterator.hpp \
216+
include/bitcoin/database/primitives/keys.hpp \
217217
include/bitcoin/database/primitives/linkage.hpp \
218218
include/bitcoin/database/primitives/manager.hpp \
219219
include/bitcoin/database/primitives/nomap.hpp \
220220
include/bitcoin/database/primitives/primitives.hpp
221221

222222
include_bitcoin_database_tablesdir = ${includedir}/bitcoin/database/tables
223223
include_bitcoin_database_tables_HEADERS = \
224+
include/bitcoin/database/tables/association.hpp \
225+
include/bitcoin/database/tables/associations.hpp \
224226
include/bitcoin/database/tables/context.hpp \
225227
include/bitcoin/database/tables/event.hpp \
228+
include/bitcoin/database/tables/keys.hpp \
229+
include/bitcoin/database/tables/names.hpp \
230+
include/bitcoin/database/tables/point_set.hpp \
226231
include/bitcoin/database/tables/schema.hpp \
232+
include/bitcoin/database/tables/states.hpp \
227233
include/bitcoin/database/tables/table.hpp \
228234
include/bitcoin/database/tables/tables.hpp
229235

@@ -240,6 +246,7 @@ include_bitcoin_database_tables_archives_HEADERS = \
240246

241247
include_bitcoin_database_tables_cachesdir = ${includedir}/bitcoin/database/tables/caches
242248
include_bitcoin_database_tables_caches_HEADERS = \
249+
include/bitcoin/database/tables/caches/doubles.hpp \
243250
include/bitcoin/database/tables/caches/prevout.hpp \
244251
include/bitcoin/database/tables/caches/validated_bk.hpp \
245252
include/bitcoin/database/tables/caches/validated_tx.hpp

builds/cmake/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,7 @@ if (with-tests)
309309
"../../test/tables/archives/puts.cpp"
310310
"../../test/tables/archives/transaction.cpp"
311311
"../../test/tables/archives/txs.cpp"
312+
"../../test/tables/caches/doubles.cpp"
312313
"../../test/tables/caches/prevout.cpp"
313314
"../../test/tables/caches/validated_bk.cpp"
314315
"../../test/tables/caches/validated_tx.cpp"

builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
<ClCompile Include="..\..\..\..\test\tables\archives\puts.cpp" />
111111
<ClCompile Include="..\..\..\..\test\tables\archives\transaction.cpp" />
112112
<ClCompile Include="..\..\..\..\test\tables\archives\txs.cpp" />
113+
<ClCompile Include="..\..\..\..\test\tables\caches\doubles.cpp" />
113114
<ClCompile Include="..\..\..\..\test\tables\caches\prevout.cpp" />
114115
<ClCompile Include="..\..\..\..\test\tables\caches\validated_bk.cpp" />
115116
<ClCompile Include="..\..\..\..\test\tables\caches\validated_tx.cpp" />

builds/msvc/vs2022/libbitcoin-database-test/libbitcoin-database-test.vcxproj.filters

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,9 @@
153153
<ClCompile Include="..\..\..\..\test\tables\archives\txs.cpp">
154154
<Filter>src\tables\archives</Filter>
155155
</ClCompile>
156+
<ClCompile Include="..\..\..\..\test\tables\caches\doubles.cpp">
157+
<Filter>src\tables\caches</Filter>
158+
</ClCompile>
156159
<ClCompile Include="..\..\..\..\test\tables\caches\prevout.cpp">
157160
<Filter>src\tables\caches</Filter>
158161
</ClCompile>

builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@
9090
</ItemGroup>
9191
<ItemGroup>
9292
<ClInclude Include="..\..\..\..\include\bitcoin\database.hpp" />
93-
<ClInclude Include="..\..\..\..\include\bitcoin\database\association.hpp" />
94-
<ClInclude Include="..\..\..\..\include\bitcoin\database\associations.hpp" />
9593
<ClInclude Include="..\..\..\..\include\bitcoin\database\boost.hpp" />
9694
<ClInclude Include="..\..\..\..\include\bitcoin\database\define.hpp" />
9795
<ClInclude Include="..\..\..\..\include\bitcoin\database\error.hpp" />
@@ -118,6 +116,7 @@
118116
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\hashhead.hpp" />
119117
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\hashmap.hpp" />
120118
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\iterator.hpp" />
119+
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\keys.hpp" />
121120
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\linkage.hpp" />
122121
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\manager.hpp" />
123122
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\nomap.hpp" />
@@ -133,17 +132,24 @@
133132
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\archives\point.hpp" />
134133
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\archives\transaction.hpp" />
135134
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\archives\txs.hpp" />
135+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\association.hpp" />
136+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\associations.hpp" />
137+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\caches\doubles.hpp" />
136138
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\caches\prevout.hpp" />
137139
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\caches\validated_bk.hpp" />
138140
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\caches\validated_tx.hpp" />
139141
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\context.hpp" />
140142
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\event.hpp" />
141143
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\indexes\height.hpp" />
142144
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\indexes\strong_tx.hpp" />
145+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\keys.hpp" />
146+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\names.hpp" />
143147
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\optionals\address.hpp" />
144148
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\optionals\bootstrap.hpp" />
145149
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\optionals\neutrino.hpp" />
150+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\point_set.hpp" />
146151
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\schema.hpp" />
152+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\states.hpp" />
147153
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\table.hpp" />
148154
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\tables.hpp" />
149155
<ClInclude Include="..\..\..\..\include\bitcoin\database\version.hpp" />

builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,6 @@
113113
<ClInclude Include="..\..\..\..\include\bitcoin\database.hpp">
114114
<Filter>include\bitcoin</Filter>
115115
</ClInclude>
116-
<ClInclude Include="..\..\..\..\include\bitcoin\database\association.hpp">
117-
<Filter>include\bitcoin\database</Filter>
118-
</ClInclude>
119-
<ClInclude Include="..\..\..\..\include\bitcoin\database\associations.hpp">
120-
<Filter>include\bitcoin\database</Filter>
121-
</ClInclude>
122116
<ClInclude Include="..\..\..\..\include\bitcoin\database\boost.hpp">
123117
<Filter>include\bitcoin\database</Filter>
124118
</ClInclude>
@@ -197,6 +191,9 @@
197191
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\iterator.hpp">
198192
<Filter>include\bitcoin\database\primitives</Filter>
199193
</ClInclude>
194+
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\keys.hpp">
195+
<Filter>include\bitcoin\database\primitives</Filter>
196+
</ClInclude>
200197
<ClInclude Include="..\..\..\..\include\bitcoin\database\primitives\linkage.hpp">
201198
<Filter>include\bitcoin\database\primitives</Filter>
202199
</ClInclude>
@@ -242,6 +239,15 @@
242239
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\archives\txs.hpp">
243240
<Filter>include\bitcoin\database\tables\archives</Filter>
244241
</ClInclude>
242+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\association.hpp">
243+
<Filter>include\bitcoin\database\tables</Filter>
244+
</ClInclude>
245+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\associations.hpp">
246+
<Filter>include\bitcoin\database\tables</Filter>
247+
</ClInclude>
248+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\caches\doubles.hpp">
249+
<Filter>include\bitcoin\database\tables\caches</Filter>
250+
</ClInclude>
245251
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\caches\prevout.hpp">
246252
<Filter>include\bitcoin\database\tables\caches</Filter>
247253
</ClInclude>
@@ -263,6 +269,12 @@
263269
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\indexes\strong_tx.hpp">
264270
<Filter>include\bitcoin\database\tables\indexes</Filter>
265271
</ClInclude>
272+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\keys.hpp">
273+
<Filter>include\bitcoin\database\tables</Filter>
274+
</ClInclude>
275+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\names.hpp">
276+
<Filter>include\bitcoin\database\tables</Filter>
277+
</ClInclude>
266278
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\optionals\address.hpp">
267279
<Filter>include\bitcoin\database\tables\optionals</Filter>
268280
</ClInclude>
@@ -272,9 +284,15 @@
272284
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\optionals\neutrino.hpp">
273285
<Filter>include\bitcoin\database\tables\optionals</Filter>
274286
</ClInclude>
287+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\point_set.hpp">
288+
<Filter>include\bitcoin\database\tables</Filter>
289+
</ClInclude>
275290
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\schema.hpp">
276291
<Filter>include\bitcoin\database\tables</Filter>
277292
</ClInclude>
293+
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\states.hpp">
294+
<Filter>include\bitcoin\database\tables</Filter>
295+
</ClInclude>
278296
<ClInclude Include="..\..\..\..\include\bitcoin\database\tables\table.hpp">
279297
<Filter>include\bitcoin\database\tables</Filter>
280298
</ClInclude>

include/bitcoin/database.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
*/
1616

1717
#include <bitcoin/system.hpp>
18-
#include <bitcoin/database/association.hpp>
19-
#include <bitcoin/database/associations.hpp>
2018
#include <bitcoin/database/boost.hpp>
2119
#include <bitcoin/database/define.hpp>
2220
#include <bitcoin/database/error.hpp>
@@ -47,13 +45,20 @@
4745
#include <bitcoin/database/primitives/hashhead.hpp>
4846
#include <bitcoin/database/primitives/hashmap.hpp>
4947
#include <bitcoin/database/primitives/iterator.hpp>
48+
#include <bitcoin/database/primitives/keys.hpp>
5049
#include <bitcoin/database/primitives/linkage.hpp>
5150
#include <bitcoin/database/primitives/manager.hpp>
5251
#include <bitcoin/database/primitives/nomap.hpp>
5352
#include <bitcoin/database/primitives/primitives.hpp>
53+
#include <bitcoin/database/tables/association.hpp>
54+
#include <bitcoin/database/tables/associations.hpp>
5455
#include <bitcoin/database/tables/context.hpp>
5556
#include <bitcoin/database/tables/event.hpp>
57+
#include <bitcoin/database/tables/keys.hpp>
58+
#include <bitcoin/database/tables/names.hpp>
59+
#include <bitcoin/database/tables/point_set.hpp>
5660
#include <bitcoin/database/tables/schema.hpp>
61+
#include <bitcoin/database/tables/states.hpp>
5762
#include <bitcoin/database/tables/table.hpp>
5863
#include <bitcoin/database/tables/tables.hpp>
5964
#include <bitcoin/database/tables/archives/header.hpp>
@@ -64,6 +69,7 @@
6469
#include <bitcoin/database/tables/archives/point.hpp>
6570
#include <bitcoin/database/tables/archives/transaction.hpp>
6671
#include <bitcoin/database/tables/archives/txs.hpp>
72+
#include <bitcoin/database/tables/caches/doubles.hpp>
6773
#include <bitcoin/database/tables/caches/prevout.hpp>
6874
#include <bitcoin/database/tables/caches/validated_bk.hpp>
6975
#include <bitcoin/database/tables/caches/validated_tx.hpp>

include/bitcoin/database/define.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ static_assert(sizeof(void*) == sizeof(uint64_t), "Not a 64 bit system!");
4848
namespace libbitcoin {
4949
namespace database {
5050

51+
using hash_digest = system::hash_digest;
52+
using hashes = system::hashes;
5153
using code = system::code;
5254

5355
} // namespace database

include/bitcoin/database/error.hpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,6 @@ enum error_t : uint8_t
4747
integrity8,
4848
integrity9,
4949
integrity10,
50-
integrity11,
51-
integrity12,
52-
integrity13,
53-
integrity14,
54-
integrity15,
55-
integrity16,
56-
integrity17,
5750

5851
/// memory map
5952
open_open,

include/bitcoin/database/impl/primitives/arrayhead.ipp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,8 @@ inline size_t CLASS::size() const NOEXCEPT
4141
TEMPLATE
4242
inline size_t CLASS::buckets() const NOEXCEPT
4343
{
44-
const auto count = position_to_link(size()).value;
45-
BC_ASSERT(count < Link::terminal);
46-
return system::possible_narrow_cast<size_t>(count);
44+
using namespace system;
45+
return possible_narrow_cast<size_t>(position_to_link(size()).value);
4746
}
4847

4948
TEMPLATE
@@ -99,7 +98,7 @@ TEMPLATE
9998
bool CLASS::get_body_count(Link& count) const NOEXCEPT
10099
{
101100
const auto ptr = file_.get();
102-
if (!ptr || size_ > size())
101+
if (!ptr || bucket_size > size())
103102
return false;
104103

105104
count = to_array<Link::size>(ptr->data());
@@ -110,7 +109,7 @@ TEMPLATE
110109
bool CLASS::set_body_count(const Link& count) NOEXCEPT
111110
{
112111
const auto ptr = file_.get();
113-
if (!ptr || size_ > size())
112+
if (!ptr || bucket_size > size())
114113
return false;
115114

116115
// If head is padded then last bytes are fill (0xff).
@@ -141,7 +140,7 @@ Link CLASS::at(size_t key) const NOEXCEPT
141140
}
142141
else
143142
{
144-
const auto& head = to_array<size_>(ptr->data());
143+
const auto& head = to_array<bucket_size>(ptr->data());
145144
mutex_.lock_shared();
146145
const auto top = head;
147146
mutex_.unlock_shared();
@@ -156,7 +155,7 @@ bool CLASS::push(const Link& link, const Link& index) NOEXCEPT
156155
constexpr auto fill = bit_all<uint8_t>;
157156

158157
// Allocate as necessary and fill allocations.
159-
const auto ptr = file_.set(link_to_position(index), size_, fill);
158+
const auto ptr = file_.set(link_to_position(index), bucket_size, fill);
160159
if (is_null(ptr))
161160
return false;
162161

@@ -172,7 +171,7 @@ bool CLASS::push(const Link& link, const Link& index) NOEXCEPT
172171
else
173172
{
174173
bytes current = link;
175-
auto& head = to_array<size_>(ptr->data());
174+
auto& head = to_array<bucket_size>(ptr->data());
176175

177176
mutex_.lock();
178177
head = std::move(current);

0 commit comments

Comments
 (0)