From: <bl...@us...> - 2003-04-30 08:21:44
|
Update of /cvsroot/cpptool/rfta/include/xtl In directory sc8-pr-cvs1:/tmp/cvs-serv30955/include/xtl Modified Files: EnumAdaptor.h Enumerator.h EnumeratorImpl.h NullEnumerator.h StlEnumerator.h Log Message: * portability fixes: now compile & works on Sun CC 5.3 & AIX visual age. Index: EnumAdaptor.h =================================================================== RCS file: /cvsroot/cpptool/rfta/include/xtl/EnumAdaptor.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EnumAdaptor.h 27 Apr 2003 21:59:49 -0000 1.1 --- EnumAdaptor.h 30 Apr 2003 08:21:38 -0000 1.2 *************** *** 6,13 **** namespace Xtl { ! template<typename EnumeratedType> struct EnumAdaptor { ! typedef EnumeratedType EnumeratedType; }; --- 6,13 ---- namespace Xtl { ! template<typename TheEnumeratedType> struct EnumAdaptor { ! typedef TheEnumeratedType EnumeratedType; }; *************** *** 70,73 **** --- 70,75 ---- struct TransformEnumAdaptor : public EnumAdaptor<BOOST_DEDUCED_TYPENAME Functor::result_type> { + typedef BOOST_DEDUCED_TYPENAME Functor::result_type EnumeratedType; // AIX work-around + TransformEnumAdaptor() { *************** *** 93,96 **** --- 95,100 ---- struct ComposeAdaptor : public EnumAdaptor<BOOST_DEDUCED_TYPENAME OutterAdaptor::EnumeratedType> { + typedef BOOST_DEDUCED_TYPENAME OutterAdaptor::EnumeratedType EnumeratedType; // AIX work-around + ComposeAdaptor() { Index: Enumerator.h =================================================================== RCS file: /cvsroot/cpptool/rfta/include/xtl/Enumerator.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Enumerator.h 27 Apr 2003 21:59:49 -0000 1.1 --- Enumerator.h 30 Apr 2003 08:21:39 -0000 1.2 *************** *** 10,14 **** { public: ! typedef boost::intrusive_ptr< EnumeratorImpl<EnumeratedType> > ImplPtr; Enumerator() --- 10,15 ---- { public: ! // typedef boost::intrusive_ptr< EnumeratorImpl<EnumeratedType> > ImplPtr; ! typedef BOOST_DEDUCED_TYPENAME EnumeratorImpl<EnumeratedType>::Ptr ImplPtr; // sunpro CC work-around (type is incomplete error otherwise !?) Enumerator() Index: EnumeratorImpl.h =================================================================== RCS file: /cvsroot/cpptool/rfta/include/xtl/EnumeratorImpl.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EnumeratorImpl.h 27 Apr 2003 21:59:49 -0000 1.1 --- EnumeratorImpl.h 30 Apr 2003 08:21:39 -0000 1.2 *************** *** 27,31 **** { public: ! typedef boost::intrusive_ptr<EnumeratorImpl> Ptr; virtual EnumeratedType getNext() =0; --- 27,31 ---- { public: ! typedef boost::intrusive_ptr<EnumeratorImpl<EnumeratedType> > Ptr; virtual EnumeratedType getNext() =0; Index: NullEnumerator.h =================================================================== RCS file: /cvsroot/cpptool/rfta/include/xtl/NullEnumerator.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** NullEnumerator.h 27 Apr 2003 21:59:49 -0000 1.1 --- NullEnumerator.h 30 Apr 2003 08:21:39 -0000 1.2 *************** *** 9,12 **** --- 9,15 ---- class NullEnumeratorImpl : public EnumeratorImpl<EnumeratedType> { + public: + typedef BOOST_DEDUCED_TYPENAME EnumeratorImpl<EnumeratedType>::Ptr Ptr; // work-around for AIX + public: // overridden from EnumeratorImpl EnumeratedType getNext() Index: StlEnumerator.h =================================================================== RCS file: /cvsroot/cpptool/rfta/include/xtl/StlEnumerator.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** StlEnumerator.h 28 Apr 2003 08:45:08 -0000 1.2 --- StlEnumerator.h 30 Apr 2003 08:21:39 -0000 1.3 *************** *** 4,10 **** #include <xtl/Enumerator.h> #include <xtl/EnumAdaptor.h> - #include <xtl/Int2Type.h> #include <xtl/Type.h> ! #include <boost/type_traits.hpp> namespace Xtl { --- 4,9 ---- #include <xtl/Enumerator.h> #include <xtl/EnumAdaptor.h> #include <xtl/Type.h> ! #include "IteratorTraits.h" namespace Xtl { *************** *** 17,25 **** { public: typedef StlEnumeratorImpl<StlForwardIteratorType,EnumeratedType,Adaptor> ThisType; - enum { - isIdentityAdaptor = ::boost::is_convertible<IdendityEnumAdpator<EnumeratedType> - ,Adaptor>::value - }; StlEnumeratorImpl( StlForwardIteratorType first, --- 16,22 ---- { public: + typedef BOOST_DEDUCED_TYPENAME EnumeratorImpl<EnumeratedType>::Ptr Ptr; // work-around for AIX + typedef StlEnumeratorImpl<StlForwardIteratorType,EnumeratedType,Adaptor> ThisType; StlEnumeratorImpl( StlForwardIteratorType first, *************** *** 45,49 **** throw EnumeratorError(); ! return doGetNext( Int2Type<isIdentityAdaptor>() ); } --- 42,46 ---- throw EnumeratorError(); ! return adaptor_( *current_++ ); } *************** *** 59,73 **** private: - inline EnumeratedType doGetNext( Int2Type<true> ) - { - return *current_++; - } - - inline EnumeratedType doGetNext( Int2Type<false> ) - { - return adaptor_( *current_++ ); - } - - private: StlForwardIteratorType current_; StlForwardIteratorType last_; --- 56,59 ---- *************** *** 166,178 **** - template<typename StlMapType> - Enumerator<BOOST_DEDUCED_TYPENAME StlMapType::key_type> - enumStlMapKeys( const StlMapType &map ) - { - typedef BOOST_DEDUCED_TYPENAME StlMapType::key_type EnumeratedType; - return enumStlAdapt( map, FirstEnumAdaptor<EnumeratedType>() ); - } - - template<typename StlMapType ,typename Adaptor> --- 152,155 ---- *************** *** 180,184 **** enumStlMapKeysAdapt( const StlMapType &map, Adaptor adaptor ) { ! return enumStlAdapt( map, ComposeAdaptor<Adaptor,FirstEnumAdaptor>() ); } --- 157,163 ---- enumStlMapKeysAdapt( const StlMapType &map, Adaptor adaptor ) { ! typedef BOOST_DEDUCED_TYPENAME Adaptor::EnumeratedType EnumeratedType; ! return enumStlAdapt( map, ComposeAdaptor<Adaptor ! ,FirstEnumAdaptor<EnumeratedType> >() ); } *************** *** 224,231 **** template<typename StlMapType> ! Enumerator<BOOST_DEDUCED_TYPENAME StlMapType::referent_type> enumStlMapValues( const StlMapType &map ) { ! typedef BOOST_DEDUCED_TYPENAME StlMapType::referent_type EnumeratedType; return enumStlAdapt( map, SecondEnumAdaptor<EnumeratedType>() ); } --- 203,210 ---- template<typename StlMapType> ! Enumerator<BOOST_DEDUCED_TYPENAME StlMapType::value_type::second_type> enumStlMapValues( const StlMapType &map ) { ! typedef BOOST_DEDUCED_TYPENAME StlMapType::value_type::second_type EnumeratedType; return enumStlAdapt( map, SecondEnumAdaptor<EnumeratedType>() ); } |