From e8c4dead5cffca4c957c23cc4ac8add27a043737 Mon Sep 17 00:00:00 2001
From: Petr Rockai <me@mornfall.net>
Date: Sun, 23 Jun 2019 20:40:28 +0000
Subject: [PATCH] MC: Add prepend{,_f} methods to Weaver.

---
 divine/mc/weaver.hpp | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/divine/mc/weaver.hpp b/divine/mc/weaver.hpp
index 6e9282827..3bd43d804 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;
 
-- 
GitLab