]> git.mxchange.org Git - simgear.git/commitdiff
Native SGPath API on SGInterpTable
authorJames Turner <zakalawe@mac.com>
Thu, 23 Jun 2016 14:21:26 +0000 (15:21 +0100)
committerRoland Haeder <roland@mxchange.org>
Sat, 13 Aug 2016 08:21:16 +0000 (10:21 +0200)
- string-based version will be removed in the future.

simgear/math/interpolater.cxx
simgear/math/interpolater.hxx

index b9526ea985b0728de04b507d8c5448ff373ed0ad..cbbb31cfa790582d630b684bb8d98028f185462c 100644 (file)
@@ -64,6 +64,28 @@ SGInterpTable::SGInterpTable( const std::string& file )
         return;
     }
 
+    in >> skipcomment;
+    while ( in ) {
+        double ind, dep;
+        in >> ind >> dep;
+        in >> std::skipws;
+        _table[ind] = dep;
+    }
+}
+
+
+// Constructor -- loads the interpolation table from the specified
+// file
+SGInterpTable::SGInterpTable( const SGPath& file )
+{
+    SG_LOG( SG_MATH, SG_INFO, "Initializing Interpolator for " << file );
+
+    sg_gzifstream in( file );
+    if ( !in.is_open() ) {
+        SG_LOG( SG_GENERAL, SG_ALERT, "Cannot open file: " << file );
+        return;
+    }
+
     in >> skipcomment;
     while ( in ) {
       double ind, dep;
index 34dff6260cd39e2e3962ebe17001fcc142551cf7..5f9285025e3e0a148ab50f1a8c17048bbf811ce5 100644 (file)
@@ -41,6 +41,7 @@
 #include <string>
 
 class SGPropertyNode;
+class SGPath;
 
 /**
  * A class that provids a simple linear 2d interpolation lookup table.
@@ -69,7 +70,12 @@ public:
      */
     SGInterpTable( const std::string& file );
 
-
+    /**
+     * Constructor. Loads the interpolation table from the specified file.
+     * @param file name of interpolation file
+     */
+    SGInterpTable( const SGPath& path );
+    
     /**
      * Add an entry to the table, extending the table's length.
      *