1 2 // vim:sw=2:ai 3 4 /* 5 * Copyright (C) 2010-2011 DeNA Co.,Ltd.. All rights reserved. 6 * Copyright (C) 2011 Kentoku SHIBA 7 * See COPYRIGHT.txt for details. 8 */ 9 10 #ifndef DENA_AUTO_PTRCONTAINER_HPP 11 #define DENA_AUTO_PTRCONTAINER_HPP 12 13 namespace dena { 14 15 /* 16 template <typename Tcnt> 17 struct auto_ptrcontainer { 18 typedef Tcnt container_type; 19 typedef typename container_type::value_type value_type; 20 typedef typename container_type::pointer pointer; 21 typedef typename container_type::reference reference; 22 typedef typename container_type::const_reference const_reference; 23 typedef typename container_type::size_type size_type; 24 typedef typename container_type::difference_type difference_type; 25 typedef typename container_type::iterator iterator; 26 typedef typename container_type::const_iterator const_iterator; 27 typedef typename container_type::reverse_iterator reverse_iterator; 28 typedef typename container_type::const_reverse_iterator 29 const_reverse_iterator; 30 iterator begin() { return cnt.begin(); } 31 const_iterator begin() const { return cnt.begin(); } 32 iterator end() { return cnt.end(); } 33 const_iterator end() const { return cnt.end(); } 34 reverse_iterator rbegin() { return cnt.rbegin(); } 35 reverse_iterator rend() { return cnt.rend(); } 36 const_reverse_iterator rbegin() const { return cnt.rbegin(); } 37 const_reverse_iterator rend() const { return cnt.rend(); } 38 size_type size() const { return cnt.size(); } 39 size_type max_size() const { return cnt.max_size(); } 40 bool empty() const { return cnt.empty(); } 41 reference front() { return cnt.front(); } 42 const_reference front() const { cnt.front(); } 43 reference back() { return cnt.back(); } 44 const_reference back() const { cnt.back(); } 45 void swap(auto_ptrcontainer& x) { cnt.swap(x.cnt); } 46 ~auto_ptrcontainer() { 47 for (iterator i = begin(); i != end(); ++i) { 48 delete *i; 49 } 50 } 51 template <typename Tap> void push_back_ptr(Tap& ap) { 52 cnt.push_back(ap.get()); 53 ap.release(); 54 } 55 void erase_ptr(iterator i) { 56 delete *i; 57 cnt.erase(i); 58 } 59 reference operator [](size_type n) { return cnt[n]; } 60 const_reference operator [](size_type n) const { return cnt[n]; } 61 void clear() { cnt.clear(); } 62 private: 63 Tcnt cnt; 64 }; 65 */ 66 67 }; 68 69 #endif 70 71