|
Boost : |
From: Robert Ramey (ramey_at_[hidden])
Date: 2006-07-14 02:16:21
I'm trying to tweak a couple of tests so that they pass with STLPort 5.0.
A part of the test has to be run differently for this platform and I want
to detect which version of STLPort I'm running on.
Here is the part of the test. This works for STL 4.5.3 but for
STLPort 5.0 it doesn't. When I look in config it looks like
I should be using
// at least one library - MSL notes: it doesn't make much sense
// to implement the == operator for hash collections - but goes ahead
// does it anyway even though it doesn't seem to work. So sort into
// vectors and then compare. Currently, it seems that STLPort versions
// greater than 5.0 don't support the == operator on hashed sets
#if !defined(_STLPORT_VERSION) || (_STLPORT_VERSION < 0x500)
BOOST_CHECK(ahash_map == ahash_map1);
#else
std::vector< std::pair<random_key, A> > tvec, tvec1;
std::copy(ahash_map.begin(), ahash_map.end(), std::back_inserter(tvec));
std::sort(tvec.begin(), tvec.end());
std::copy(ahash_map1.begin(), ahash_map1.end(), std::back_inserter(tvec1));
std::sort(tvec1.begin(), tvec1.end());
BOOST_CHECK(tvec == tvec1);
#endif
When I look at config infoSTLPort standard library version 0x510 I see
__SGI_STL_PORT =0x510
__STL_DEBUG =1
_STLP_DEBUG =1
_STLP_DEFAULT_TYPE_PARAM =1
_STLP_IMPORT_VENDOR_CSTD =1
_STLP_LONG_LONG =long long
_STLP_OWN_IOSTREAMS [no value]
_STLP_USE_NEW_C_HEADERS [no value]
_STLP_USE_OWN_NAMESPACE =1
__GLIBCXX__ =20051201
_GLIBCXX_USE_LONG_LONG =1
_GLIBCXX_USE_C99_MATH =1
_GLIBCXX_USE_C99 =1
_GLIBCXX_USE_LFS =1
_GLIBCXX_HOSTED =1
_GLIBCXX_SJLJ_EXCEPTIONS =1
So it looks like I should have something like:
#if !defined__SGI_STL_PORT) || (__SGI_STL_PORT < 0x500)
But I'm not sure how this would work with STLPort 4.5.3
What should I be doing.
Robert Ramey
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk