From c27af57546fd5cbd3946cc754905bf32665f84aa Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Mon, 26 Oct 2015 09:23:45 +0100
Subject: [PATCH] sort using lambda

---
 pub/lib/manip.cpp | 13 ++++++++++++-
 pub/lib/slice.cpp | 16 ----------------
 pub/lib/slice.hpp |  5 -----
 3 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/pub/lib/manip.cpp b/pub/lib/manip.cpp
index 14dea044..a6cf2b7d 100644
--- a/pub/lib/manip.cpp
+++ b/pub/lib/manip.cpp
@@ -757,7 +757,18 @@ void NManip::slices_sort_by_z()
         POlo fout( fin->new_olo() );
         for (int j=0; j<fin->nJ(); j++)
             fout->V.push_back( fin->new_slice( j ) );
-        sort( fout->V.begin(), fout->V.end(), CompareZ );
+        sort( fout->V.begin(), fout->V.end(), []( const RSlice& E1, const RSlice& E2 ) {
+                if( E1->z.size()!=E2->z.size() )
+                    throw S("BUG: inconsistent z.size in CompareZ");
+                int nz = E1->z.size();
+                for( int iz=0; iz<nz; ++iz ){
+                    if    ( E1->z[iz]->to_r() > E2->z[iz]->to_r() )
+                        return false;
+                    if    ( E1->z[iz]->to_r() < E2->z[iz]->to_r() )
+                        return true;
+                }
+                return false;
+            } );
         NOlm::mem_store( fout, fiter.k() );
     }
 }
diff --git a/pub/lib/slice.cpp b/pub/lib/slice.cpp
index 115f1d72..ac8a4df7 100644
--- a/pub/lib/slice.cpp
+++ b/pub/lib/slice.cpp
@@ -52,22 +52,6 @@ vector<string> CSlice::z_str() const
     return ret;
 }
 
-//! Compares z vectors of two CSlice', for use in sort routine.
-
-bool CompareZ( const RSlice& E1, const RSlice& E2 )
-{
-    if( E1->z.size()!=E2->z.size() )
-        throw S("BUG: inconsistent z.size in CompareZ");
-    int nz = E1->z.size();
-    for( int iz=0; iz<nz; ++iz ){
-        if    ( E1->z[iz]->to_r() > E2->z[iz]->to_r() )
-            return false;
-        if    ( E1->z[iz]->to_r() < E2->z[iz]->to_r() )
-            return true;
-    }
-    return false;
-}
-
 
 //**************************************************************************************************
 //*  class CSpec
diff --git a/pub/lib/slice.hpp b/pub/lib/slice.hpp
index 48cae719..39f83093 100644
--- a/pub/lib/slice.hpp
+++ b/pub/lib/slice.hpp
@@ -65,8 +65,3 @@ class CCurve: public CSlice {
     bool has_global_par() const;
     string info_line() const;
 };
-
-
-//! at global scope, for use in sorting.
-
-bool CompareZ( const RSlice& E1, const RSlice& E2 );
-- 
GitLab