From a0707c16650be5c28e3460bbc4f46d9c7959fa75 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Fri, 23 Dec 2011 13:59:45 +0100
Subject: [PATCH] Adjust octave bindings to shared pointer interface

---
 src/octave/duneevaluate.cc | 21 +++++++++++++--------
 src/octave/duneminimise.cc | 21 +++++++++++++--------
 2 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/src/octave/duneevaluate.cc b/src/octave/duneevaluate.cc
index caf56689..d1f4830d 100644
--- a/src/octave/duneevaluate.cc
+++ b/src/octave/duneevaluate.cc
@@ -4,6 +4,8 @@
 #include "config.h"
 #endif
 
+#include <dune/common/shared_ptr.hh>
+
 #include <dune/tectonic/octave/duneoctave.hh>
 #include <dune/tectonic/samplefunctional.hh>
 
@@ -25,22 +27,25 @@ Evaluate x -> 1/2<Ax,x> - <b,x> + H(|x|) at each point y that is a column vector
   Functional::SmallVector b;
   Dune::octaveToDune<dim>(args(1).vector_value(), b);
 
-  Dune::SampleFunction<100> f_steep;
-  Dune::SampleFunction<2> f_sample;
+  Dune::shared_ptr<Functional::NonlinearityType const> phi;
 
   charNDArray bar = args(2).char_array_value();
-  Dune::NiceFunction *foo;
   switch (bar(0)) {
-    case 'S':
-      foo = &f_steep;
+    case 'S': {
+      Dune::NiceFunction const *pre_f = new Dune::SampleFunction<100>();
+      Dune::shared_ptr<Dune::NiceFunction const> f(pre_f);
+      phi = Dune::make_shared<Functional::NonlinearityType const>(f);
       break;
-    case 's':
-      foo = &f_sample;
+    }
+    case 's': {
+      Dune::NiceFunction const *pre_f = new Dune::SampleFunction<2>();
+      Dune::shared_ptr<Dune::NiceFunction const> f(pre_f);
+      phi = Dune::make_shared<Functional::NonlinearityType const>(f);
       break;
+    }
     default:
       assert(false);
   }
-  Dune::LocalNonlinearity<dim> phi(*foo);
   Functional J(A, b, phi);
 
   Matrix points(args(3).matrix_value());
diff --git a/src/octave/duneminimise.cc b/src/octave/duneminimise.cc
index 0370664f..17da877e 100644
--- a/src/octave/duneminimise.cc
+++ b/src/octave/duneminimise.cc
@@ -4,6 +4,8 @@
 #include "config.h"
 #endif
 
+#include <dune/common/shared_ptr.hh>
+
 #include <dune/tectonic/octave/duneoctave.hh>
 #include <dune/tectonic/samplefunctional.hh>
 
@@ -25,22 +27,25 @@ Make a minimisation step of x -> 1/2<Ax,x> - <b,x> + H(|x|) using DUNE starting
   Functional::SmallVector b;
   Dune::octaveToDune<dim>(args(1).vector_value(), b);
 
-  Dune::SampleFunction<100> f_steep;
-  Dune::SampleFunction<2> f_sample;
+  Dune::shared_ptr<Functional::NonlinearityType const> phi;
 
   charNDArray bar = args(2).char_array_value();
-  Dune::NiceFunction *foo;
   switch (bar(0)) {
-    case 'S':
-      foo = &f_steep;
+    case 'S': {
+      Dune::NiceFunction const *pre_f = new Dune::SampleFunction<100>();
+      Dune::shared_ptr<Dune::NiceFunction const> f(pre_f);
+      phi = Dune::make_shared<Functional::NonlinearityType const>(f);
       break;
-    case 's':
-      foo = &f_sample;
+    }
+    case 's': {
+      Dune::NiceFunction const *pre_f = new Dune::SampleFunction<2>();
+      Dune::shared_ptr<Dune::NiceFunction const> f(pre_f);
+      phi = Dune::make_shared<Functional::NonlinearityType const>(f);
       break;
+    }
     default:
       assert(false);
   }
-  Dune::LocalNonlinearity<dim> phi(*foo);
   Functional J(A, b, phi);
 
   ColumnVector start_octave(args(3).vector_value());
-- 
GitLab