summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2007-03-09 00:32:53 +0000
committermental <mental@users.sourceforge.net>2007-03-09 00:32:53 +0000
commitd77ff7a722f4336350c65ca2cc53dc19e614a4d0 (patch)
tree44b9b9692b2c60aa1ad25a440d4630a481a4f10b /src
parentspecialize MaybeStorage for Rect, and start using reference maybes to (diff)
downloadinkscape-d77ff7a722f4336350c65ca2cc53dc19e614a4d0.tar.gz
inkscape-d77ff7a722f4336350c65ca2cc53dc19e614a4d0.zip
address type-punned pointer warning
(bzr r2583)
Diffstat (limited to 'src')
-rw-r--r--src/gc-soft-ptr.h19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/gc-soft-ptr.h b/src/gc-soft-ptr.h
index a055ba38c..539eac678 100644
--- a/src/gc-soft-ptr.h
+++ b/src/gc-soft-ptr.h
@@ -27,19 +27,16 @@ namespace GC {
template <typename T>
class soft_ptr {
public:
- soft_ptr(T * const &pointer=NULL) : _pointer(pointer) {
- _register();
- }
- soft_ptr(soft_ptr const &other) : _pointer(other._pointer) {
+ soft_ptr(T *pointer=NULL) : _pointer(pointer) {
_register();
}
- operator T *() const { return _pointer; }
- T &operator*() const { return *_pointer; }
- T *operator->() const { return _pointer; }
- T &operator[](int i) const { return _pointer[i]; }
+ operator T *() const { return static_cast<T *>(_pointer); }
+ T &operator*() const { return *static_cast<T *>(_pointer); }
+ T *operator->() const { return static_cast<T *>(_pointer); }
+ T &operator[](int i) const { return static_cast<T *>(_pointer)[i]; }
- soft_ptr &operator=(T * const &pointer) {
+ soft_ptr &operator=(T *pointer) {
_pointer = pointer;
return *this;
}
@@ -50,11 +47,11 @@ private:
void _register() {
void *base=Core::base(this);
if (base) {
- Core::general_register_disappearing_link((void **)&_pointer, base);
+ Core::general_register_disappearing_link(&_pointer, base);
}
}
- T *_pointer;
+ void *_pointer;
};
}