From 2ce1404cb25e6a8dc1b02c7f1dfaf26725edfadf Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Sat, 16 Dec 2017 12:02:34 +0100 Subject: gcc2 support diff --git a/IlmImf/ImfChannelListAttribute.cpp b/IlmImf/ImfChannelListAttribute.cpp index 5549493..8fb8800 100644 --- a/IlmImf/ImfChannelListAttribute.cpp +++ b/IlmImf/ImfChannelListAttribute.cpp @@ -46,6 +46,19 @@ OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER namespace { +template +void checkIsNullTerminated (char (&str)[N], const char *what) +{ + for (size_t i = 0; i < N; ++i) { + if (str[i] == '\0') + return; + } + std::stringstream s; + s << "Invalid " << what << ": it is more than " << (N - 1) + << " characters long."; + throw IEX_NAMESPACE::InputExc(s); +} + template void checkIsNullTerminated (const char (&str)[N], const char *what) { diff --git a/IlmImf/ImfCheckedArithmetic.h b/IlmImf/ImfCheckedArithmetic.h index 6a7fc15..43da516 100644 --- a/IlmImf/ImfCheckedArithmetic.h +++ b/IlmImf/ImfCheckedArithmetic.h @@ -63,8 +63,11 @@ uiMult (T a, T b) // Unsigned integer multiplication // - IMF_STATIC_ASSERT (!std::numeric_limits::is_signed && - std::numeric_limits::is_integer); + { + const bool c = !std::numeric_limits::is_signed && + std::numeric_limits::is_integer; + IMF_STATIC_ASSERT (c); + } if (a > 0 && b > std::numeric_limits::max() / a) throw IEX_NAMESPACE::OverflowExc ("Integer multiplication overflow."); @@ -81,8 +84,11 @@ uiDiv (T a, T b) // Unsigned integer division // - IMF_STATIC_ASSERT (!std::numeric_limits::is_signed && - std::numeric_limits::is_integer); + { + const bool c = !std::numeric_limits::is_signed && + std::numeric_limits::is_integer; + IMF_STATIC_ASSERT (c); + } if (b == 0) throw IEX_NAMESPACE::DivzeroExc ("Integer division by zero."); @@ -99,8 +105,11 @@ uiAdd (T a, T b) // Unsigned integer addition // - IMF_STATIC_ASSERT (!std::numeric_limits::is_signed && - std::numeric_limits::is_integer); + { + const bool c = !std::numeric_limits::is_signed && + std::numeric_limits::is_integer; + IMF_STATIC_ASSERT (c); + } if (a > std::numeric_limits::max() - b) throw IEX_NAMESPACE::OverflowExc ("Integer addition overflow."); @@ -117,8 +126,11 @@ uiSub (T a, T b) // Unsigned integer subtraction // - IMF_STATIC_ASSERT (!std::numeric_limits::is_signed && - std::numeric_limits::is_integer); + { + const bool c = !std::numeric_limits::is_signed && + std::numeric_limits::is_integer; + IMF_STATIC_ASSERT (c); + } if (a < b) throw IEX_NAMESPACE::UnderflowExc ("Integer subtraction underflow."); @@ -145,8 +157,11 @@ checkArraySize (T n, size_t s) // size_t (n). // - IMF_STATIC_ASSERT (!std::numeric_limits::is_signed && - std::numeric_limits::is_integer); + { + const bool c = !std::numeric_limits::is_signed && + std::numeric_limits::is_integer; + IMF_STATIC_ASSERT (c); + } IMF_STATIC_ASSERT (sizeof (T) <= sizeof (size_t)); diff --git a/IlmImf/ImfFastHuf.cpp b/IlmImf/ImfFastHuf.cpp index 86c84dc..01edad4 100644 --- a/IlmImf/ImfFastHuf.cpp +++ b/IlmImf/ImfFastHuf.cpp @@ -107,7 +107,7 @@ FastHufDecoder::FastHufDecoder for (int i = 0; i <= MAX_CODE_LEN; ++i) { codeCount[i] = 0; - base[i] = 0xffffffffffffffffL; + base[i] = 0xffffffffffffffffLL; offset[i] = 0; } @@ -352,7 +352,7 @@ FastHufDecoder::buildTables (Int64 *base, Int64 *offset) for (int i = 0; i <= MAX_CODE_LEN; ++i) { - if (base[i] != 0xffffffffffffffffL) + if (base[i] != 0xffffffffffffffffLL) { _ljBase[i] = base[i] << (64 - i); } @@ -362,7 +362,7 @@ FastHufDecoder::buildTables (Int64 *base, Int64 *offset) // Unused code length - insert dummy values // - _ljBase[i] = 0xffffffffffffffffL; + _ljBase[i] = 0xffffffffffffffffLL; } } @@ -417,7 +417,7 @@ FastHufDecoder::buildTables (Int64 *base, Int64 *offset) int minIdx = TABLE_LOOKUP_BITS; - while (minIdx > 0 && _ljBase[minIdx] == 0xffffffffffffffffL) + while (minIdx > 0 && _ljBase[minIdx] == 0xffffffffffffffffLL) minIdx--; if (minIdx < 0) @@ -427,7 +427,7 @@ FastHufDecoder::buildTables (Int64 *base, Int64 *offset) // Set the min value such that the table is never tested. // - _tableMin = 0xffffffffffffffffL; + _tableMin = 0xffffffffffffffffLL; } else { diff --git a/IlmImf/ImfHeader.cpp b/IlmImf/ImfHeader.cpp index d6b55f3..212e623 100644 --- a/IlmImf/ImfHeader.cpp +++ b/IlmImf/ImfHeader.cpp @@ -114,6 +114,19 @@ initialize (Header &header, header.insert ("channels", ChannelListAttribute ()); } +template +void checkIsNullTerminated (char (&str)[N], const char *what) +{ + for (size_t i = 0; i < N; ++i) { + if (str[i] == '\0') + return; + } + std::stringstream s; + s << "Invalid " << what << ": it is more than " << (N - 1) + << " characters long."; + throw IEX_NAMESPACE::InputExc(s); +} + template void checkIsNullTerminated (const char (&str)[N], const char *what) { diff --git a/IlmImf/ImfStringVectorAttribute.cpp b/IlmImf/ImfStringVectorAttribute.cpp index 88fdf8e..bc4f15b 100644 --- a/IlmImf/ImfStringVectorAttribute.cpp +++ b/IlmImf/ImfStringVectorAttribute.cpp @@ -65,7 +65,8 @@ StringVectorAttribute::writeValueTo (OPENEXR_IMF_INTERNAL_NAMESPACE::OStream &os { int strSize = _value[i].size(); Xdr::write (os, strSize); - Xdr::write (os, &_value[i][0], strSize); + std::string str = _value[i]; + Xdr::write (os, &str[0], strSize); } } diff --git a/IlmImf/b44ExpLogTable.cpp b/IlmImf/b44ExpLogTable.cpp index 24e35fb..620b090 100644 --- a/IlmImf/b44ExpLogTable.cpp +++ b/IlmImf/b44ExpLogTable.cpp @@ -131,6 +131,7 @@ main () } cout << "};\n"; + cout.flush(); return 0; } diff --git a/exrenvmap/namespaceAlias.h b/exrenvmap/namespaceAlias.h index bf488da..dbe9d9b 100644 --- a/exrenvmap/namespaceAlias.h +++ b/exrenvmap/namespaceAlias.h @@ -38,8 +38,8 @@ #include "ImathNamespace.h" #include "IexNamespace.h" -namespace IMF = OPENEXR_IMF_NAMESPACE; -namespace IMATH = IMATH_NAMESPACE; -namespace IEX = IEX_NAMESPACE; +#define IMF OPENEXR_IMF_NAMESPACE +#define IMATH IMATH_NAMESPACE +#define IEX IEX_NAMESPACE #endif /* NAMESPACEALIAS_H_ */ diff --git a/exrmaketiled/namespaceAlias.h b/exrmaketiled/namespaceAlias.h index 19567eb..92b9c86 100644 --- a/exrmaketiled/namespaceAlias.h +++ b/exrmaketiled/namespaceAlias.h @@ -38,8 +38,8 @@ #include #include -namespace IMF = OPENEXR_IMF_NAMESPACE; -namespace IMATH = IMATH_NAMESPACE; -namespace IEX = IEX_NAMESPACE; +#define IMF OPENEXR_IMF_NAMESPACE +#define IMATH IMATH_NAMESPACE +#define IEX IEX_NAMESPACE #endif /* NAMESPACEALIAS_H_ */ diff --git a/exrmultipart/exrmultipart.cpp b/exrmultipart/exrmultipart.cpp index 8c4fa66..b192dd8 100644 --- a/exrmultipart/exrmultipart.cpp +++ b/exrmultipart/exrmultipart.cpp @@ -140,7 +140,7 @@ bool is_number(const std::string& s) { std::string::const_iterator it = s.begin(); - while (it != s.end() && std::isdigit(*it)) ++it; + while (it != s.end() && isdigit(*it)) ++it; return !s.empty() && it == s.end(); } diff --git a/exrmultiview/namespaceAlias.h b/exrmultiview/namespaceAlias.h index 19567eb..92b9c86 100644 --- a/exrmultiview/namespaceAlias.h +++ b/exrmultiview/namespaceAlias.h @@ -38,8 +38,8 @@ #include #include -namespace IMF = OPENEXR_IMF_NAMESPACE; -namespace IMATH = IMATH_NAMESPACE; -namespace IEX = IEX_NAMESPACE; +#define IMF OPENEXR_IMF_NAMESPACE +#define IMATH IMATH_NAMESPACE +#define IEX IEX_NAMESPACE #endif /* NAMESPACEALIAS_H_ */ -- 2.15.0 From 57d8ac08eaf7c547d927ddd1344a908b2f1ea80c Mon Sep 17 00:00:00 2001 From: Kacper Kasper Date: Sat, 16 Dec 2017 10:52:53 +0100 Subject: [PATCH] gcc2 support --- IlmBase/Half/eLut.cpp | 1 + IlmBase/Half/toFloat.cpp | 1 + IlmBase/Iex/IexBaseExc.cpp | 2 +- IlmBase/IexMath/IexMathFpu.h | 4 +++- IlmBase/Imath/ImathVec.h | 33 --------------------------------- 5 files changed, 6 insertions(+), 35 deletions(-) diff --git a/IlmBase/Half/eLut.cpp b/IlmBase/Half/eLut.cpp index ce64b50..8deed8b 100644 --- a/IlmBase/Half/eLut.cpp +++ b/IlmBase/Half/eLut.cpp @@ -110,5 +110,6 @@ main () } cout << "};\n"; + cout.flush(); return 0; } diff --git a/IlmBase/Half/toFloat.cpp b/IlmBase/Half/toFloat.cpp index 001bc51..ef2d87f 100644 --- a/IlmBase/Half/toFloat.cpp +++ b/IlmBase/Half/toFloat.cpp @@ -160,5 +160,6 @@ main () } cout << "};\n"; + cout.flush(); return 0; } diff --git a/IlmBase/Iex/IexBaseExc.cpp b/IlmBase/Iex/IexBaseExc.cpp index 3b2e197..2fcf602 100644 --- a/IlmBase/Iex/IexBaseExc.cpp +++ b/IlmBase/Iex/IexBaseExc.cpp @@ -151,6 +151,6 @@ iex_debugTrap() { // how to in Linux? if (0 != ::getenv("IEXDEBUGTHROW")) - __builtin_trap(); + abort(); } #endif diff --git a/IlmBase/IexMath/IexMathFpu.h b/IlmBase/IexMath/IexMathFpu.h index df2a3e5..c6ae73b 100644 --- a/IlmBase/IexMath/IexMathFpu.h +++ b/IlmBase/IexMath/IexMathFpu.h @@ -69,7 +69,9 @@ int fpExceptions (); // that will be called when SIGFPE occurs. //------------------------------------------ -extern "C" typedef void (* FpExceptionHandler) (int type, const char explanation[]); +extern "C" { + typedef void (* FpExceptionHandler) (int type, const char explanation[]); +} void setFpExceptionHandler (FpExceptionHandler handler); diff --git a/IlmBase/Imath/ImathVec.h b/IlmBase/Imath/ImathVec.h index fb859eb..5fa0e91 100644 --- a/IlmBase/Imath/ImathVec.h +++ b/IlmBase/Imath/ImathVec.h @@ -126,9 +126,6 @@ template class Vec2 template bool operator == (const Vec2 &v) const; - template - bool operator != (const Vec2 &v) const; - //----------------------------------------------------------------------- // Compare two vectors and test if they are "approximately equal": @@ -339,9 +336,6 @@ template class Vec3 template bool operator == (const Vec3 &v) const; - template - bool operator != (const Vec3 &v) const; - //----------------------------------------------------------------------- // Compare two vectors and test if they are "approximately equal": // @@ -524,9 +518,6 @@ template class Vec4 template bool operator == (const Vec4 &v) const; - template - bool operator != (const Vec4 &v) const; - //----------------------------------------------------------------------- // Compare two vectors and test if they are "approximately equal": @@ -969,14 +960,6 @@ Vec2::operator == (const Vec2 &v) const return x == v.x && y == v.y; } -template -template -inline bool -Vec2::operator != (const Vec2 &v) const -{ - return x != v.x || y != v.y; -} - template bool Vec2::equalWithAbsError (const Vec2 &v, T e) const @@ -1432,14 +1415,6 @@ Vec3::operator == (const Vec3 &v) const return x == v.x && y == v.y && z == v.z; } -template -template -inline bool -Vec3::operator != (const Vec3 &v) const -{ - return x != v.x || y != v.y || z != v.z; -} - template bool Vec3::equalWithAbsError (const Vec3 &v, T e) const @@ -1853,14 +1828,6 @@ Vec4::operator == (const Vec4 &v) const return x == v.x && y == v.y && z == v.z && w == v.w; } -template -template -inline bool -Vec4::operator != (const Vec4 &v) const -{ - return x != v.x || y != v.y || z != v.z || w != v.w; -} - template bool Vec4::equalWithAbsError (const Vec4 &v, T e) const -- 2.24.1