Changeset 2151:38ec4a930c05 in lemon-0.x for lemon/refptr.h
- Timestamp:
- 07/18/06 15:29:59 (18 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2865
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/refptr.h
r1977 r2151 46 46 void attach(RefPtr &r) 47 47 { 48 prev=&r; next=r.next; ref=r.ref; 49 r.next=this; 48 if(r.ref) { 49 prev=&r; next=r.next; ref=r.ref; 50 r.next=this; 51 } 50 52 } 51 53 void attach(const T *p) … … 140 142 operator bool() const { return ref; } 141 143 144 ///\e 145 const RefPtr &borrow(const T* &p) { 146 lock(); 147 if(ref==p) { 148 if(prev) prev->next=next; 149 if(next) next->prev=prev; 150 } 151 else release(); 152 ref=p; 153 next=prev=this; 154 unlock(); 155 return *this; 156 } 157 158 ///\e 159 const RefPtr &borrow() { 160 lock(); 161 if(prev) prev->next=next; 162 if(next) next->prev=prev; 163 next=prev=this; 164 unlock(); 165 return *this; 166 } 167 142 168 }; //END OF CLASS REFPTR 143 169
Note: See TracChangeset
for help on using the changeset viewer.