]> www.ginac.de Git - ginac.git/blobdiff - ginac/utils.cpp
- removed manual basepointer-fiddling in construct-on-first-use objects
[ginac.git] / ginac / utils.cpp
index 1c9fe05ee935c7b987fa5ad63f17cfefde3fabad..d5d7ab6218029dca9414674be4abe0b16bf95972 100644 (file)
@@ -26,9 +26,7 @@
 #include "utils.h"
 #include "version.h"
 
-#ifndef NO_NAMESPACE_GINAC
 namespace GiNaC {
-#endif // ndef NO_NAMESPACE_GINAC
 
 /* Version information buried into the library */
 const int version_major = GINACLIB_MAJOR_VERSION;
@@ -38,10 +36,7 @@ const int version_micro = GINACLIB_MICRO_VERSION;
 
 /** ctor for pole_error exception class. */
 pole_error::pole_error(const std::string& what_arg, int degree)
-  : domain_error(what_arg)
-{
-       deg = degree;
-}
+       : domain_error(what_arg), deg(degree) { }
 
 /** Return the degree of the pole_error exception class. */
 int pole_error::degree(void) const
@@ -55,23 +50,12 @@ int pole_error::degree(void) const
 unsigned log2(unsigned n)
 {
        unsigned k;
-       for (k = 0; n > 1; n >>= 1) ++k;
+       for (k = 0; n > 1; n >>= 1)
+               ++k;
        return k;
 }
 #endif
 
-/** Compare two pointers (just to establish some sort of canonical order).
- *  @return -1, 0, or 1 */
-int compare_pointers(const void * a, const void * b)
-{
-       if (a<b) {
-               return -1;
-       } else if (a>b) {
-               return 1;
-       }
-       return 0;
-}
-
 //////////
 // `construct on first use' chest of numbers
 //////////
@@ -80,8 +64,8 @@ int compare_pointers(const void * a, const void * b)
 const numeric & _num_120(void)
 {
        const static ex e = ex(numeric(-120));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_120(void)
@@ -94,8 +78,8 @@ const ex & _ex_120(void)
 const numeric & _num_60(void)
 {
        const static ex e = ex(numeric(-60));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_60(void)
@@ -108,8 +92,8 @@ const ex & _ex_60(void)
 const numeric & _num_48(void)
 {
        const static ex e = ex(numeric(-48));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_48(void)
@@ -122,8 +106,8 @@ const ex & _ex_48(void)
 const numeric & _num_30(void)
 {
        const static ex e = ex(numeric(-30));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_30(void)
@@ -136,8 +120,8 @@ const ex & _ex_30(void)
 const numeric & _num_25(void)
 {
        const static ex e = ex(numeric(-25));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_25(void)
@@ -150,8 +134,8 @@ const ex & _ex_25(void)
 const numeric & _num_24(void)
 {
        const static ex e = ex(numeric(-24));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_24(void)
@@ -164,8 +148,8 @@ const ex & _ex_24(void)
 const numeric & _num_20(void)
 {
        const static ex e = ex(numeric(-20));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_20(void)
@@ -178,8 +162,8 @@ const ex & _ex_20(void)
 const numeric & _num_18(void)
 {
        const static ex e = ex(numeric(-18));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_18(void)
@@ -192,8 +176,8 @@ const ex & _ex_18(void)
 const numeric & _num_15(void)
 {
        const static ex e = ex(numeric(-15));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_15(void)
@@ -206,8 +190,8 @@ const ex & _ex_15(void)
 const numeric & _num_12(void)
 {
        const static ex e = ex(numeric(-12));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_12(void)
@@ -220,8 +204,8 @@ const ex & _ex_12(void)
 const numeric & _num_11(void)
 {
        const static ex e = ex(numeric(-11));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_11(void)
@@ -234,8 +218,8 @@ const ex & _ex_11(void)
 const numeric & _num_10(void)
 {
        const static ex e = ex(numeric(-10));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_10(void)
@@ -248,8 +232,8 @@ const ex & _ex_10(void)
 const numeric & _num_9(void)
 {
        const static ex e = ex(numeric(-9));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_9(void)
@@ -262,8 +246,8 @@ const ex & _ex_9(void)
 const numeric & _num_8(void)
 {
        const static ex e = ex(numeric(-8));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_8(void)
@@ -276,8 +260,8 @@ const ex & _ex_8(void)
 const numeric & _num_7(void)
 {
        const static ex e = ex(numeric(-7));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_7(void)
@@ -290,8 +274,8 @@ const ex & _ex_7(void)
 const numeric & _num_6(void)
 {
        const static ex e = ex(numeric(-6));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_6(void)
@@ -304,8 +288,8 @@ const ex & _ex_6(void)
 const numeric & _num_5(void)
 {
        const static ex e = ex(numeric(-5));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_5(void)
@@ -318,8 +302,8 @@ const ex & _ex_5(void)
 const numeric & _num_4(void)
 {
        const static ex e = ex(numeric(-4));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_4(void)
@@ -332,8 +316,8 @@ const ex & _ex_4(void)
 const numeric & _num_3(void)
 {
        const static ex e = ex(numeric(-3));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_3(void)
@@ -346,8 +330,8 @@ const ex & _ex_3(void)
 const numeric & _num_2(void)
 {
        const static ex e = ex(numeric(-2));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_2(void)
@@ -360,8 +344,8 @@ const ex & _ex_2(void)
 const numeric & _num_1(void)
 {
        const static ex e = ex(numeric(-1));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_1(void)
@@ -374,8 +358,8 @@ const ex & _ex_1(void)
 const numeric & _num_1_2(void)
 {
        const static ex e = ex(numeric(-1,2));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_1_2(void)
@@ -388,8 +372,8 @@ const ex & _ex_1_2(void)
 const numeric & _num_1_3(void)
 {
        const static ex e = ex(numeric(-1,3));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_1_3(void)
@@ -402,8 +386,8 @@ const ex & _ex_1_3(void)
 const numeric & _num_1_4(void)
 {
        const static ex e = ex(numeric(-1,4));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex_1_4(void)
@@ -416,8 +400,8 @@ const ex & _ex_1_4(void)
 const numeric & _num0(void)
 {
        const static ex e = ex(numeric(0));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex0(void)
@@ -430,8 +414,8 @@ const ex & _ex0(void)
 const numeric & _num1_4(void)
 {
        const static ex e = ex(numeric(1,4));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex1_4(void)
@@ -444,8 +428,8 @@ const ex & _ex1_4(void)
 const numeric & _num1_3(void)
 {
        const static ex e = ex(numeric(1,3));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex1_3(void)
@@ -458,8 +442,8 @@ const ex & _ex1_3(void)
 const numeric & _num1_2(void)
 {
        const static ex e = ex(numeric(1,2));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex1_2(void)
@@ -472,8 +456,8 @@ const ex & _ex1_2(void)
 const numeric & _num1(void)
 {
        const static ex e = ex(numeric(1));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex1(void)
@@ -486,8 +470,8 @@ const ex & _ex1(void)
 const numeric & _num2(void)
 {
        const static ex e = ex(numeric(2));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex2(void)
@@ -500,8 +484,8 @@ const ex & _ex2(void)
 const numeric & _num3(void)
 {
        const static ex e = ex(numeric(3));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex3(void)
@@ -514,8 +498,8 @@ const ex & _ex3(void)
 const numeric & _num4(void)
 {
        const static ex e = ex(numeric(4));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex4(void)
@@ -528,8 +512,8 @@ const ex & _ex4(void)
 const numeric & _num5(void)
 {
        const static ex e = ex(numeric(5));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex5(void)
@@ -542,8 +526,8 @@ const ex & _ex5(void)
 const numeric & _num6(void)
 {
        const static ex e = ex(numeric(6));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex6(void)
@@ -556,8 +540,8 @@ const ex & _ex6(void)
 const numeric & _num7(void)
 {
        const static ex e = ex(numeric(7));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex7(void)
@@ -570,8 +554,8 @@ const ex & _ex7(void)
 const numeric & _num8(void)
 {
        const static ex e = ex(numeric(8));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex8(void)
@@ -584,8 +568,8 @@ const ex & _ex8(void)
 const numeric & _num9(void)
 {
        const static ex e = ex(numeric(9));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex9(void)
@@ -598,8 +582,8 @@ const ex & _ex9(void)
 const numeric & _num10(void)
 {
        const static ex e = ex(numeric(10));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex10(void)
@@ -612,8 +596,8 @@ const ex & _ex10(void)
 const numeric & _num11(void)
 {
        const static ex e = ex(numeric(11));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex11(void)
@@ -626,8 +610,8 @@ const ex & _ex11(void)
 const numeric & _num12(void)
 {
        const static ex e = ex(numeric(12));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex12(void)
@@ -640,8 +624,8 @@ const ex & _ex12(void)
 const numeric & _num15(void)
 {
        const static ex e = ex(numeric(15));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex15(void)
@@ -654,8 +638,8 @@ const ex & _ex15(void)
 const numeric & _num18(void)
 {
        const static ex e = ex(numeric(18));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex18(void)
@@ -668,8 +652,8 @@ const ex & _ex18(void)
 const numeric & _num20(void)
 {
        const static ex e = ex(numeric(20));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex20(void)
@@ -682,8 +666,8 @@ const ex & _ex20(void)
 const numeric & _num24(void)
 {
        const static ex e = ex(numeric(24));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex24(void)
@@ -696,8 +680,8 @@ const ex & _ex24(void)
 const numeric & _num25(void)
 {
        const static ex e = ex(numeric(25));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex25(void)
@@ -710,8 +694,8 @@ const ex & _ex25(void)
 const numeric & _num30(void)
 {
        const static ex e = ex(numeric(30));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex30(void)
@@ -724,8 +708,8 @@ const ex & _ex30(void)
 const numeric & _num48(void)
 {
        const static ex e = ex(numeric(48));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex48(void)
@@ -738,8 +722,8 @@ const ex & _ex48(void)
 const numeric & _num60(void)
 {
        const static ex e = ex(numeric(60));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex60(void)
@@ -752,8 +736,8 @@ const ex & _ex60(void)
 const numeric & _num120(void)
 {
        const static ex e = ex(numeric(120));
-       const static numeric * n = static_cast<const numeric *>(e.bp);
-       return *n;
+       const static numeric &n = ex_to<numeric>(e);
+       return n;
 }
 
 const ex & _ex120(void)
@@ -767,13 +751,13 @@ const ex & _ex120(void)
 
 // member functions
 
-       // default constructor, destructor, copy constructor assignment operator and helpers
+       // default ctor, dtor, copy ctor assignment operator and helpers
        // none
 
-       // other constructors
+       // other ctors
        // none
 
-       // functions overriding virtual functions from bases classes
+       // functions overriding virtual functions from base classes
        // none
        
        // new virtual functions which can be overridden by derived classes
@@ -791,21 +775,21 @@ const ex & _ex120(void)
 
 
 //////////
-// default constructor, destructor, copy constructor assignment operator and helpers
+// default ctor, dtor, copy ctor assignment operator and helpers
 //////////
 
 // public
 // protected
 
 //////////
-// other constructors
+// other ctors
 //////////
 
 // public
 // none
 
 //////////
-// functions overriding virtual functions from bases classes
+// functions overriding virtual functions from base classes
 //////////
 
 // public
@@ -837,6 +821,4 @@ const ex & _ex120(void)
 // none
 
 
-#ifndef NO_NAMESPACE_GINAC
 } // namespace GiNaC
-#endif // ndef NO_NAMESPACE_GINAC