diff --git a/doc/mfc_atl.html b/doc/mfc_atl.html new file mode 100644 index 0000000..5717cc8 --- /dev/null +++ b/doc/mfc_atl.html @@ -0,0 +1,313 @@ + + + +
+ + +Author: | +Shunsuke Sogame |
---|---|
Contact: | +mb2act@yahoo.co.jp |
Date: | +26th of May 2006 |
Copyright: | +Shunsuke Sogame 2005-2006. Use, modification and distribution is subject to the Boost Software License, Version 1.0 (see LICENSE_1_0.txt). |
Boost.Range MFC/ATL Extension provides Boost.Range support for MFC/ATL collection and string types.
++CTypedPtrArray<CPtrArray, CList<CString> *> myArray; +... +BOOST_FOREACH (CList<CString> *theList, myArray) +{ + BOOST_FOREACH (CString& str, *theList) + { + boost::to_upper(str); + std::sort(boost::begin(str), boost::end(str)); + ... + } +} ++ +
If the <boost/range/mfc.hpp> is included before or after Boost.Range headers, +the MFC collections and strings become models of Range. +The table below lists the Traversal Category and range_reference of MFC ranges.
+Range | +Traversal Category | +range_reference<Range>::type | +
---|---|---|
CArray<T,A> | +Random Access | +T& | +
CList<T,A> | +Bidirectional | +T& | +
CMap<K,AK,M,AM> | +Forward | +Range::CPair& | +
CTypedPtrArray<B,T*> | +Random Access | +T* const | +
CTypedPtrList<B,T*> | +Bidirectional | +T* const | +
CTypedPtrMap<B,T*,V*> | +Forward | +std::pair<T*,V*> const | +
CByteArray | +Random Access | +BYTE& | +
CDWordArray | +Random Access | +DWORD& | +
CObArray | +Random Access | +CObject* & | +
CPtrArray | +Random Access | +void* & | +
CStringArray | +Random Access | +CString& | +
CUIntArray | +Random Access | +UINT& | +
CWordArray | +Random Access | +WORD& | +
CObList | +Bidirectional | +CObject* & | +
CPtrList | +Bidirectional | +void* & | +
CStringList | +Bidirectional | +CString& | +
CMapPtrToWord | +Forward | +std::pair<void*,WORD> const | +
CMapPtrToPtr | +Forward | +std::pair<void*,void*> const | +
CMapStringToOb | +Forward | +std::pair<String,CObject*> const | +
CMapStringToString | +Forward | +Range::CPair& | +
CMapWordToOb | +Forward | +std::pair<WORD,CObject*> const | +
CMapWordToPtr | +Forward | +std::pair<WORD,void*> const | +
Other Boost.Range metafunctions are defined by the following. +Let Range be any type listed above and ReF be the same as range_reference<Range>::type. +range_value<Range>::type is the same as remove_reference<remove_const<Ref>::type>::type, +range_difference<Range>::type is the same as std::ptrdiff_t, and +range_pointer<Range>::type is the same as add_pointer<remove_reference<Ref>::type>::type. +As for const Range, see const Ranges.
+If the <boost/range/atl.hpp> is included before or after Boost.Range headers, +the ATL collections and strings become models of Range. +The table below lists the Traversal Category and range_reference of ATL ranges.
+Range | +Traversal Category | +range_reference<Range>::type | +
---|---|---|
CAtlArray<E,ET> | +Random Access | +E& | +
CAutoPtrArray<E> | +Random Access | +E& | +
CInterfaceArray<I,pi> | +Random Access | +CComQIPtr<I,pi>& | +
CAtlList<E,ET> | +Bidirectional | +E& | +
CAutoPtrList<E> | +Bidirectional | +E& | +
CHeapPtrList<E,A> | +Bidirectional | +E& | +
CInterfaceList<I,pi> | +Bidirectional | +CComQIPtr<I,pi>& | +
CAtlMap<K,V,KT,VT> | +Forward | +Range::CPair& | +
CRBTree<K,V,KT,VT> | +Bidirectional | +Range::CPair& | +
CRBMap<K,V,KT,VT> | +Bidirectional | +Range::CPair& | +
CRBMultiMap<K,V,KT,VT> | +Bidirectional | +Range::CPair& | +
CSimpleStringT<B,b> | +Random Access | +B& | +
CStringT<B,ST> | +Random Access | +B& | +
CFixedStringT<S,n> | +Random Access | +range_reference<S>::type | +
CStringT<B,ST> | +Random Access | +B& | +
CComBSTR | +Random Access | +OLECHAR& | +
CSimpleArray<T,TE> | +Random Access | +T& | +
Other Boost.Range metafunctions are defined by the following. +Let Range be any type listed above and ReF be the same as range_reference<Range>::type. +range_value<Range>::type is the same as remove_reference<Ref>::type, +range_difference<Range>::type is the same as std::ptrdiff_t, and +range_pointer<Range>::type is the same as add_pointer<remove_reference<Ref>::type>::type. +As for const Range, see const Ranges.
+range_reference<const Range>::type is defined by the following algorithm. +Let Range be any type listed above and ReF be the same as range_reference<Range>::type.
++if (Range is CObArray || Range is CObList) + return CObject const * & +else if (Range is CPtrArray || Range is CPtrList) + return void const * & +else if (there is a type X such that X& is the same as ReF) + return X const & +else if (there is a type X such that X* const is the same as ReF) + return X const * const +else + return ReF ++
Other Boost.Range metafunctions are defined by the following. +range_value<const Range>::type is the same as range_value<Range>::type, +range_difference<const Range>::type is the same as std::ptrdiff_t, and +range_pointer<const Range>::type is the same as add_pointer<remove_reference<range_reference<const Range>::type>::type>::type.
+