00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00047 #ifndef MFCSTL_INCL_MFCSTL_COLLECTIONS_HPP_CARRAY_TRAITS
00048 #define MFCSTL_INCL_MFCSTL_COLLECTIONS_HPP_CARRAY_TRAITS
00049 
00050 #ifndef STLSOFT_DOCUMENTATION_SKIP_SECTION
00051 # define MFCSTL_VER_MFCSTL_COLLECTIONS_HPP_CARRAY_TRAITS_MAJOR      2
00052 # define MFCSTL_VER_MFCSTL_COLLECTIONS_HPP_CARRAY_TRAITS_MINOR      0
00053 # define MFCSTL_VER_MFCSTL_COLLECTIONS_HPP_CARRAY_TRAITS_REVISION   1
00054 # define MFCSTL_VER_MFCSTL_COLLECTIONS_HPP_CARRAY_TRAITS_EDIT       12
00055 #endif 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 #ifndef MFCSTL_INCL_MFCSTL_HPP_MFCSTL
00071 # include <mfcstl/mfcstl.hpp>
00072 #endif 
00073 #if defined(STLSOFT_CF_TEMPLATE_PARTIAL_SPECIALISATION_SUPPORT) && \
00074     !defined(MFCSTL_NO_INCLUDE_AFXTEMPL_BY_DEFAULT)
00075 # include <afxtempl.h>
00076 #endif 
00077 
00078 #ifdef STLSOFT_UNITTEST
00079 # include <stlsoft/meta/is_same_type.hpp>
00080 #endif 
00081 
00082 
00083 
00084 
00085 
00086 #ifndef _MFCSTL_NO_NAMESPACE
00087 # if defined(_STLSOFT_NO_NAMESPACE) || \
00088      defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
00089 
00090 namespace mfcstl
00091 {
00092 # else
00093 
00094 
00095 namespace stlsoft
00096 {
00097 
00098 namespace mfcstl_project
00099 {
00100 
00101 # endif 
00102 #endif 
00103 
00104 
00105 
00106 
00107 
00108 #ifdef STLSOFT_DOCUMENTATION_SKIP_SECTION
00109 
00113 template <ss_typename_param_k C>
00114 struct CArray_traits
00115 {
00117     typedef ????            value_type;
00119     typedef ????            arg_type;
00121     typedef ????            array_type;
00122 };
00123 
00124 #else 
00125 
00126 template <ss_typename_param_k C>
00127 struct CArray_traits;
00128 
00129 STLSOFT_TEMPLATE_SPECIALISATION
00130 struct CArray_traits<CByteArray>
00131 {
00132     typedef BYTE            value_type;
00133     typedef BYTE            arg_type;
00134     typedef CByteArray      array_type;
00135 };
00136 
00137 STLSOFT_TEMPLATE_SPECIALISATION
00138 struct CArray_traits<CDWordArray>
00139 {
00140     typedef DWORD           value_type;
00141     typedef DWORD           arg_type;
00142     typedef CDWordArray     array_type;
00143 };
00144 
00145 STLSOFT_TEMPLATE_SPECIALISATION
00146 struct CArray_traits<CUIntArray>
00147 {
00148     typedef UINT            value_type;
00149     typedef UINT            arg_type;
00150     typedef CUIntArray      array_type;
00151 };
00152 
00153 STLSOFT_TEMPLATE_SPECIALISATION
00154 struct CArray_traits<CWordArray>
00155 {
00156     typedef WORD            value_type;
00157     typedef WORD            arg_type;
00158     typedef CWordArray      array_type;
00159 };
00160 
00161 STLSOFT_TEMPLATE_SPECIALISATION
00162 struct CArray_traits<CPtrArray>
00163 {
00164     typedef void*           value_type;
00165     typedef void*           arg_type;
00166     typedef CPtrArray       array_type;
00167 };
00168 
00169 STLSOFT_TEMPLATE_SPECIALISATION
00170 struct CArray_traits<CObArray>
00171 {
00172     typedef CObject*        value_type;
00173     typedef CObject*        arg_type;
00174     typedef CObArray        array_type;
00175 };
00176 
00177 STLSOFT_TEMPLATE_SPECIALISATION
00178 struct CArray_traits<CStringArray>
00179 {
00180     typedef CString         value_type;
00181 # if 0
00182     typedef CString const&  arg_type;
00183 # else 
00184     typedef LPCTSTR         arg_type;
00185 # endif 
00186     typedef CStringArray    array_type;
00187 };
00188 
00189 # if defined(__AFXTEMPL_H__) && \
00190      defined(STLSOFT_CF_TEMPLATE_PARTIAL_SPECIALISATION_SUPPORT)
00191 template <class V, class A>
00192 struct CArray_traits<CArray<V, A> >
00193 {
00194     typedef V               value_type;
00195     typedef A               arg_type;
00196     typedef CArray<V, A>    array_type;
00197 };
00198 # endif 
00199 #endif 
00200 
00205 template<   ss_typename_param_k V
00206         ,   ss_typename_param_k A
00207         ,   ss_typename_param_k C
00208         >
00209 struct CArray_specific_traits
00210 {
00211     typedef V               value_type;
00212     typedef A               arg_type;
00213     typedef C               array_type;
00214 };
00215 
00217 
00218 
00219 #ifdef STLSOFT_UNITTEST
00220 # include "./unittest/carray_traits_unittest_.h"
00221 #endif 
00222 
00223 
00224 
00225 #ifndef _MFCSTL_NO_NAMESPACE
00226 # if defined(_STLSOFT_NO_NAMESPACE) || \
00227      defined(STLSOFT_DOCUMENTATION_SKIP_SECTION)
00228 } 
00229 # else
00230 } 
00231 } 
00232 # endif 
00233 #endif 
00234 
00235 
00236 
00237 #endif 
00238 
00239