diff --git a/src/core/pivariant.cpp b/src/core/pivariant.cpp index a98ac201..5dba6a15 100755 --- a/src/core/pivariant.cpp +++ b/src/core/pivariant.cpp @@ -99,6 +99,8 @@ PIVariant::Type PIVariant::typeFromName(const PIString & tname) { if (s == "float") return PIVariant::pivFloat; if (s == "double" || s == "real") return PIVariant::pivDouble; if (s == "ldouble" || s == "longdouble") return PIVariant::pivLDouble; + if (s == "complexd" || s == "complex") return PIVariant::pivComplexd; + if (s == "complexld" || s == "complex" || s == "complex") return PIVariant::pivComplexld; if (s == "pibitarray" || s == "bitarray") return PIVariant::pivBitArray; if (s == "pibytearray" || s == "bytearray" || s == "vector" || s == "pivector" || s == "vector" || s == "pivector" || s == "vector" || s == "pivector") return PIVariant::pivByteArray; @@ -138,6 +140,8 @@ PIString PIVariant::typeName(PIVariant::Type type) { case PIVariant::pivFloat: return "Float"; case PIVariant::pivDouble: return "Double"; case PIVariant::pivLDouble: return "LDouble"; + case PIVariant::pivComplexd: return "Complexd"; + case PIVariant::pivComplexld: return "Complexld"; case PIVariant::pivBitArray: return "BitArray"; case PIVariant::pivByteArray: return "ByteArray"; case PIVariant::pivString: return "String"; diff --git a/src/core/pivariant.h b/src/core/pivariant.h index 9494a2f9..db0c641b 100755 --- a/src/core/pivariant.h +++ b/src/core/pivariant.h @@ -187,6 +187,8 @@ public: pivFloat /** float */ , pivDouble /** double */ , pivLDouble /** ldouble */ , + pivComplexd /** complexd */ , + pivComplexld /** complexld */ , pivBitArray /** PIBitArray */ , pivByteArray /** PIByteArray */ , pivString /** PIString */ , diff --git a/src/math/pifft.h b/src/math/pifft.h index f3e7abec..58e660c5 100644 --- a/src/math/pifft.h +++ b/src/math/pifft.h @@ -161,7 +161,6 @@ private: }; -#ifdef PIP_FFTW_FLOAT template<> inline const PIVector > & PIFFTW::calcFFT(const PIVector > & in) {return ((_PIFFTW_P_float_*)p)->calcFFT(in);} template<> inline const PIVector > & PIFFTW::calcFFT(const PIVector & in) {return ((_PIFFTW_P_float_*)p)->calcFFTR(in);} template<> inline const PIVector > & PIFFTW::calcFFTinverse(const PIVector > & in) {return ((_PIFFTW_P_float_*)p)->calcFFTI(in);} @@ -170,7 +169,6 @@ template<> inline void PIFFTW::newP(void *& _p) {_p = new _PIFFTW_P_float template<> inline void PIFFTW::deleteP(void *& _p) {if (_p) delete (_PIFFTW_P_float_*)_p; _p = 0;} typedef PIFFTW PIFFTWf; -#endif // PIP_FFTW_FLOAT template<> inline const PIVector > & PIFFTW::calcFFT(const PIVector > & in) {return ((_PIFFTW_P_double_*)p)->calcFFT(in);} @@ -183,7 +181,6 @@ template<> inline void PIFFTW::deleteP(void *& _p) {if (_p) delete (_PIF typedef PIFFTW PIFFTWd; -#ifdef PIP_FFTW_LDOUBLE template<> inline const PIVector > & PIFFTW::calcFFT(const PIVector > & in) {return ((_PIFFTW_P_ldouble_*)p)->calcFFT(in);} template<> inline const PIVector > & PIFFTW::calcFFT(const PIVector & in) {return ((_PIFFTW_P_ldouble_*)p)->calcFFTR(in);} template<> inline const PIVector > & PIFFTW::calcFFTinverse(const PIVector > & in) {return ((_PIFFTW_P_ldouble_*)p)->calcFFTI(in);} @@ -192,6 +189,5 @@ template<> inline void PIFFTW::newP(void *& _p) {_p = new _PIFFTW_P_ldo template<> inline void PIFFTW::deleteP(void *& _p) {if (_p) delete (_PIFFTW_P_ldouble_*)_p; _p = 0;} typedef PIFFTW PIFFTWld; -#endif // PIP_FFTW_LDOUBLE #endif // PIFFT_H diff --git a/src/thread/pimutex.h b/src/thread/pimutex.h index 52bd2a81..8d23cdcf 100755 --- a/src/thread/pimutex.h +++ b/src/thread/pimutex.h @@ -28,12 +28,10 @@ class PIP_EXPORT PIMutex { public: - //! Constructs unlocked mutex explicit PIMutex(); - - explicit PIMutex(const PIMutex & ); + //! Destroy mutex ~PIMutex(); @@ -55,6 +53,7 @@ public: bool isLocked() const; private: + explicit PIMutex(const PIMutex & ); void operator =(const PIMutex & ); void init(); @@ -62,7 +61,6 @@ private: PRIVATE_DECLARATION bool inited_; volatile bool locked; - }; diff --git a/src/thread/pipipelinethread.h b/src/thread/pipipelinethread.h index 5e4d6a41..1e8bb943 100644 --- a/src/thread/pipipelinethread.h +++ b/src/thread/pipipelinethread.h @@ -39,7 +39,10 @@ public: } ~PIPipelineThread() { stop(); - if (!waitForFinish(1000)) terminate(); + if (!waitForFinish(1000)) { + piCoutObj << "terminating self thread"; + terminate(); + } } template void connectTo(PIPipelineThread * next) {