ReverseIterator.From.tlh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #pragma once
  2. #include "ReverseIterator.Base.tlh"
  3. #include "ReverseIterator.Container.tlh"
  4. #include "ReverseIterator.List.tlh"
  5. #include "ReverseIterator.VectorOfPtr.tlh"
  6. //#include "ReverseIterator.ListOfPtr.tlh"
  7. //-----------------------------------------------------------------------------
  8. // From
  9. //-----------------------------------------------------------------------------
  10. namespace ReverseIterator
  11. {
  12. template <typename _Container>
  13. static __ConstIterator <_Container> From (const _Container & ar)
  14. {
  15. return __ConstIterator <_Container> (ar);
  16. }
  17. template <typename _Container>
  18. static __ConstIterator <_Container> From (const _Container * ar)
  19. {
  20. if (ar == nullptr)
  21. return __ConstIterator <_Container> ();
  22. else
  23. return __ConstIterator <_Container> (*ar);
  24. }
  25. template <typename _Container>
  26. static __Iterator <_Container> From (_Container & ar)
  27. {
  28. return __Iterator <_Container> (ar);
  29. }
  30. template <typename _Container>
  31. static __Iterator <_Container> From (_Container * ar)
  32. {
  33. if (ar == nullptr)
  34. return __Iterator <_Container> ();
  35. else
  36. return __Iterator <_Container> (*ar);
  37. }
  38. };
  39. //-----------------------------------------------------------------------------
  40. // From - list
  41. //-----------------------------------------------------------------------------
  42. namespace ReverseIterator
  43. {
  44. template <typename T>
  45. static _L_ConstIterator <T> From (const std::list <T> & ar)
  46. {
  47. return _L_ConstIterator <T> (ar);
  48. }
  49. template <typename T>
  50. static _L_ConstIterator <T> From (const std::list <T> * ar)
  51. {
  52. if (ar == nullptr)
  53. return _L_ConstIterator <T> ();
  54. else
  55. return _L_ConstIterator <T> (*ar);
  56. }
  57. template <typename T>
  58. static _L_Iterator <T> From (std::list <T> & ar)
  59. {
  60. return _L_Iterator <T> (ar);
  61. }
  62. template <typename T>
  63. static _L_Iterator <T> From (std::list <T> * ar)
  64. {
  65. if (ar == nullptr)
  66. return _L_Iterator <T> ();
  67. else
  68. return _L_Iterator <T> (*ar);
  69. }
  70. };
  71. //-----------------------------------------------------------------------------
  72. // From - VectorOfPtr
  73. //-----------------------------------------------------------------------------
  74. namespace ReverseIterator
  75. {
  76. template <typename T>
  77. static _VP_ConstIterator <T> From (const VectorOfPtr <T> & ar)
  78. {
  79. return _VP_ConstIterator <T> (ar);
  80. }
  81. template <typename T>
  82. static _VP_ConstIterator <T> From (const VectorOfPtr <T> * ar)
  83. {
  84. if (ar == nullptr)
  85. return _VP_ConstIterator <T> ();
  86. else
  87. return _VP_ConstIterator <T> (*ar);
  88. }
  89. template <typename T>
  90. static _VP_Iterator <T> From (VectorOfPtr <T> & ar)
  91. {
  92. return _VP_Iterator <T> (ar);
  93. }
  94. template <typename T>
  95. static _VP_Iterator <T> From (VectorOfPtr <T> * ar)
  96. {
  97. if (ar == nullptr)
  98. return _VP_Iterator <T> ();
  99. else
  100. return _VP_Iterator <T> (*ar);
  101. }
  102. };