| 17 | #include <iostream> |
| 18 | |
| 19 | struct ScriptInputGenerator { |
| 20 | const InputView &inputView; |
| 21 | const blocksci::CScriptView &scriptView; |
| 22 | const RawTransaction &tx; |
| 23 | ScriptInputGenerator(const InputView &inputView_, const blocksci::CScriptView &scriptView_, const RawTransaction &tx_) : inputView(inputView_), scriptView(scriptView_), tx(tx_) {} |
| 24 | |
| 25 | template <blocksci::AddressType::Enum type> |
| 26 | ScriptInputType operator()(const SpendData<type> &spendData) const { |
| 27 | return ScriptInput<type>(inputView, scriptView, tx, spendData); |
| 28 | } |
| 29 | }; |
| 30 | |
| 31 | AnyScriptInput::AnyScriptInput(const InputView &inputView, const blocksci::CScriptView &scriptView, const RawTransaction &tx, const AnySpendData &spendData) : wrapped(mpark::visit(ScriptInputGenerator(inputView, scriptView, tx), spendData.wrapped)) {} |
| 32 | |