annotate DEPENDENCIES/generic/include/boost/range/atl.hpp @ 133:4acb5d8d80b6 tip

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