Resolve conflict
[darcs-mirrors/vector.git] / internal / GenUnboxTuple.hs
index 8b43975..633e7f1 100644 (file)
@@ -52,13 +52,14 @@ generate n =
 
 
     define_zip ty c
-      = sep [name <+> text "::"
+      = sep [text "-- | /O(1)/ Zip" <+> int n <+> text "vectors"
+            ,name <+> text "::"
                   <+> vtuple [text "Unbox" <+> v | v <- vars]
                   <+> text "=>"
                   <+> sep (punctuate (text " ->") [text ty <+> v | v <- vars])
                   <+> text "->"
                   <+> text ty <+> tuple vars
-             ,text "{-# INLINE_STREAM"  <+> name <+> text "#-}"
+             ,text "{-# INLINE_FUSED"  <+> name <+> text "#-}"
              ,name <+> sep varss
                    <+> text "="
                    <+> con c
@@ -70,7 +71,7 @@ generate n =
              ,nest 2 $ hang (text "where")
                             2
                      $ text "len ="
-                       <+> sep (punctuate (text " `min`")
+                       <+> sep (punctuate (text " `delayed_min`")
                                           [text "length" <+> vs | vs <- varss])
              ]
       where
@@ -83,7 +84,7 @@ generate n =
              2 $
              text "G.stream" <+> parens (name "zip" <+> sep varss)
              <+> char '='
-             <+> text "Stream." <> name "zipWith" <+> tuple (replicate n empty)
+             <+> text "Bundle." <> name "zipWith" <+> tuple (replicate n empty)
              <+> sep [parens $ text "G.stream" <+> vs | vs <- varss]
              $$ text "#-}"
      where
@@ -92,7 +93,8 @@ generate n =
        
 
     define_unzip ty c
-      = sep [name <+> text "::"
+      = sep [text "-- | /O(1)/ Unzip" <+> int n <+> text "vectors"
+            ,name <+> text "::"
                   <+> vtuple [text "Unbox" <+> v | v <- vars]
                   <+> text "=>"
                   <+> text ty <+> tuple vars
@@ -133,7 +135,7 @@ generate n =
          mk_do [v <+> text "<-" <+> qM rec <+> var 'n' | v <- varss]
                $ text "return $" <+> con "MV" <+> var 'n' <+> sep varss)
 
-    gen_unsafeNewWith rec
+    gen_unsafeReplicate rec
       = (var 'n' <+> tuple vars,
          mk_do [vs <+> text "<-" <+> qM rec <+> var 'n' <+> v
                         | v  <- vars | vs <- varss]
@@ -162,6 +164,11 @@ generate n =
          mk_do [q rec <+> vs <> char '1' <+> vs <> char '2' | vs <- varss]
                empty)
 
+    gen_unsafeMove rec
+      = (patn "MV" 1 <+> patn "MV" 2,
+         mk_do [qM rec <+> vs <> char '1' <+> vs <> char '2' | vs <- varss]
+               empty)
+
     gen_unsafeGrow rec
       = (pat "MV" <+> var 'm',
          mk_do [vs <> char '\'' <+> text "<-"
@@ -176,6 +183,12 @@ generate n =
                $ text "return $" <+> con "V" <+> var 'n'
                                  <+> sep [vs <> char '\'' | vs <- varss])
 
+    gen_unsafeThaw rec
+      = (pat "V",
+         mk_do [vs <> char '\'' <+> text "<-" <+> qG rec <+> vs | vs <- varss]
+               $ text "return $" <+> con "MV" <+> var 'n'
+                                 <+> sep [vs <> char '\'' | vs <- varss])
+
     gen_basicUnsafeIndexM rec
       = (pat "V" <+> var 'i',
          mk_do [v <+> text "<-" <+> qG rec <+> vs <+> var 'i'
@@ -204,15 +217,17 @@ generate n =
                       ,("basicUnsafeSlice",       gen_unsafeSlice "M" "MV")
                       ,("basicOverlaps",          gen_overlaps)
                       ,("basicUnsafeNew",         gen_unsafeNew)
-                      ,("basicUnsafeNewWith",     gen_unsafeNewWith)
+                      ,("basicUnsafeReplicate",   gen_unsafeReplicate)
                       ,("basicUnsafeRead",        gen_unsafeRead)
                       ,("basicUnsafeWrite",       gen_unsafeWrite)
                       ,("basicClear",             gen_clear)
                       ,("basicSet",               gen_set)
                       ,("basicUnsafeCopy",        gen_unsafeCopy "MV" qM)
+                      ,("basicUnsafeMove",        gen_unsafeMove)
                       ,("basicUnsafeGrow",        gen_unsafeGrow)]
 
-    methods_Vector  = [("unsafeFreeze",           gen_unsafeFreeze)
+    methods_Vector  = [("basicUnsafeFreeze",      gen_unsafeFreeze)
+                      ,("basicUnsafeThaw",        gen_unsafeThaw)
                       ,("basicLength",            gen_length "V")
                       ,("basicUnsafeSlice",       gen_unsafeSlice "G" "V")
                       ,("basicUnsafeIndexM",      gen_basicUnsafeIndexM)