ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/util.h
(Generate patch)

Comparing deliantra/server/include/util.h (file contents):
Revision 1.6 by root, Mon Sep 11 01:16:20 2006 UTC vs.
Revision 1.7 by root, Mon Sep 11 20:28:37 2006 UTC

13 void *operator new (size_t s, void *); 13 void *operator new (size_t s, void *);
14 void *operator new (size_t s); 14 void *operator new (size_t s);
15 void *operator new [] (size_t s); 15 void *operator new [] (size_t s);
16 void operator delete (void *p, size_t s); 16 void operator delete (void *p, size_t s);
17 void operator delete [] (void *p, size_t s); 17 void operator delete [] (void *p, size_t s);
18};
19
20struct refcounted
21{
22 mutable int refcnt;
23 refcounted () : refcnt (0) { }
24 void refcnt_inc () { ++refcnt; }
25 void refcnt_dec () { --refcnt;
26 if (refcnt < 0)abort();}//D
27};
28
29template<class T>
30struct refptr
31{
32 T *p;
33
34 refptr () : p(0) { }
35 refptr (const refptr<T> &p) : p(p.p) { if (p) p->refcnt_inc (); }
36 refptr (T *p) : p(p) { if (p) p->refcnt_inc (); }
37 ~refptr () { if (p) p->refcnt_dec (); }
38
39 const refptr<T> &operator =(T *o)
40 {
41 if (p) p->refcnt_dec ();
42 p = o;
43 if (p) p->refcnt_inc ();
44
45 return *this;
46 }
47
48 const refptr<T> &operator =(const refptr<T> o)
49 {
50 *this = o.p;
51 return *this;
52 }
53
54 T &operator * () const { return *p; }
55 T *operator ->() const { return p; }
56
57 operator T *() const { return p; }
18}; 58};
19 59
20struct str_hash 60struct str_hash
21{ 61{
22 std::size_t operator ()(const char *s) const 62 std::size_t operator ()(const char *s) const

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines