~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/pbms/src/cslib/CSObject.h

  • Committer: Lee Bieber
  • Date: 2010-10-22 16:47:38 UTC
  • mfrom: (1841.1.7 drizzle_pbms)
  • Revision ID: kalebral@gmail.com-20101022164738-vv8w22b8towpb307
Merge Barry - fix bug 657830: PBMS build failure in GCC 4.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
// operator out side of a 'for' loop. :)
43
43
#define RETAIN(x) ((x)->retain(),(x))
44
44
 
 
45
// A back reference is a reference stored by an object pointing to it's owner.
 
46
// Since the owner will free all of it's object when it is released the  object
 
47
// itself cannot hold a reference to its owner.
 
48
// Use this macro to make it clear that this is what you intended. 
 
49
#define BACK_REFERENCE(x) (x)
 
50
 
45
51
class CSObject {
46
52
public:
47
53
        CSObject() { }
48
54
        virtual ~CSObject() { finalize(); }
49
55
 
 
56
#ifdef DEBUG
 
57
        virtual void retain(const char *func, const char *file, uint32_t line);
 
58
        virtual void release(const char *func, const char *file, uint32_t line);
 
59
#else
50
60
        virtual void retain();
51
61
        virtual void release();
 
62
#endif
52
63
 
53
64
        /*
54
65
         * All objects are sortable, hashable and linkable,
75
86
                cs_mm_free(ptr);
76
87
        }
77
88
 
78
 
        //virtual void retain(const char *func, const char *file, uint32_t line);
79
 
        //virtual void release(const char *func, const char *file, uint32_t line);
 
89
#endif
 
90
};
 
91
 
 
92
class CSStaticObject : public CSObject {
 
93
#ifdef DEBUG
 
94
        virtual void retain(const char *func, const char *file, uint32_t line);
 
95
        virtual void release(const char *func, const char *file, uint32_t line);
 
96
 
 
97
        int             iTrackMe;
 
98
#else
 
99
        virtual void retain();
 
100
        virtual void release();
80
101
#endif
81
102
};
82
103
 
85
106
        CSRefObject();
86
107
        virtual ~CSRefObject();
87
108
 
 
109
#ifdef DEBUG
 
110
        virtual void startTracking();
 
111
        virtual void retain(const char *func, const char *file, uint32_t line);
 
112
        virtual void release(const char *func, const char *file, uint32_t line);
 
113
 
 
114
        int             iTrackMe;
 
115
#else
88
116
        virtual void retain();
89
117
        virtual void release();
90
 
#ifdef DEBUG
91
 
        //virtual void retain(const char *func, const char *file, uint32_t line);
92
 
        //virtual void release(const char *func, const char *file, uint32_t line);
93
 
        int             iTrackMe;
94
118
#endif
95
119
 
96
 
#ifndef DEBUG
 
120
        uint32_t getRefCount() { return iRefCount;}
 
121
 
97
122
private:
98
 
#endif
99
123
        uint32_t        iRefCount;
100
124
};
101
125
 
104
128
        CSSharedRefObject();
105
129
        virtual ~CSSharedRefObject();
106
130
 
 
131
#ifdef DEBUG
 
132
        virtual void startTracking();
 
133
        virtual void retain(const char *func, const char *file, uint32_t line);
 
134
        virtual void release(const char *func, const char *file, uint32_t line);
 
135
 
 
136
        int             iTrackMe;
 
137
#else
107
138
        virtual void retain();
108
139
        virtual void release();
109
 
#ifdef DEBUG
110
 
        virtual void startTracking();
111
 
        //virtual void retain(const char *func, const char *file, uint32_t line);
112
 
        //virtual void release(const char *func, const char *file, uint32_t line);
113
 
        int             iTrackMe;
114
140
#endif
115
141
 
116
 
#ifndef DEBUG
 
142
        uint32_t getRefCount() { return iRefCount;}
 
143
 
117
144
private:
118
 
#endif
119
 
        uint32_t        iRefCount;
120
 
};
121
 
 
122
 
class CSStaticObject : public CSObject {
123
 
        virtual void retain() {}
124
 
        virtual void release(){ finalize();}
125
 
#ifdef DEBUG
126
 
        int             iTrackMe;
127
 
#endif
128
 
        uint32_t        iRefCount;
129
 
};
130
 
 
131
 
#ifdef DEBUG
132
 
#define new new(__FUNC__, __FILE__, __LINE__)
 
145
        uint32_t        iRefCount;
 
146
};
 
147
 
 
148
#ifdef DEBUG
 
149
#define new                     new(__FUNC__, __FILE__, __LINE__)
 
150
 
 
151
#define retain()        retain(__FUNC__, __FILE__, __LINE__)
 
152
#define release()       release(__FUNC__, __FILE__, __LINE__)
133
153
#endif
134
154
 
135
155
class CSPooled {