]> Shamusworld >> Repos - architektonas/blobdiff - src/base/rs_math.cpp
In the middle of major refactoring...
[architektonas] / src / base / rs_math.cpp
index 78c0b9a88e327812e73422951f8ae0fb89c93526..fe3ba33676475f62a94abf84516308f8636d818d 100644 (file)
@@ -1,31 +1,23 @@
-/****************************************************************************
-** $Id: rs_math.cpp 1938 2004-12-09 23:09:53Z andrew $
-**
-** Copyright (C) 2001-2003 RibbonSoft. All rights reserved.
-**
-** This file is part of the qcadlib Library project.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** Licensees holding valid qcadlib Professional Edition licenses may use
-** this file in accordance with the qcadlib Commercial License
-** Agreement provided with the Software.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.ribbonsoft.com for further details.
-**
-** Contact info@ribbonsoft.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
+// rs_math.cpp
+//
+// Part of the Architektonas Project
+// Originally part of QCad Community Edition by Andrew Mustun
+// Extensively rewritten and refactored by James L. Hammons
+// (C) 2010 Underground Software
+//
+// JLH = James L. Hammons <jlhamm@acm.org>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JLH  06/01/2010  Added this text. :-)
+//
 
 #include "rs_math.h"
 
+#include <assert.h>                                                            // For test()
+#include <math.h>
+#include <errno.h>
+#include "fparser.h"
 #include "rs_debug.h"
 
 /**
@@ -257,19 +249,12 @@ double RS_Math::eval(const QString & expr, double def)
        return res;
 }
 
-/**
- * Evaluates a mathematical expression and returns the result.
- * If an error occured, ok will be set to false (if ok isn't NULL).
- */
-//double RS_Math::eval(const QString& expr, bool* ok);
-
 /**
  * Evaluates a mathematical expression and returns the result.
  * If an error occured, ok will be set to false (if ok isn't NULL).
  */
 double RS_Math::eval(const QString & expr, bool * ok)
 {
-#ifndef RS_NO_FPARSER
        if (expr.isEmpty())
        {
                if (ok != NULL)
@@ -309,20 +294,16 @@ double RS_Math::eval(const QString & expr, bool * ok)
 
        if (ret >= 0)
        {
-               if (ok != NULL)
+               if (ok)
                        *ok = false;
 
                return 0.0;
        }
 
-       if (ok != NULL)
+       if (ok)
                *ok = true;
 
        return fp.Eval(NULL);
-#else
-       //std::cerr << "RS_Math::eval: No FParser support compiled in.\n";
-       return expr.toDouble();
-#endif
 }
 
 /**
@@ -376,14 +357,10 @@ QString RS_Math::doubleToString(double value, int prec)
        {
                // Remove zeros at the end:
                while (valStr.at(valStr.length() - 1) == '0')
-               {
                        valStr.truncate(valStr.length() - 1);
-               }
 
                if (valStr.at(valStr.length() - 1) == '.')
-               {
                        valStr.truncate(valStr.length() - 1);
-               }
        }
 
        return valStr;