~drizzle-trunk/drizzle/development

« back to all changes in this revision

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

  • Committer: Brian Aker
  • Date: 2010-10-20 20:26:18 UTC
  • mfrom: (1859.2.13 refactor)
  • Revision ID: brian@tangent.org-20101020202618-9222n39lm329urv5
Merge for Brian 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2008 PrimeBase Technologies GmbH, Germany
 
1
/* Copyright (c) 2008 PrimeBase Technologies GmbH, Germany
2
2
 *
3
3
 * PrimeBase Media Stream for MySQL
4
4
 *
44
44
 * BASIC OBJECTS
45
45
 */
46
46
 
47
 
#ifdef DEBUG
48
 
void CSObject::retain(const char *func, const char *file, uint32_t line)
49
 
{
50
 
        CSException::throwAssertion(func, file, line, "Non-referenced object cannot be referenced");
51
 
}
52
 
#else
53
47
void CSObject::retain()
54
48
{
55
49
        CSException::throwAssertion(CS_CONTEXT, "Non-referenced object cannot be referenced");
56
50
}
57
 
#endif
58
51
 
59
 
#ifdef DEBUG
60
 
void CSObject::release(const char *, const char *, uint32_t )
61
 
#else
62
52
void CSObject::release()
 
53
{
 
54
        delete this;
 
55
}
 
56
 
 
57
#ifdef DEBUG
 
58
/*
 
59
void CSObject::retain(const char *func, const char *file, uint32_t line)
 
60
{
 
61
        CSException::throwAssertion(CS_CONTEXT, "Non-referenced object cannot be referenced");
 
62
}
 
63
 
 
64
void CSObject::release(const char *func, const char *file, uint32_t line)
 
65
{
 
66
        delete this;
 
67
}
 
68
*/
63
69
#endif
64
 
{
65
 
        delete this;
66
 
}
67
70
 
68
71
CSObject *CSObject::getKey() { CSException::throwCoreError(CS_CONTEXT, CS_ERR_IMPL_MISSING, __FUNC__); return NULL; }
69
72
 
82
85
void CSObject::setNextLink(CSObject *) { CSException::throwCoreError(CS_CONTEXT, CS_ERR_IMPL_MISSING, __FUNC__); }
83
86
 
84
87
void CSObject::setPrevLink(CSObject *) { CSException::throwCoreError(CS_CONTEXT, CS_ERR_IMPL_MISSING, __FUNC__); }
85
 
 
86
 
/*
87
 
 * ---------------------------------------------------------------
88
 
 * STATIC OBJECTS
89
 
 */
90
 
 
91
 
#ifdef DEBUG
92
 
void CSStaticObject::retain(const char *, const char *, uint32_t )
93
 
#else
94
 
void CSStaticObject::retain()
95
 
#endif
96
 
{
97
 
}
98
 
 
99
 
#ifdef DEBUG
100
 
void CSStaticObject::release(const char *, const char *, uint32_t )
101
 
#else
102
 
void CSStaticObject::release()
103
 
#endif
104
 
{
105
 
        finalize();
106
 
}
107
 
 
108
88
/*
109
89
 * ---------------------------------------------------------------
110
90
 * REFERENCE OBJECTS
111
91
 */
112
 
 
113
92
CSRefObject::CSRefObject():
114
93
CSObject(),
115
94
iRefCount(1)
125
104
        ASSERT(iRefCount == 0);
126
105
}
127
106
 
128
 
#ifdef DEBUG
129
 
void CSRefObject::retain(const char *func, const char *file, uint32_t line)
130
 
#else
131
107
void CSRefObject::retain()
132
 
#endif
133
108
{
134
109
        if (!iRefCount)
135
110
                CSException::throwAssertion(CS_CONTEXT, "Freed object being retained.");
136
111
                
137
112
        iRefCount++;
138
113
#ifdef DEBUG
139
 
        cs_mm_track_memory(func, file, line, this, true, iRefCount, iTrackMe);
140
 
#endif
141
 
}
142
 
 
143
 
#ifdef DEBUG
 
114
        cs_mm_track_memory(NULL, NULL, 0, this, true, iRefCount, iTrackMe);
 
115
#endif
 
116
}
 
117
 
 
118
void CSRefObject::release()
 
119
{
 
120
        bool terminate;
 
121
 
 
122
#ifdef DEBUG
 
123
        cs_mm_track_memory(NULL, NULL, 0, this, false, iRefCount, iTrackMe);
 
124
#endif
 
125
        iRefCount--;
 
126
        if (!iRefCount)
 
127
                terminate = true;
 
128
        else
 
129
                terminate = false;
 
130
 
 
131
        if (terminate)
 
132
                delete this;
 
133
}
 
134
 
 
135
#ifdef DEBUG
 
136
/*
 
137
void CSRefObject::retain(const char *func, const char *file, uint32_t line)
 
138
{
 
139
        iRefCount++;
 
140
        cs_mm_print_track(func, file, line, this, true, iRefCount);
 
141
}
 
142
 
144
143
void CSRefObject::release(const char *func, const char *file, uint32_t line)
145
 
#else
146
 
void CSRefObject::release()
147
 
#endif
148
144
{
149
145
        bool terminate;
150
146
 
151
 
#ifdef DEBUG
152
147
        cs_mm_track_memory(func, file, line, this, false, iRefCount, iTrackMe);
153
 
#endif
154
148
        iRefCount--;
155
149
        if (!iRefCount)
156
150
                terminate = true;
160
154
        if (terminate)
161
155
                delete this;
162
156
}
163
 
 
164
 
#ifdef DEBUG
165
 
void CSRefObject::startTracking()
166
 
{
167
 
        iTrackMe = 1;
168
 
        cs_mm_track_memory(NULL, NULL, 0, this, true, iRefCount, iTrackMe);
169
 
}
 
157
*/
170
158
#endif
171
159
 
172
160
/*
190
178
        ASSERT(iRefCount == 0);
191
179
}
192
180
 
193
 
#ifdef DEBUG
194
 
void CSSharedRefObject::retain(const char *func, const char *file, uint32_t line)
195
 
#else
196
181
void CSSharedRefObject::retain()
197
 
#endif
198
182
{
199
183
        lock();
200
184
        iRefCount++;
201
185
#ifdef DEBUG
202
 
        cs_mm_track_memory(func, file, line, this, true, iRefCount, iTrackMe);
 
186
        cs_mm_track_memory(NULL, NULL, 0, this, true, iRefCount, iTrackMe);
203
187
#endif
204
188
        unlock();
205
189
}
206
190
 
207
 
#ifdef DEBUG
208
 
void CSSharedRefObject::release(const char *func, const char *file, uint32_t line)
209
 
#else
210
191
void CSSharedRefObject::release()
211
 
#endif
212
192
{
213
193
        bool terminate;
214
194
 
215
195
        lock();
216
196
#ifdef DEBUG
217
 
        cs_mm_track_memory(func, file, line, this, false, iRefCount, iTrackMe);
 
197
        cs_mm_track_memory(NULL, NULL, 0, this, false, iRefCount, iTrackMe);
218
198
#endif
219
199
        iRefCount--;
220
200
        if (!iRefCount)