ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtstl.h
(Generate patch)

Comparing rxvt-unicode/src/rxvtstl.h (file contents):
Revision 1.2 by pcg, Sat Jan 31 00:20:21 2004 UTC vs.
Revision 1.4 by pcg, Fri Feb 13 12:16:21 2004 UTC

6 6
7#include "simplevec.h" 7#include "simplevec.h"
8 8
9template<typename T> 9template<typename T>
10struct vector : simplevec<T> 10struct vector : simplevec<T>
11{ 11{ };
12};
13 12
14#if 0 13#if 0
15template<typename T> 14template<typename T>
16struct rxvt_vec : simplevec<void *> { 15struct rxvt_vec : simplevec<void *> {
17 typedef T *iterator; 16 typedef T *iterator;
20 T pop_back () { return (T*)simplevec<void *>::pop_back (); } 19 T pop_back () { return (T*)simplevec<void *>::pop_back (); }
21 void erase (int i) { erase (begin () + i); } 20 void erase (int i) { erase (begin () + i); }
22 void erase (iterator i) { simplevec<void *>::erase ((void **)i); } 21 void erase (iterator i) { simplevec<void *>::erase ((void **)i); }
23 iterator begin () const { return (iterator)simplevec<void *>::begin (); } 22 iterator begin () const { return (iterator)simplevec<void *>::begin (); }
24 iterator end () const { return (iterator)simplevec<void *>::end (); } 23 iterator end () const { return (iterator)simplevec<void *>::end (); }
25 T &operator [](int i) { return *(T *)(&((*(simplevec<void *> *)this)[i])); } 24 T &operator [] (int i) { return * (T *) (& ((* (simplevec<void *> *)this)[i])); }
26 const T &operator [](int i) const { return *(const T *)(&((*(const simplevec<void *> *)this)[i])); } 25 const T &operator [] (int i) const { return * (const T *) (& ((* (const simplevec<void *> *)this)[i])); }
27}; 26};
28#endif 27#endif
29 28
30template <typename I, typename T> 29template <typename I, typename T>
31I find(I first, I last, const T& value) 30I find (I first, I last, const T& value)
32{ 31{
33 while (first != last && *first != value) 32 while (first != last && *first != value)
34 ++first; 33 ++first;
35 34
36 return first; 35 return first;
38 37
39template<typename T> 38template<typename T>
40struct auto_ptr { 39struct auto_ptr {
41 T *p; 40 T *p;
42 41
43 auto_ptr() : p(0) { } 42 auto_ptr () : p (0) { }
44 auto_ptr(T *a) : p(a) { } 43 auto_ptr (T *a) : p (a) { }
45 44
46 auto_ptr(auto_ptr<T> &a) 45 auto_ptr (auto_ptr<T> &a)
47 { 46 {
48 p = a.p; 47 p = a.p;
49 a.p = 0; 48 a.p = 0;
50 } 49 }
51 50
52 template<typename A> 51 template<typename A>
53 auto_ptr(auto_ptr<A> &a) 52 auto_ptr (auto_ptr<A> &a)
54 { 53 {
55 p = a.p; 54 p = a.p;
56 a.p = 0; 55 a.p = 0;
57 } 56 }
58 57
59 ~auto_ptr() 58 ~auto_ptr ()
60 { 59 {
61 delete p; 60 delete p;
62 } 61 }
63 62
64 // void because it makes sense in our context 63 // void because it makes sense in our context
65 void operator =(T *a) 64 void operator = (T *a)
66 { 65 {
67 delete p; 66 delete p;
68 p = a; 67 p = a;
69 } 68 }
70 69
71 void operator =(auto_ptr &a) 70 void operator = (auto_ptr &a)
72 { 71 {
73 *this = a.p; 72 *this = a.p;
74 a.p = 0; 73 a.p = 0;
75 } 74 }
76 75
77 template<typename A> 76 template<typename A>
78 void operator =(auto_ptr<A> &a) 77 void operator = (auto_ptr<A> &a)
79 { 78 {
80 *this = a.p; 79 *this = a.p;
81 a.p = 0; 80 a.p = 0;
82 } 81 }
83 82
84 operator T *() const { return p; } 83 operator T * () const { return p; }
85 84
86 T *operator ->() const { return p; } 85 T *operator -> () const { return p; }
87 T &operator *() const { return *p; } 86 T &operator * () const { return *p; }
88 87
89 T *get () 88 T *get ()
90 { 89 {
91 T *r = p; 90 T *r = p;
92 p = 0; 91 p = 0;
98 97
99struct stringvec : simplevec<char *> 98struct stringvec : simplevec<char *>
100{ 99{
101 ~stringvec () 100 ~stringvec ()
102 { 101 {
103 for (char **c = begin(); c != end(); c++) 102 for (char **c = begin (); c != end (); c++)
104 delete [] *c; 103 delete [] *c;
105 } 104 }
106}; 105};
107 106
108#endif 107#endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines