#pragma once #include "ReverseIterator.Base.tlh" #include "ReverseIterator.Container.tlh" #include "ReverseIterator.List.tlh" #include "ReverseIterator.VectorOfPtr.tlh" //#include "ReverseIterator.ListOfPtr.tlh" //----------------------------------------------------------------------------- // From //----------------------------------------------------------------------------- namespace ReverseIterator { template static __ConstIterator <_Container> From (const _Container & ar) { return __ConstIterator <_Container> (ar); } template static __ConstIterator <_Container> From (const _Container * ar) { if (ar == nullptr) return __ConstIterator <_Container> (); else return __ConstIterator <_Container> (*ar); } template static __Iterator <_Container> From (_Container & ar) { return __Iterator <_Container> (ar); } template static __Iterator <_Container> From (_Container * ar) { if (ar == nullptr) return __Iterator <_Container> (); else return __Iterator <_Container> (*ar); } }; //----------------------------------------------------------------------------- // From - list //----------------------------------------------------------------------------- namespace ReverseIterator { template static _L_ConstIterator From (const std::list & ar) { return _L_ConstIterator (ar); } template static _L_ConstIterator From (const std::list * ar) { if (ar == nullptr) return _L_ConstIterator (); else return _L_ConstIterator (*ar); } template static _L_Iterator From (std::list & ar) { return _L_Iterator (ar); } template static _L_Iterator From (std::list * ar) { if (ar == nullptr) return _L_Iterator (); else return _L_Iterator (*ar); } }; //----------------------------------------------------------------------------- // From - VectorOfPtr //----------------------------------------------------------------------------- namespace ReverseIterator { template static _VP_ConstIterator From (const VectorOfPtr & ar) { return _VP_ConstIterator (ar); } template static _VP_ConstIterator From (const VectorOfPtr * ar) { if (ar == nullptr) return _VP_ConstIterator (); else return _VP_ConstIterator (*ar); } template static _VP_Iterator From (VectorOfPtr & ar) { return _VP_Iterator (ar); } template static _VP_Iterator From (VectorOfPtr * ar) { if (ar == nullptr) return _VP_Iterator (); else return _VP_Iterator (*ar); } };