Merge pull request #48 from Zlodiy/master

Alternative solution for PycCFloat and PycCComplex using union
This commit is contained in:
Michael Hansen
2014-06-04 21:20:51 -07:00
2 changed files with 13 additions and 4 deletions

View File

@@ -153,7 +153,7 @@ bool PycComplex::isEqual(PycRef<PycObject> obj) const
/* PycCFloat */ /* PycCFloat */
void PycCFloat::load(PycData* stream, PycModule*) void PycCFloat::load(PycData* stream, PycModule*)
{ {
m_value = (double)stream->get64(); m_value_i64 = stream->get64();
} }
@@ -161,5 +161,5 @@ void PycCFloat::load(PycData* stream, PycModule*)
void PycCComplex::load(PycData* stream, PycModule* mod) void PycCComplex::load(PycData* stream, PycModule* mod)
{ {
PycCFloat::load(stream, mod); PycCFloat::load(stream, mod);
m_imag = (double)stream->get64(); m_imag_i64 = stream->get64();
} }

View File

@@ -2,6 +2,7 @@
#define _PYC_NUMERIC_H #define _PYC_NUMERIC_H
#include "pyc_object.h" #include "pyc_object.h"
#include "data.h"
#include <list> #include <list>
#include <string> #include <string>
@@ -93,7 +94,11 @@ public:
double value() const { return m_value; } double value() const { return m_value; }
private: private:
double m_value; union
{
Pyc_INT64 m_value_i64;
double m_value;
};
}; };
class PycCComplex : public PycCFloat { class PycCComplex : public PycCFloat {
@@ -112,7 +117,11 @@ public:
double imag() const { return m_imag; } double imag() const { return m_imag; }
private: private:
double m_imag; union
{
Pyc_INT64 m_imag_i64;
double m_imag;
};
}; };
#endif #endif