RefCount<StoreHashIndex> sd;
private:
- CBDATA_CLASS2(StoreSearchHashIndex);
void copyBucket();
void (*callback)(void *cbdata);
void *cbdata;
bool _done;
int bucket;
Vector<StoreEntry *> entries;
+
+ // keep this last. it plays with private/public
+ CBDATA_CLASS2(StoreSearchHashIndex);
};
#endif /* SQUID_STOREHASHINDEX_H */
#define cbdataAlloc(type) ((type *)cbdataInternalAlloc(CBDATA_##type))
#define cbdataFree(var) do {if (var) {cbdataInternalFree(var); var = NULL;}} while(0)
#define cbdataReferenceValidDone(var, ptr) cbdataInternalReferenceDoneValid((void **)&(var), (ptr))
+
+/**
+ * This needs to be defined LAST in teh class definition. It plays with private/public states in C++.
+ */
#define CBDATA_CLASS2(type) \
+ private: \
static cbdata_type CBDATA_##type; \
public: \
void *operator new(size_t size) { \
} \
void operator delete (void *address) { \
if (address) cbdataInternalFree(address);\
- } \
- private:
+ }
#endif
#define cbdataReference(var) (cbdataInternalLock(var), var)
#define cbdataReferenceDone(var) do {if (var) {cbdataInternalUnlock(var); var = NULL;}} while(0)
* - RBC 20060820
*/
void *data; /* the wrapped data */
- private:
+
CBDATA_CLASS2(generic_cbdata);
};
static void abort(void*);
private:
- CBDATA_CLASS2(FwdState);
Pointer self;
ErrorState *err;
int client_fd;
struct sockaddr_in src;
#endif
+
+ // NP: keep this last. It plays with private/public
+ CBDATA_CLASS2(FwdState);
};
#endif