]> www.ginac.de Git - cln.git/blobdiff - src/integer/input/cl_I_read.cc
Use paths relative the `src' directory in the #include directives.
[cln.git] / src / integer / input / cl_I_read.cc
index 430f5688fc626c75473e53aa23e64980e7d3d606..320d5f5151a0f5563e65f464d0b797d28a538970 100644 (file)
@@ -3,7 +3,7 @@
 // It does not pull in all the rational number code.
 
 // General includes.
-#include "cl_sysdep.h"
+#include "base/cl_sysdep.h"
 
 // Specification.
 #include "cln/integer_io.h"
 // Implementation.
 
 #include <cstring>
+#include <sstream>
 #include "cln/input.h"
 #include "cln/integer.h"
-#include "cl_I.h"
-#include "cln/abort.h"
+#include "integer/cl_I.h"
 
 namespace cln {
 
@@ -47,7 +47,7 @@ static const char * skip_digits (const char * ptr, const char * string_limit, un
   if (end_of_parse)                                                    \
     { *end_of_parse = (ptr); }                                         \
   else                                                                 \
-    { if ((ptr) != string_limit) { read_number_junk((ptr),string,string_limit); } }
+    { if ((ptr) != string_limit) { throw read_number_junk_exception((ptr),string,string_limit); } }
 
 const cl_I read_integer (const cl_read_flags& flags, const char * string, const char * string_limit, const char * * end_of_parse)
 {
@@ -81,10 +81,10 @@ const cl_I read_integer (const cl_read_flags& flags, const char * string, const
                                                goto not_integer_syntax;
                                        var cl_I base = read_integer(10,0,ptr,0,base_end_ptr-ptr);
                                        if (!((base >= 2) && (base <= 36))) {
-                                               fprint(std::cerr, "Base must be an integer in the range from 2 to 36, not ");
-                                               fprint(std::cerr, base);
-                                               fprint(std::cerr, "\n");
-                                               cl_abort();
+                                               std::ostringstream buf;
+                                               fprint(buf, "Base must be an integer in the range from 2 to 36, not ");
+                                               fprint(buf, base);
+                                               throw runtime_exception(buf.str());
                                        }
                                        rational_base = FN_to_UV(base); ptr = base_end_ptr;
                                        break;
@@ -127,7 +127,7 @@ not_integer_syntax:
                *end_of_parse = string;
                return 0; // dummy return
        }
-       read_number_bad_syntax(string,string_limit);
+       throw read_number_bad_syntax_exception(string,string_limit);
 }
 
 }  // namespace cln