Skip to content

Commit

Permalink
Merge pull request libbitcoin#1361 from evoskuil/master
Browse files Browse the repository at this point in the history
Implementation and test of simple streams.
  • Loading branch information
evoskuil authored May 2, 2023
2 parents f112434 + 59f6cf3 commit 3f0b80d
Show file tree
Hide file tree
Showing 22 changed files with 1,150 additions and 31 deletions.
14 changes: 14 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,9 @@ test_libbitcoin_system_test_SOURCES = \
test/stream/devices/copy_source.cpp \
test/stream/devices/flip_sink.cpp \
test/stream/devices/push_sink.cpp \
test/stream/simple/iostream.cpp \
test/stream/simple/istream.cpp \
test/stream/simple/ostream.cpp \
test/stream/streamers/bit_flipper.cpp \
test/stream/streamers/bit_reader.cpp \
test/stream/streamers/bit_writer.cpp \
Expand Down Expand Up @@ -644,6 +647,11 @@ include_bitcoin_system_impl_streamdir = ${includedir}/bitcoin/system/impl/stream
include_bitcoin_system_impl_stream_HEADERS = \
include/bitcoin/system/impl/stream/device.ipp

include_bitcoin_system_impl_stream_simpledir = ${includedir}/bitcoin/system/impl/stream/simple
include_bitcoin_system_impl_stream_simple_HEADERS = \
include/bitcoin/system/impl/stream/simple/istream.ipp \
include/bitcoin/system/impl/stream/simple/ostream.ipp

include_bitcoin_system_impl_stream_streamersdir = ${includedir}/bitcoin/system/impl/stream/streamers
include_bitcoin_system_impl_stream_streamers_HEADERS = \
include/bitcoin/system/impl/stream/streamers/bit_reader.ipp \
Expand Down Expand Up @@ -747,6 +755,12 @@ include_bitcoin_system_stream_devices_HEADERS = \
include/bitcoin/system/stream/devices/flip_sink.hpp \
include/bitcoin/system/stream/devices/push_sink.hpp

include_bitcoin_system_stream_simpledir = ${includedir}/bitcoin/system/stream/simple
include_bitcoin_system_stream_simple_HEADERS = \
include/bitcoin/system/stream/simple/iostream.hpp \
include/bitcoin/system/stream/simple/istream.hpp \
include/bitcoin/system/stream/simple/ostream.hpp

