From 7f63973c944edc4fb0c593182741ab6524bd22c6 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (laptop)" <j.wuttke@fz-juelich.de>
Date: Fri, 18 Mar 2011 17:41:38 +0100
Subject: [PATCH] icurve/extern interface

---
 pub/src/curve.cpp        |  20 +++++++++++++++-----
 pub/test/test_curve_ci   | Bin 13351 -> 13639 bytes
 pub/test/test_curve_ci.c |   9 ++++++++-
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/pub/src/curve.cpp b/pub/src/curve.cpp
index f727dd50..bc0682ca 100644
--- a/pub/src/curve.cpp
+++ b/pub/src/curve.cpp
@@ -117,8 +117,8 @@ ask_again:
             "  - 1*int:    the number of data points N\n"
             "  - N*double: the data points\n"
             "- write to stdout a whitespace separated list of:\n"
-            "  - N*double: the curve values\n";
-        // "for examples, see /usr/local/share/frida/demo-curve-c"
+            "  - N*double: the curve values\n"
+            "- write to error messages to stderr\n";
         goto ask_again;
     } else if ( resp=="hci" ) {
         cout <<
@@ -127,8 +127,8 @@ ask_again:
             "  - 1*int:      the number of parameters M\n"
             "  - M*double:   the parameters\n"
             "- write to stdout a whitespace separated list of:\n"
-            "  - 1*int:      the number of data pairs N\n"
-            "  - N*2*double: a sequence of data pairs: x0 y0 x1 y1 x2 y2 ...\n";
+            "  - N*2*double: a sequence of data pairs: x0 y0 x1 y1 x2 y2 ...\n"
+            "- write to error messages to stderr\n";
         goto ask_again;
     } else if ( resp=="c" ) {
         evaMode = COlc::_SCR;
@@ -198,10 +198,20 @@ void COlc::curve_val_vec( vector<double>* ret, const vector<double>& vt,
             throw "SYSTEM ERROR cannot open " + par_fifonam;
         fcntl( par_fifo, F_SETFL, O_NONBLOCK);
 
-        for( uint ip=0; ip<nPar(); ++ip ) {
+        string out = str( format("%i ") % nPar() );
+        write( par_fifo, out.c_str(), out.size() );
+        for ( uint ip=0; ip<nPar(); ++ip ) {
             string out = str( format("%g ") % VC(j)->P[ip] );
             write( par_fifo, out.c_str(), out.size() );
         }
+        if ( evaMode==_SCR ) {
+            string out = str( format("%i ") % nPar() );
+            write( par_fifo, out.c_str(), out.size() );
+            for ( uint i=0; i<vt.size(); ++i ) {
+                string out = str( format("%g ") % vt[i] );
+                write( par_fifo, out.c_str(), out.size() );
+            }
+        }
         close( par_fifo );
 
         CSpec S;
diff --git a/pub/test/test_curve_ci b/pub/test/test_curve_ci
index ee20313a3181fef88ef0b91658c96cc9875c3171..e38ef910ce71e1dc6363afe3a7630cbfc9daa0eb 100755
GIT binary patch
delta 2882
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
F0|0d!DGvYu

delta 2604
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

diff --git a/pub/test/test_curve_ci.c b/pub/test/test_curve_ci.c
index 2712f755..92db4b8f 100644
--- a/pub/test/test_curve_ci.c
+++ b/pub/test/test_curve_ci.c
@@ -52,9 +52,16 @@ int main( int argc, char **argv )
 
     // Read parameters from stdin:
     // fprintf( stderr, "# test_curve_ci\n" );
+    scanf( "%i", &m );
+    if ( m!= M+1 ) {
+        fprintf( stderr,
+                 "inconsistent number of parameters: %i offered, %i needed\n",
+                 m, M+1 );
+        return -1;
+    }
     scanf( "%lg", &t0 );
     // fprintf( stderr, "# t0 %g\n", t0 );
-    for( m=0; m<M; ++m ) {
+    for ( m=0; m<M; ++m ) {
         double val;
         scanf( "%lg", &val );
         P.k[m] = val>0 ? val : 0;
-- 
GitLab