diff liboctave/lo-utils.cc @ 9469:c6edba80dfae

sanity checks for loading sparse matrices
author John W. Eaton <jwe@octave.org>
date Wed, 29 Jul 2009 12:15:27 -0400
parents eb63fbe60fab
children ca93f583573d
line wrap: on
line diff
--- a/liboctave/lo-utils.cc	Wed Jul 29 07:22:05 2009 -0400
+++ b/liboctave/lo-utils.cc	Wed Jul 29 12:15:27 2009 -0400
@@ -290,8 +290,9 @@
   return d;
 }
 
+template <>
 double
-octave_read_double (std::istream& is)
+octave_read_value (std::istream& is)
 {
   double d = 0.0;
 
@@ -345,8 +346,9 @@
   return d;
 }
 
+template <>
 Complex
-octave_read_complex (std::istream& is)
+octave_read_value (std::istream& is)
 {
   double re = 0.0, im = 0.0;
 
@@ -359,12 +361,12 @@
 
   if (ch == '(')
     {
-      re = octave_read_double (is);
+      re = octave_read_value<double> (is);
       ch = is.get ();
 
       if (ch == ',')
 	{
-	  im = octave_read_double (is);
+	  im = octave_read_value<double> (is);
 	  ch = is.get ();
 
 	  if (ch == ')')
@@ -380,57 +382,13 @@
   else
     {
       is.putback (ch);
-      cx = octave_read_double (is);
+      cx = octave_read_value<double> (is);
     }
 
   return cx;
 
 }
 
-void
-octave_write_double (std::ostream& os, double d)
-{
-  if (lo_ieee_is_NA (d))
-    os << "NA";
-  else if (lo_ieee_isnan (d))
-    os << "NaN";
-  else if (lo_ieee_isinf (d))
-    os << (d < 0 ? "-Inf" : "Inf");
-  else
-    os << d;
-}
-
-void
-octave_write_complex (std::ostream& os, const Complex& c)
-{
-  os << "(";
-  octave_write_double (os, real (c));
-  os << ",";
-  octave_write_double (os, imag (c));
-  os << ")";
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 static inline float
 read_float_inf_nan_na (std::istream& is, char c, char sign = '+')
 {
@@ -480,8 +438,9 @@
   return d;
 }
 
+template <>
 float
-octave_read_float (std::istream& is)
+octave_read_value (std::istream& is)
 {
   float d = 0.0;
 
@@ -535,8 +494,9 @@
   return d;
 }
 
+template <>
 FloatComplex
-octave_read_float_complex (std::istream& is)
+octave_read_value (std::istream& is)
 {
   float re = 0.0, im = 0.0;
 
@@ -549,12 +509,12 @@
 
   if (ch == '(')
     {
-      re = octave_read_float (is);
+      re = octave_read_value<float> (is);
       ch = is.get ();
 
       if (ch == ',')
 	{
-	  im = octave_read_float (is);
+	  im = octave_read_value<float> (is);
 	  ch = is.get ();
 
 	  if (ch == ')')
@@ -570,7 +530,7 @@
   else
     {
       is.putback (ch);
-      cx = octave_read_float (is);
+      cx = octave_read_value<float> (is);
     }
 
   return cx;
@@ -578,6 +538,29 @@
 }
 
 void
+octave_write_double (std::ostream& os, double d)
+{
+  if (lo_ieee_is_NA (d))
+    os << "NA";
+  else if (lo_ieee_isnan (d))
+    os << "NaN";
+  else if (lo_ieee_isinf (d))
+    os << (d < 0 ? "-Inf" : "Inf");
+  else
+    os << d;
+}
+
+void
+octave_write_complex (std::ostream& os, const Complex& c)
+{
+  os << "(";
+  octave_write_double (os, real (c));
+  os << ",";
+  octave_write_double (os, imag (c));
+  os << ")";
+}
+
+void
 octave_write_float (std::ostream& os, float d)
 {
   if (lo_ieee_is_NA (d))