annotate DEPENDENCIES/generic/include/boost/range/atl.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
rev   line source
Chris@16 1 #ifndef BOOST_RANGE_ATL_HPP
Chris@16 2 #define BOOST_RANGE_ATL_HPP
Chris@16 3
Chris@16 4
Chris@16 5
Chris@16 6
Chris@16 7 // Boost.Range ATL Extension
Chris@16 8 //
Chris@16 9 // Copyright Shunsuke Sogame 2005-2006.
Chris@16 10 // Distributed under the Boost Software License, Version 1.0.
Chris@16 11 // (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 12 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 13
Chris@16 14
Chris@16 15
Chris@16 16
Chris@16 17 // config
Chris@16 18 //
Chris@16 19
Chris@16 20
Chris@16 21 #include <atldef.h> // _ATL_VER
Chris@16 22
Chris@16 23
Chris@16 24 #if !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 25 #if (_ATL_VER < 0x0700)
Chris@16 26 #define BOOST_RANGE_ATL_NO_COLLECTIONS
Chris@16 27 #endif
Chris@16 28 #endif
Chris@16 29
Chris@16 30
Chris@16 31 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 32 #if (_ATL_VER < 0x0700) // dubious
Chris@16 33 #define BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX
Chris@16 34 #endif
Chris@16 35 #endif
Chris@16 36
Chris@16 37
Chris@16 38 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLESTRING)
Chris@16 39 #if (_MSC_VER < 1310) // from <boost/regex/mfc.hpp>, but dubious
Chris@16 40 #define BOOST_RANGE_ATL_HAS_OLD_CSIMPLESTRING
Chris@16 41 #endif
Chris@16 42 #endif
Chris@16 43
Chris@16 44
Chris@16 45
Chris@16 46
Chris@16 47 // forward declarations
Chris@16 48 //
Chris@16 49
Chris@16 50
Chris@16 51 #include <basetyps.h> // IID
Chris@16 52
Chris@16 53
Chris@16 54 namespace ATL {
Chris@16 55
Chris@16 56
Chris@16 57 #if !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 58
Chris@16 59
Chris@16 60 // arrays
Chris@16 61 //
Chris@16 62 template< class E, class ETraits >
Chris@16 63 class CAtlArray;
Chris@16 64
Chris@16 65 template< class E >
Chris@16 66 class CAutoPtrArray;
Chris@16 67
Chris@16 68 template< class I, const IID *piid >
Chris@16 69 class CInterfaceArray;
Chris@16 70
Chris@16 71
Chris@16 72 // lists
Chris@16 73 //
Chris@16 74 template< class E, class ETraits >
Chris@16 75 class CAtlList;
Chris@16 76
Chris@16 77 template< class E >
Chris@16 78 class CAutoPtrList;
Chris@16 79
Chris@16 80 template< class E, class Allocator >
Chris@16 81 class CHeapPtrList;
Chris@16 82
Chris@16 83 template< class I, const IID *piid >
Chris@16 84 class CInterfaceList;
Chris@16 85
Chris@16 86
Chris@16 87 // maps
Chris@16 88 //
Chris@16 89 template< class K, class V, class KTraits, class VTraits >
Chris@16 90 class CAtlMap;
Chris@16 91
Chris@16 92 template< class K, class V, class KTraits, class VTraits >
Chris@16 93 class CRBTree;
Chris@16 94
Chris@16 95 template< class K, class V, class KTraits, class VTraits >
Chris@16 96 class CRBMap;
Chris@16 97
Chris@16 98 template< class K, class V, class KTraits, class VTraits >
Chris@16 99 class CRBMultiMap;
Chris@16 100
Chris@16 101
Chris@16 102 // strings
Chris@16 103 //
Chris@16 104 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLESTRING)
Chris@16 105 template< class BaseType, bool t_bMFCDLL >
Chris@16 106 class CSimpleStringT;
Chris@16 107 #else
Chris@16 108 template< class BaseType >
Chris@16 109 class CSimpleStringT;
Chris@16 110 #endif
Chris@16 111
Chris@16 112 template< class BaseType, class StringTraits >
Chris@16 113 class CStringT;
Chris@16 114
Chris@16 115 template< class StringType, int t_nChars >
Chris@16 116 class CFixedStringT;
Chris@16 117
Chris@16 118 template< class BaseType, const int t_nSize >
Chris@16 119 class CStaticString;
Chris@16 120
Chris@16 121
Chris@16 122 #endif // !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 123
Chris@16 124
Chris@16 125 // simples
Chris@16 126 //
Chris@16 127 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 128
Chris@16 129 template< class T, class TEqual >
Chris@16 130 class CSimpleArray;
Chris@16 131
Chris@16 132 template< class TKey, class TVal, class TEqual >
Chris@16 133 class CSimpleMap;
Chris@16 134
Chris@16 135 #else
Chris@16 136
Chris@16 137 template< class T >
Chris@16 138 class CSimpleArray;
Chris@16 139
Chris@16 140 template< class T >
Chris@16 141 class CSimpleValArray;
Chris@16 142
Chris@16 143 template< class TKey, class TVal >
Chris@16 144 class CSimpleMap;
Chris@16 145
Chris@16 146 #endif // !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 147
Chris@16 148
Chris@16 149 // pointers
Chris@16 150 //
Chris@16 151 template< class E >
Chris@16 152 class CAutoPtr;
Chris@16 153
Chris@16 154 template< class T >
Chris@16 155 class CComPtr;
Chris@16 156
Chris@16 157 template< class T, const IID *piid >
Chris@16 158 class CComQIPtr;
Chris@16 159
Chris@16 160 template< class E, class Allocator >
Chris@16 161 class CHeapPtr;
Chris@16 162
Chris@16 163 template< class T >
Chris@16 164 class CAdapt;
Chris@16 165
Chris@16 166
Chris@16 167 } // namespace ATL
Chris@16 168
Chris@16 169
Chris@16 170
Chris@16 171
Chris@16 172 // indirect_iterator customizations
Chris@16 173 //
Chris@16 174
Chris@16 175
Chris@16 176 #include <boost/mpl/identity.hpp>
Chris@16 177 #include <boost/pointee.hpp>
Chris@16 178
Chris@16 179
Chris@16 180 namespace boost {
Chris@16 181
Chris@16 182
Chris@16 183 template< class E >
Chris@16 184 struct pointee< ATL::CAutoPtr<E> > :
Chris@16 185 mpl::identity<E>
Chris@16 186 { };
Chris@16 187
Chris@16 188 template< class T >
Chris@16 189 struct pointee< ATL::CComPtr<T> > :
Chris@16 190 mpl::identity<T>
Chris@16 191 { };
Chris@16 192
Chris@16 193 template< class T, const IID *piid >
Chris@16 194 struct pointee< ATL::CComQIPtr<T, piid> > :
Chris@16 195 mpl::identity<T>
Chris@16 196 { };
Chris@16 197
Chris@16 198 template< class E, class Allocator >
Chris@16 199 struct pointee< ATL::CHeapPtr<E, Allocator> > :
Chris@16 200 mpl::identity<E>
Chris@16 201 { };
Chris@16 202
Chris@16 203 template< class T >
Chris@16 204 struct pointee< ATL::CAdapt<T> > :
Chris@16 205 pointee<T>
Chris@16 206 { };
Chris@16 207
Chris@16 208
Chris@16 209 } // namespace boost
Chris@16 210
Chris@16 211
Chris@16 212
Chris@16 213
Chris@16 214 // extended customizations
Chris@16 215 //
Chris@16 216
Chris@16 217
Chris@16 218 #include <boost/iterator/indirect_iterator.hpp>
Chris@16 219 #include <boost/iterator/zip_iterator.hpp>
Chris@16 220 #include <boost/range/detail/microsoft.hpp>
Chris@16 221 #include <boost/tuple/tuple.hpp>
Chris@16 222 #include <atlbase.h> // CComBSTR
Chris@16 223
Chris@16 224
Chris@16 225 namespace boost { namespace range_detail_microsoft {
Chris@16 226
Chris@16 227
Chris@16 228 #if !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 229
Chris@16 230
Chris@16 231 // arrays
Chris@16 232 //
Chris@16 233
Chris@16 234 struct atl_array_functions :
Chris@16 235 array_functions
Chris@16 236 {
Chris@16 237 template< class Iterator, class X >
Chris@16 238 Iterator end(X& x) // redefine
Chris@16 239 {
Chris@16 240 return x.GetData() + x.GetCount(); // no 'GetSize()'
Chris@16 241 }
Chris@16 242 };
Chris@16 243
Chris@16 244
Chris@16 245 template< class E, class ETraits >
Chris@16 246 struct customization< ATL::CAtlArray<E, ETraits> > :
Chris@16 247 atl_array_functions
Chris@16 248 {
Chris@16 249 template< class X >
Chris@16 250 struct meta
Chris@16 251 {
Chris@16 252 typedef E val_t;
Chris@16 253
Chris@16 254 typedef val_t *mutable_iterator;
Chris@16 255 typedef val_t const *const_iterator;
Chris@16 256 };
Chris@16 257 };
Chris@16 258
Chris@16 259
Chris@16 260 template< class E >
Chris@16 261 struct customization< ATL::CAutoPtrArray<E> > :
Chris@16 262 atl_array_functions
Chris@16 263 {
Chris@16 264 template< class X >
Chris@16 265 struct meta
Chris@16 266 {
Chris@16 267 // ATL::CAutoPtr/CHeapPtr is no assignable.
Chris@16 268 typedef ATL::CAutoPtr<E> val_t;
Chris@16 269 typedef val_t *miter_t;
Chris@16 270 typedef val_t const *citer_t;
Chris@16 271
Chris@16 272 typedef indirect_iterator<miter_t> mutable_iterator;
Chris@16 273 typedef indirect_iterator<citer_t> const_iterator;
Chris@16 274 };
Chris@16 275 };
Chris@16 276
Chris@16 277
Chris@16 278 template< class I, const IID *piid >
Chris@16 279 struct customization< ATL::CInterfaceArray<I, piid> > :
Chris@16 280 atl_array_functions
Chris@16 281 {
Chris@16 282 template< class X >
Chris@16 283 struct meta
Chris@16 284 {
Chris@16 285 typedef ATL::CComQIPtr<I, piid> val_t;
Chris@16 286
Chris@16 287 typedef val_t *mutable_iterator;
Chris@16 288 typedef val_t const *const_iterator;
Chris@16 289 };
Chris@16 290 };
Chris@16 291
Chris@16 292
Chris@16 293 template< class E, class ETraits >
Chris@16 294 struct customization< ATL::CAtlList<E, ETraits> > :
Chris@16 295 list_functions
Chris@16 296 {
Chris@16 297 template< class X >
Chris@16 298 struct meta
Chris@16 299 {
Chris@16 300 typedef E val_t;
Chris@16 301
Chris@16 302 typedef list_iterator<X, val_t> mutable_iterator;
Chris@16 303 typedef list_iterator<X const, val_t const> const_iterator;
Chris@16 304 };
Chris@16 305 };
Chris@16 306
Chris@16 307
Chris@16 308 struct indirected_list_functions
Chris@16 309 {
Chris@16 310 template< class Iterator, class X >
Chris@16 311 Iterator begin(X& x)
Chris@16 312 {
Chris@16 313 typedef typename Iterator::base_type base_t; // == list_iterator
Chris@16 314 return Iterator(base_t(x, x.GetHeadPosition()));
Chris@16 315 }
Chris@16 316
Chris@16 317 template< class Iterator, class X >
Chris@16 318 Iterator end(X& x)
Chris@16 319 {
Chris@16 320 typedef typename Iterator::base_type base_t;
Chris@16 321 return Iterator(base_t(x, POSITION(0)));
Chris@16 322 }
Chris@16 323 };
Chris@16 324
Chris@16 325
Chris@16 326 template< class E >
Chris@16 327 struct customization< ATL::CAutoPtrList<E> > :
Chris@16 328 indirected_list_functions
Chris@16 329 {
Chris@16 330 template< class X >
Chris@16 331 struct meta
Chris@16 332 {
Chris@16 333 typedef ATL::CAutoPtr<E> val_t;
Chris@16 334 typedef list_iterator<X, val_t> miter_t;
Chris@16 335 typedef list_iterator<X const, val_t const> citer_t;
Chris@16 336
Chris@16 337 typedef indirect_iterator<miter_t> mutable_iterator;
Chris@16 338 typedef indirect_iterator<citer_t> const_iterator;
Chris@16 339 };
Chris@16 340 };
Chris@16 341
Chris@16 342
Chris@16 343 template< class E, class Allocator >
Chris@16 344 struct customization< ATL::CHeapPtrList<E, Allocator> > :
Chris@16 345 indirected_list_functions
Chris@16 346 {
Chris@16 347 template< class X >
Chris@16 348 struct meta
Chris@16 349 {
Chris@16 350 typedef ATL::CHeapPtr<E, Allocator> val_t;
Chris@16 351 typedef list_iterator<X, val_t> miter_t;
Chris@16 352 typedef list_iterator<X const, val_t const> citer_t;
Chris@16 353
Chris@16 354 typedef indirect_iterator<miter_t> mutable_iterator;
Chris@16 355 typedef indirect_iterator<citer_t> const_iterator;
Chris@16 356 };
Chris@16 357 };
Chris@16 358
Chris@16 359
Chris@16 360 template< class I, const IID *piid >
Chris@16 361 struct customization< ATL::CInterfaceList<I, piid> > :
Chris@16 362 list_functions
Chris@16 363 {
Chris@16 364 template< class X >
Chris@16 365 struct meta
Chris@16 366 {
Chris@16 367 typedef ATL::CComQIPtr<I, piid> val_t;
Chris@16 368
Chris@16 369 typedef list_iterator<X, val_t> mutable_iterator;
Chris@16 370 typedef list_iterator<X const, val_t const> const_iterator;
Chris@16 371 };
Chris@16 372 };
Chris@16 373
Chris@16 374
Chris@16 375 // maps
Chris@16 376 //
Chris@16 377
Chris@16 378 struct atl_rb_tree_tag
Chris@16 379 { };
Chris@16 380
Chris@16 381 template< >
Chris@16 382 struct customization< atl_rb_tree_tag > :
Chris@16 383 indirected_list_functions
Chris@16 384 {
Chris@16 385 template< class X >
Chris@16 386 struct meta
Chris@16 387 {
Chris@16 388 typedef typename X::CPair val_t;
Chris@16 389
Chris@16 390 typedef list_iterator<X, val_t *, val_t *> miter_t;
Chris@16 391 typedef list_iterator<X const, val_t const *, val_t const *> citer_t;
Chris@16 392
Chris@16 393 typedef indirect_iterator<miter_t> mutable_iterator;
Chris@16 394 typedef indirect_iterator<citer_t> const_iterator;
Chris@16 395 };
Chris@16 396 };
Chris@16 397
Chris@16 398
Chris@16 399 template< class K, class V, class KTraits, class VTraits >
Chris@16 400 struct customization< ATL::CAtlMap<K, V, KTraits, VTraits> > :
Chris@16 401 customization< atl_rb_tree_tag >
Chris@16 402 {
Chris@16 403 template< class Iterator, class X >
Chris@16 404 Iterator begin(X& x) // redefine
Chris@16 405 {
Chris@16 406 typedef typename Iterator::base_type base_t; // == list_iterator
Chris@16 407 return Iterator(base_t(x, x.GetStartPosition())); // no 'GetHeadPosition'
Chris@16 408 }
Chris@16 409 };
Chris@16 410
Chris@16 411
Chris@16 412 // strings
Chris@16 413 //
Chris@16 414
Chris@16 415 struct atl_string_tag
Chris@16 416 { };
Chris@16 417
Chris@16 418 template< >
Chris@16 419 struct customization< atl_string_tag >
Chris@16 420 {
Chris@16 421 template< class X >
Chris@16 422 struct meta
Chris@16 423 {
Chris@16 424 typedef typename X::PXSTR mutable_iterator;
Chris@16 425 typedef typename X::PCXSTR const_iterator;
Chris@16 426 };
Chris@16 427
Chris@16 428 template< class Iterator, class X >
Chris@16 429 typename mutable_<Iterator, X>::type begin(X& x)
Chris@16 430 {
Chris@16 431 return x.GetBuffer(0);
Chris@16 432 }
Chris@16 433
Chris@16 434 template< class Iterator, class X >
Chris@16 435 Iterator begin(X const& x)
Chris@16 436 {
Chris@16 437 return x.GetString();
Chris@16 438 }
Chris@16 439
Chris@16 440 template< class Iterator, class X >
Chris@16 441 Iterator end(X& x)
Chris@16 442 {
Chris@16 443 return begin<Iterator>(x) + x.GetLength();
Chris@16 444 }
Chris@16 445 };
Chris@16 446
Chris@16 447
Chris@16 448 template< class BaseType, const int t_nSize >
Chris@16 449 struct customization< ATL::CStaticString<BaseType, t_nSize> >
Chris@16 450 {
Chris@16 451 template< class X >
Chris@16 452 struct meta
Chris@16 453 {
Chris@16 454 typedef BaseType const *mutable_iterator;
Chris@16 455 typedef mutable_iterator const_iterator;
Chris@16 456 };
Chris@16 457
Chris@16 458 template< class Iterator, class X >
Chris@16 459 Iterator begin(X const& x)
Chris@16 460 {
Chris@16 461 return x;
Chris@16 462 }
Chris@16 463
Chris@16 464 template< class Iterator, class X >
Chris@16 465 Iterator end(X const& x)
Chris@16 466 {
Chris@16 467 return begin<Iterator>(x) + X::GetLength();
Chris@16 468 }
Chris@16 469 };
Chris@16 470
Chris@16 471
Chris@16 472 #endif // !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 473
Chris@16 474
Chris@16 475 template< >
Chris@16 476 struct customization< ATL::CComBSTR >
Chris@16 477 {
Chris@16 478 template< class X >
Chris@16 479 struct meta
Chris@16 480 {
Chris@16 481 typedef OLECHAR *mutable_iterator;
Chris@16 482 typedef OLECHAR const *const_iterator;
Chris@16 483 };
Chris@16 484
Chris@16 485 template< class Iterator, class X >
Chris@16 486 Iterator begin(X& x)
Chris@16 487 {
Chris@16 488 return x.operator BSTR();
Chris@16 489 }
Chris@16 490
Chris@16 491 template< class Iterator, class X >
Chris@16 492 Iterator end(X& x)
Chris@16 493 {
Chris@16 494 return begin<Iterator>(x) + x.Length();
Chris@16 495 }
Chris@16 496 };
Chris@16 497
Chris@16 498
Chris@16 499 // simples
Chris@16 500 //
Chris@16 501
Chris@16 502 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 503 template< class T, class TEqual >
Chris@16 504 struct customization< ATL::CSimpleArray<T, TEqual> > :
Chris@16 505 #else
Chris@16 506 template< class T >
Chris@16 507 struct customization< ATL::CSimpleArray<T> > :
Chris@16 508 #endif
Chris@16 509 array_functions
Chris@16 510 {
Chris@16 511 template< class X >
Chris@16 512 struct meta
Chris@16 513 {
Chris@16 514 typedef T val_t;
Chris@16 515
Chris@16 516 typedef val_t *mutable_iterator;
Chris@16 517 typedef val_t const *const_iterator;
Chris@16 518 };
Chris@16 519 };
Chris@16 520
Chris@16 521
Chris@16 522 #if defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 523
Chris@16 524 template< class T >
Chris@16 525 struct customization< ATL::CSimpleValArray<T> > :
Chris@16 526 array_functions
Chris@16 527 {
Chris@16 528 template< class X >
Chris@16 529 struct meta
Chris@16 530 {
Chris@16 531 typedef T val_t;
Chris@16 532
Chris@16 533 typedef val_t *mutable_iterator;
Chris@16 534 typedef val_t const *const_iterator;
Chris@16 535 };
Chris@16 536 };
Chris@16 537
Chris@16 538 #endif // defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 539
Chris@16 540
Chris@16 541 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 542 template< class TKey, class TVal, class TEqual >
Chris@16 543 struct customization< ATL::CSimpleMap<TKey, TVal, TEqual> >
Chris@16 544 #else
Chris@16 545 template< class TKey, class TVal >
Chris@16 546 struct customization< ATL::CSimpleMap<TKey, TVal> >
Chris@16 547 #endif
Chris@16 548 {
Chris@16 549 template< class X >
Chris@16 550 struct meta
Chris@16 551 {
Chris@16 552 typedef TKey k_val_t;
Chris@16 553 typedef k_val_t *k_miter_t;
Chris@16 554 typedef k_val_t const *k_citer_t;
Chris@16 555
Chris@16 556 typedef TVal v_val_t;
Chris@16 557 typedef v_val_t *v_miter_t;
Chris@16 558 typedef v_val_t const *v_citer_t;
Chris@16 559
Chris@16 560 // Topic:
Chris@16 561 // 'std::pair' can't contain references
Chris@16 562 // because of reference to reference problem.
Chris@16 563
Chris@16 564 typedef zip_iterator< tuple<k_miter_t, v_miter_t> > mutable_iterator;
Chris@16 565 typedef zip_iterator< tuple<k_citer_t, v_citer_t> > const_iterator;
Chris@16 566 };
Chris@16 567
Chris@16 568 template< class Iterator, class X >
Chris@16 569 Iterator begin(X& x)
Chris@16 570 {
Chris@16 571 return Iterator(boost::make_tuple(x.m_aKey, x.m_aVal));
Chris@16 572 }
Chris@16 573
Chris@16 574 template< class Iterator, class X >
Chris@16 575 Iterator end(X& x)
Chris@16 576 {
Chris@16 577 return Iterator(boost::make_tuple(x.m_aKey + x.GetSize(), x.m_aVal + x.GetSize()));
Chris@16 578 }
Chris@16 579 };
Chris@16 580
Chris@16 581
Chris@16 582 } } // namespace boost::range_detail_microsoft
Chris@16 583
Chris@16 584
Chris@16 585
Chris@16 586
Chris@16 587 // range customizations
Chris@16 588 //
Chris@16 589
Chris@16 590
Chris@16 591 #if !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 592
Chris@16 593
Chris@16 594 // arrays
Chris@16 595 //
Chris@16 596 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 597 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 598 (ATL, BOOST_PP_NIL), CAtlArray, 2
Chris@16 599 )
Chris@16 600
Chris@16 601 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 602 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 603 (ATL, BOOST_PP_NIL), CAutoPtrArray, 1
Chris@16 604 )
Chris@16 605
Chris@16 606 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 607 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 608 (ATL, BOOST_PP_NIL), CInterfaceArray, (class)(const IID *)
Chris@16 609 )
Chris@16 610
Chris@16 611
Chris@16 612 // lists
Chris@16 613 //
Chris@16 614 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 615 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 616 (ATL, BOOST_PP_NIL), CAtlList, 2
Chris@16 617 )
Chris@16 618
Chris@16 619 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 620 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 621 (ATL, BOOST_PP_NIL), CAutoPtrList, 1
Chris@16 622 )
Chris@16 623
Chris@16 624 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 625 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 626 (ATL, BOOST_PP_NIL), CHeapPtrList, 2
Chris@16 627 )
Chris@16 628
Chris@16 629 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 630 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 631 (ATL, BOOST_PP_NIL), CInterfaceList, (class)(const IID *)
Chris@16 632 )
Chris@16 633
Chris@16 634
Chris@16 635 //maps
Chris@16 636 //
Chris@16 637 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 638 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 639 (ATL, BOOST_PP_NIL), CAtlMap, 4
Chris@16 640 )
Chris@16 641
Chris@16 642 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 643 boost::range_detail_microsoft::atl_rb_tree_tag,
Chris@16 644 (ATL, BOOST_PP_NIL), CRBTree, 4
Chris@16 645 )
Chris@16 646
Chris@16 647 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 648 boost::range_detail_microsoft::atl_rb_tree_tag,
Chris@16 649 (ATL, BOOST_PP_NIL), CRBMap, 4
Chris@16 650 )
Chris@16 651
Chris@16 652 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 653 boost::range_detail_microsoft::atl_rb_tree_tag,
Chris@16 654 (ATL, BOOST_PP_NIL), CRBMultiMap, 4
Chris@16 655 )
Chris@16 656
Chris@16 657
Chris@16 658 // strings
Chris@16 659 //
Chris@16 660 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLESTRING)
Chris@16 661 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 662 boost::range_detail_microsoft::atl_string_tag,
Chris@16 663 (ATL, BOOST_PP_NIL), CSimpleStringT, (class)(bool)
Chris@16 664 )
Chris@16 665 #else
Chris@16 666 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 667 boost::range_detail_microsoft::atl_string_tag,
Chris@16 668 (ATL, BOOST_PP_NIL), CSimpleStringT, 1
Chris@16 669 )
Chris@16 670 #endif
Chris@16 671
Chris@16 672 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 673 boost::range_detail_microsoft::atl_string_tag,
Chris@16 674 (ATL, BOOST_PP_NIL), CStringT, 2
Chris@16 675 )
Chris@16 676
Chris@16 677 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 678 boost::range_detail_microsoft::atl_string_tag,
Chris@16 679 (ATL, BOOST_PP_NIL), CFixedStringT, (class)(int)
Chris@16 680 )
Chris@16 681
Chris@16 682 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 683 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 684 (ATL, BOOST_PP_NIL), CStaticString, (class)(const int)
Chris@16 685 )
Chris@16 686
Chris@16 687
Chris@16 688 #endif // !defined(BOOST_RANGE_ATL_NO_COLLECTIONS)
Chris@16 689
Chris@16 690
Chris@16 691 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TYPE(
Chris@16 692 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 693 (ATL, BOOST_PP_NIL), CComBSTR
Chris@16 694 )
Chris@16 695
Chris@16 696
Chris@16 697 // simples
Chris@16 698 //
Chris@16 699 #if !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 700
Chris@16 701 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 702 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 703 (ATL, BOOST_PP_NIL), CSimpleArray, 2
Chris@16 704 )
Chris@16 705
Chris@16 706 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 707 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 708 (ATL, BOOST_PP_NIL), CSimpleMap, 3
Chris@16 709 )
Chris@16 710
Chris@16 711 #else
Chris@16 712
Chris@16 713 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 714 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 715 (ATL, BOOST_PP_NIL), CSimpleArray, 1
Chris@16 716 )
Chris@16 717
Chris@16 718 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 719 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 720 (ATL, BOOST_PP_NIL), CSimpleMap, 2
Chris@16 721 )
Chris@16 722
Chris@16 723 BOOST_RANGE_DETAIL_MICROSOFT_CUSTOMIZATION_TEMPLATE(
Chris@16 724 boost::range_detail_microsoft::using_type_as_tag,
Chris@16 725 (ATL, BOOST_PP_NIL), CSimpleValArray, 1
Chris@16 726 )
Chris@16 727
Chris@16 728 #endif // !defined(BOOST_RANGE_ATL_HAS_OLD_CSIMPLE_XXX)
Chris@16 729
Chris@16 730
Chris@16 731
Chris@16 732
Chris@16 733 #endif