zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #19273
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
Paul J. Lucas has proposed merging lp:~paul-lucas/zorba/pjl-misc into lp:zorba.
Commit message:
* Added over-flow check for to_xs_int().
* Fixed warnings.
Requested reviews:
Paul J. Lucas (paul-lucas)
For more details, see:
https://code.launchpad.net/~paul-lucas/zorba/pjl-misc/+merge/155038
* Added over-flow check for to_xs_int().
* Fixed warnings.
--
https://code.launchpad.net/~paul-lucas/zorba/pjl-misc/+merge/155038
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'src/runtime/random/random_impl.cpp'
--- src/runtime/random/random_impl.cpp 2013-02-07 17:24:36 +0000
+++ src/runtime/random/random_impl.cpp 2013-03-22 19:09:23 +0000
@@ -70,9 +70,8 @@
try
{
- int_seed = static_cast<unsigned int>(
- to_xs_int( seed->getIntegerValue() ) );
- } catch (std::range_error& /*e*/)
+ int_seed = static_cast<unsigned>( to_xs_int( seed->getIntegerValue() ) );
+ } catch (std::range_error const&)
{
throw XQUERY_EXCEPTION(
zerr::ZXQD0004_INVALID_PARAMETER,
=== modified file 'src/unit_tests/test_time.cpp'
--- src/unit_tests/test_time.cpp 2013-03-20 15:26:41 +0000
+++ src/unit_tests/test_time.cpp 2013-03-22 19:09:23 +0000
@@ -90,7 +90,7 @@
/* 30 */ { 3, time::jan, 2010, calendar::ISO, 53 },
/* 31 */ { 4, time::jan, 2010, calendar::ISO, 1 },
- { 0 },
+ { 0, 0, 0, calendar::unknown, 0 }
};
for ( test_type const *t = test; t->mday; ++t ) {
=== modified file 'src/util/stl_util.h'
--- src/util/stl_util.h 2013-02-28 11:15:32 +0000
+++ src/util/stl_util.h 2013-03-22 19:09:23 +0000
@@ -436,22 +436,29 @@
//
template<typename N1,typename N2> inline
-typename std::enable_if<ZORBA_TR1_NS::is_signed<N1>::value
- && ZORBA_TR1_NS::is_signed<N2>::value,bool>::type
+typename std::enable_if<(ZORBA_TR1_NS::is_signed<N1>::value ||
+ ZORBA_TR1_NS::is_floating_point<N1>::value)
+ && (ZORBA_TR1_NS::is_signed<N2>::value ||
+ ZORBA_TR1_NS::is_floating_point<N2>::value),
+ bool>::type
ge_min( N1 n1, N2 ) {
return n1 >= std::numeric_limits<N2>::min();
}
template<typename N1,typename N2> inline
-typename std::enable_if<ZORBA_TR1_NS::is_signed<N1>::value
- && !!ZORBA_TR1_NS::is_unsigned<N2>::value,bool>::type
+typename std::enable_if<(ZORBA_TR1_NS::is_signed<N1>::value ||
+ ZORBA_TR1_NS::is_floating_point<N1>::value)
+ && !!ZORBA_TR1_NS::is_unsigned<N2>::value,
+ bool>::type
ge_min( N1 n1, N2 ) {
return n1 >= 0;
}
template<typename N1,typename N2> inline
typename std::enable_if<!!ZORBA_TR1_NS::is_unsigned<N1>::value
- && ZORBA_TR1_NS::is_signed<N2>::value,bool>::type
+ && (ZORBA_TR1_NS::is_signed<N2>::value ||
+ ZORBA_TR1_NS::is_floating_point<N2>::value),
+ bool>::type
ge_min( N1, N2 ) {
return true;
}
@@ -464,22 +471,29 @@
}
template<typename N1,typename N2> inline
-typename std::enable_if<ZORBA_TR1_NS::is_signed<N1>::value
- && ZORBA_TR1_NS::is_signed<N2>::value,bool>::type
+typename std::enable_if<(ZORBA_TR1_NS::is_signed<N1>::value ||
+ ZORBA_TR1_NS::is_floating_point<N1>::value)
+ && (ZORBA_TR1_NS::is_signed<N2>::value ||
+ ZORBA_TR1_NS::is_floating_point<N2>::value),
+ bool>::type
le_max( N1 n1, N2 ) {
return n1 <= std::numeric_limits<N2>::max();
}
template<typename N1,typename N2> inline
-typename std::enable_if<ZORBA_TR1_NS::is_signed<N1>::value
- && !!ZORBA_TR1_NS::is_unsigned<N2>::value,bool>::type
+typename std::enable_if<(ZORBA_TR1_NS::is_signed<N1>::value ||
+ ZORBA_TR1_NS::is_floating_point<N1>::value)
+ && !!ZORBA_TR1_NS::is_unsigned<N2>::value,
+ bool>::type
le_max( N1 n1, N2 ) {
return n1 <= 0 || static_cast<N2>( n1 ) <= std::numeric_limits<N2>::max();
}
template<typename N1,typename N2> inline
typename std::enable_if<!!ZORBA_TR1_NS::is_unsigned<N1>::value
- && ZORBA_TR1_NS::is_signed<N2>::value,bool>::type
+ && (ZORBA_TR1_NS::is_signed<N2>::value ||
+ ZORBA_TR1_NS::is_floating_point<N2>::value),
+ bool>::type
le_max( N1 n1, N2 ) {
return n1 <= static_cast<N1>( std::numeric_limits<N2>::max() );
}
=== modified file 'src/util/time_parse.cpp'
--- src/util/time_parse.cpp 2013-01-10 01:53:57 +0000
+++ src/util/time_parse.cpp 2013-03-22 19:09:23 +0000
@@ -170,18 +170,18 @@
// Time."
//
static rfc2822_obs_zone const rfc2822_obs_zones[] = {
- { "GMT", 0 },
- { "UTC", 0 }, // non-RFC: be liberal in what you accept....
- { "UT" , 0 }, // must go after "UTC"
- { "EDT", -4 * 60 * 60, true },
- { "EST", -5 * 60 * 60 },
- { "CDT", -5 * 60 * 60, true },
- { "CST", -6 * 60 * 60 },
- { "MDT", -6 * 60 * 60, true },
- { "MST", -7 * 60 * 60 },
- { "PDT", -7 * 60 * 60, true },
- { "PST", -8 * 60 * 60 },
- { 0, 0, 0 }
+ { "GMT", 0 , false },
+ { "UTC", 0 , false }, // non-RFC: be liberal in what you accept....
+ { "UT" , 0 , false }, // must go after "UTC"
+ { "EDT", -4 * 60 * 60, true },
+ { "EST", -5 * 60 * 60, false },
+ { "CDT", -5 * 60 * 60, true },
+ { "CST", -6 * 60 * 60, false },
+ { "MDT", -6 * 60 * 60, true },
+ { "MST", -7 * 60 * 60, false },
+ { "PDT", -7 * 60 * 60, true },
+ { "PST", -8 * 60 * 60, false },
+ { 0, 0, false }
};
///////////////////////////////////////////////////////////////////////////////
=== modified file 'src/zorbatypes/floatimpl.h'
--- src/zorbatypes/floatimpl.h 2013-02-07 17:24:36 +0000
+++ src/zorbatypes/floatimpl.h 2013-03-22 19:09:23 +0000
@@ -256,6 +256,8 @@
uint32_t hash() const;
+ bool is_xs_int() const;
+
bool isNaN() const;
bool isFinite() const;
bool isPosInf() const;
@@ -935,6 +937,11 @@
}
template<typename F>
+inline bool FloatImpl<F>::is_xs_int() const {
+ return ZORBA_IN_RANGE( value_, xs_int );
+}
+
+template<typename F>
inline bool FloatImpl<F>::isNeg() const {
return value_ < 0;
}
=== modified file 'src/zorbatypes/numconversions.cpp'
--- src/zorbatypes/numconversions.cpp 2013-02-07 17:24:36 +0000
+++ src/zorbatypes/numconversions.cpp 2013-03-22 19:09:23 +0000
@@ -29,8 +29,14 @@
std::range_error( BUILD_STRING( '"', (N), "\": number can not be represented as an " TYPE ) )
xs_int to_xs_int( xs_double const &d ) {
+#ifdef ZORBA_WITH_BIG_INTEGER
zstring const temp( d.toIntegerString() );
return ztd::aton<xs_int>( temp.c_str() );
+#else
+ if ( d.is_xs_int() )
+ return static_cast<xs_int>( d.getNumber() );
+ throw RANGE_ERROR( d, "xs:int" );
+#endif /* ZORBA_WITH_BIG_INTEGER */
}
xs_int to_xs_int( xs_integer const &i ) {
=== modified file 'src/zorbatypes/numconversions.h'
--- src/zorbatypes/numconversions.h 2013-02-07 17:24:36 +0000
+++ src/zorbatypes/numconversions.h 2013-03-22 19:09:23 +0000
@@ -29,7 +29,7 @@
*
* @param d The \c xs:double value to convert.
* @return Returns said value.
- * @throws std::range_error if the \c xs:double value can not be accurately
+ * @throws std::range_error if \c floor(xs:double) value can not be accurately
* represented as an \c xs:int.
*/
xs_int to_xs_int( xs_double const &d );
@@ -65,6 +65,14 @@
xs_long to_xs_long( xs_integer const &i );
#ifndef ZORBA_WITH_BIG_INTEGER
+/**
+ * Converts an \c xs:nonNegativeInteger value to an \c xs:long.
+ *
+ * @param i The \c xs:nonNegativeInteger value to convert.
+ * @return Returns said value.
+ * @throws std::range_error if the \c xs:nonNegativeInteger value can not be
+ * accurately represented as an \c xs:long.
+ */
xs_long to_xs_long( xs_nonNegativeInteger const &i );
#endif /* ZORBA_WITH_BIG_INTEGER */
Follow ups
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: noreply, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Zorba Build Bot, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Zorba Build Bot, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Matthias Brantner, 2013-03-22
-
Re: [Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Matthias Brantner, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Zorba Build Bot, 2013-03-22
-
Re: [Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Zorba Build Bot, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Zorba Build Bot, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Zorba Build Bot, 2013-03-22
-
[Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Paul J. Lucas, 2013-03-22
-
Re: [Merge] lp:~paul-lucas/zorba/pjl-misc into lp:zorba
From: Paul J. Lucas, 2013-03-22