include_bitcoin_system_stream_streamersdir = ${includedir}/bitcoin/system/stream/streamers
include_bitcoin_system_stream_streamers_HEADERS = \
include/bitcoin/system/stream/streamers/bit_flipper.hpp \
Expand Down
3 changes: 3 additions & 0 deletions builds/cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -817,6 +817,9 @@ if (with-tests)
"../../test/stream/devices/copy_source.cpp"
"../../test/stream/devices/flip_sink.cpp"
"../../test/stream/devices/push_sink.cpp"
"../../test/stream/simple/iostream.cpp"
"../../test/stream/simple/istream.cpp"
"../../test/stream/simple/ostream.cpp"
"../../test/stream/streamers/bit_flipper.cpp"
"../../test/stream/streamers/bit_reader.cpp"
"../../test/stream/streamers/bit_writer.cpp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,9 @@
<ClCompile Include="..\..\..\..\test\stream\devices\copy_source.cpp" />
<ClCompile Include="..\..\..\..\test\stream\devices\flip_sink.cpp" />
<ClCompile Include="..\..\..\..\test\stream\devices\push_sink.cpp" />
<ClCompile Include="..\..\..\..\test\stream\simple\iostream.cpp" />
<ClCompile Include="..\..\..\..\test\stream\simple\istream.cpp" />
<ClCompile Include="..\..\..\..\test\stream\simple\ostream.cpp" />
<ClCompile Include="..\..\..\..\test\stream\stream.cpp">
<ObjectFileName>$(IntDir)test_stream_stream.obj</ObjectFileName>
</ClCompile>
Expand Down Expand Up @@ -343,6 +346,11 @@
<Error Condition="!Exists('$(NuGetPackageRoot)secp256k1_vc143.0.1.0.20\build\native\secp256k1_vc143.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(NuGetPackageRoot)secp256k1_vc143.0.1.0.20\build\native\secp256k1_vc143.targets'))" />
<Error Condition="!Exists('$(NuGetPackageRoot)boost_unit_test_framework-vc143.1.78.0\build\boost_unit_test_framework-vc143.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(NuGetPackageRoot)boost_unit_test_framework-vc143.1.78.0\build\boost_unit_test_framework-vc143.targets'))" />
</Target>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseSEXE|x64'">
<PostBuildEvent>
<Command>"$(TargetPath)" --run_test=istream_tests --show_progress=no --build_info=yes</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ProjectReference Include="..\libbitcoin-system\libbitcoin-system.vcxproj">
<Project>{39F60708-FF48-4C22-952D-43470866F684}</Project>
Expand All @@ -351,4 +359,4 @@
<ItemGroup>
<Natvis Include="..\..\debug.natvis" />
</ItemGroup>
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -73,32 +73,35 @@
<Filter Include="src\stream\devices">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-000000000009}</UniqueIdentifier>
</Filter>
<Filter Include="src\stream\streamers">
<Filter Include="src\stream\simple">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-000000000010}</UniqueIdentifier>
</Filter>
<Filter Include="src\stream\streamers">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000A1}</UniqueIdentifier>
</Filter>
<Filter Include="src\unicode">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-00000000000E}</UniqueIdentifier>
</Filter>
<Filter Include="src\unicode\utf8_everywhere">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000A1}</UniqueIdentifier>
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000B1}</UniqueIdentifier>
</Filter>
<Filter Include="src\wallet">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-00000000000F}</UniqueIdentifier>
</Filter>
<Filter Include="src\wallet\addresses">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000B1}</UniqueIdentifier>
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000C1}</UniqueIdentifier>
</Filter>
<Filter Include="src\wallet\keys">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000C1}</UniqueIdentifier>
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000D1}</UniqueIdentifier>
</Filter>
<Filter Include="src\wallet\mnemonics">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000D1}</UniqueIdentifier>
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000E1}</UniqueIdentifier>
</Filter>
<Filter Include="src\words">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-000000000001}</UniqueIdentifier>
</Filter>
<Filter Include="src\words\catalogs">
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000E1}</UniqueIdentifier>
<UniqueIdentifier>{51A424A9-2C12-4211-0000-0000000000F1}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
Expand Down Expand Up @@ -465,6 +468,15 @@
<ClCompile Include="..\..\..\..\test\stream\devices\push_sink.cpp">
<Filter>src\stream\devices</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\stream\simple\iostream.cpp">
<Filter>src\stream\simple</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\stream\simple\istream.cpp">
<Filter>src\stream\simple</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\stream\simple\ostream.cpp">
<Filter>src\stream\simple</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\test\stream\stream.cpp">
<Filter>src\stream</Filter>
</ClCompile>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,9 @@
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\devices\push_sink.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\make_stream.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\make_streamer.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\simple\iostream.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\simple\istream.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\simple\ostream.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\stream.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\stream_result.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\streamers.hpp" />
Expand Down Expand Up @@ -556,6 +559,8 @@
<None Include="..\..\..\..\include\bitcoin\system\impl\serial\deserialize.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\serial\serialize.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\device.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\simple\istream.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\simple\ostream.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\streamers\bit_reader.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\streamers\bit_writer.ipp" />
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\streamers\byte_reader.ipp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,17 @@
<Filter Include="include\bitcoin\system\impl\stream">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000010}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\impl\stream\streamers">
<Filter Include="include\bitcoin\system\impl\stream\simple">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000C3}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\impl\stream\streamers">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000D3}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\impl\wallet">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000011}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\impl\wallet\addresses">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000D3}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000E3}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\impl\words">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000012}</UniqueIdentifier>
Expand All @@ -98,10 +101,10 @@
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000005}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\intrinsics\arm">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000E3}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000F3}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\intrinsics\xcpu">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000F3}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000004}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\machine">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000006}</UniqueIdentifier>
Expand All @@ -119,40 +122,43 @@
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000010}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\stream\devices">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000004}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000005}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\stream\simple">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000006}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\stream\streamers">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000005}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000007}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\stream\streamers\interfaces">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000006}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000008}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\unicode">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000011}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\unicode\utf8_everywhere">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000007}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000009}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\wallet">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000A2}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\wallet\addresses">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000008}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000010}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\wallet\keys">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000009}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000011}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\wallet\mnemonics">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000010}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000012}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\words">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000B2}</UniqueIdentifier>
</Filter>
<Filter Include="include\bitcoin\system\words\catalogs">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000011}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000013}</UniqueIdentifier>
</Filter>
<Filter Include="resource">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000012}</UniqueIdentifier>
<UniqueIdentifier>{39F60708-FF48-4C22-0000-0000000000A4}</UniqueIdentifier>
</Filter>
<Filter Include="src">
<UniqueIdentifier>{39F60708-FF48-4C22-0000-000000000000}</UniqueIdentifier>
Expand Down Expand Up @@ -1100,6 +1106,15 @@
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\make_streamer.hpp">
<Filter>include\bitcoin\system\stream</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\simple\iostream.hpp">
<Filter>include\bitcoin\system\stream\simple</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\simple\istream.hpp">
<Filter>include\bitcoin\system\stream\simple</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\simple\ostream.hpp">
<Filter>include\bitcoin\system\stream\simple</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\system\stream\stream.hpp">
<Filter>include\bitcoin\system\stream</Filter>
</ClInclude>
Expand Down Expand Up @@ -1537,6 +1552,12 @@
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\device.ipp">
<Filter>include\bitcoin\system\impl\stream</Filter>
</None>
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\simple\istream.ipp">
<Filter>include\bitcoin\system\impl\stream\simple</Filter>
</None>
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\simple\ostream.ipp">
<Filter>include\bitcoin\system\impl\stream\simple</Filter>
</None>
<None Include="..\..\..\..\include\bitcoin\system\impl\stream\streamers\bit_reader.ipp">
<Filter>include\bitcoin\system\impl\stream\streamers</Filter>
</None>
Expand Down
3 changes: 3 additions & 0 deletions include/bitcoin/system.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,9 @@
#include <bitcoin/system/stream/devices/copy_source.hpp>
#include <bitcoin/system/stream/devices/flip_sink.hpp>
#include <bitcoin/system/stream/devices/push_sink.hpp>
#include <bitcoin/system/stream/simple/iostream.hpp>
#include <bitcoin/system/stream/simple/istream.hpp>
#include <bitcoin/system/stream/simple/ostream.hpp>
#include <bitcoin/system/stream/streamers/bit_flipper.hpp>
#include <bitcoin/system/stream/streamers/bit_reader.hpp>
#include <bitcoin/system/stream/streamers/bit_writer.hpp>
Expand Down
2 changes: 2 additions & 0 deletions include/bitcoin/system/chain/operation.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,8 @@ class BC_API operation
nominal_opcode_from_data(push_data);
}

// TODO: use std::optional vs. nullable data member.
// TODO: use std::unique_ptr for chunk and xptr on the stack.
// Operation should not be stored as shared (adds 16 bytes).
// copy: 8 + 2 * 64 + 1 = 18 bytes (vs. 16 when shared).
opcode code_;
Expand Down
Loading

0 comments on commit 3f0b80d

Please sign in to comment.