diff --git a/divine/mc/weaver.hpp b/divine/mc/weaver.hpp index 6e9282827a057752ae9057587272dc6f03cbc007..3bd43d8042c1b40ef2b8847cfdf84debefc1d0dc 100644 --- a/divine/mc/weaver.hpp +++ b/divine/mc/weaver.hpp @@ -114,6 +114,13 @@ namespace divine::mc return Extend< ExMachines... >( std::tuple_cat( _machines, ext ) ); } + template< typename... ExMachines > + auto prepend( ExMachines... exm ) + { + std::tuple< ExMachines... > ext( exm... ); + return Weaver< TQ, ExMachines..., Machines... >( std::tuple_cat( ext, _machines ) ); + } + template< typename M > struct Ref : std::reference_wrapper< M > { @@ -172,6 +179,12 @@ namespace divine::mc return extend( Lambda< F >( fs ) ... ); } + template< typename... F > + auto prepend_f( F... fs ) + { + return prepend( Lambda< F >( fs ) ... ); + } + Weaver( MachineT mt ) : _machines( mt ) {} Weaver() = default;