diff options
Diffstat (limited to '3rdparty/clucene/src/CLucene/debug/lucenebase.h')
-rw-r--r-- | 3rdparty/clucene/src/CLucene/debug/lucenebase.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/3rdparty/clucene/src/CLucene/debug/lucenebase.h b/3rdparty/clucene/src/CLucene/debug/lucenebase.h new file mode 100644 index 000000000..86cdae1c5 --- /dev/null +++ b/3rdparty/clucene/src/CLucene/debug/lucenebase.h @@ -0,0 +1,75 @@ +/*------------------------------------------------------------------------------ +* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team +* +* Distributable under the terms of either the Apache License (Version 2.0) or +* the GNU Lesser General Public License, as specified in the COPYING file. +------------------------------------------------------------------------------*/ +#ifndef _lucene_debug_lucenebase_ +#define _lucene_debug_lucenebase_ + +#ifdef _LUCENE_PRAGMA_ONCE +# pragma once +#endif + +CL_NS_DEF(debug) + +//Lucenebase is the superclass of all clucene objects. It provides +//memory debugging tracking and/or reference counting +class LuceneBase{ +public: +#ifdef LUCENE_ENABLE_MEMLEAKTRACKING + static void* operator new (size_t size); + static void operator delete (void *p); + int32_t __cl_initnum; ///< The order that the object was created at. This is then used to do a lookup in the objects list + + static void* operator new (size_t size, char const * file, int32_t line); + static void operator delete (void *p, char const * file, int32_t line); + + static void* __cl_voidpadd(void* data, const char* file, int line, size_t size); ///<add arbitary data to the lucenbase_list and returns the same data + static void __cl_voidpremove(const void* data, const char* file, int line);///<remove arbitary data to the lucenbase_list + static void __cl_unregister(const void* obj); ///<un register object from the mem leak and ref count system + + static int32_t __cl_GetUnclosedObjectsCount(); ///< gets the number of unclosed objects + static const char* __cl_GetUnclosedObject(int32_t item); ///< get the name of the nth unclosed object + static char* __cl_GetUnclosedObjects(); ///< get a string with the names of the unclosed objects + static void __cl_PrintUnclosedObjects(); ///< print unclosed objects to the stdout + + ///This will clear memory relating to refcounting + ///other tools can be used to more accurately identify + ///memory leaks. This should only be called just + ///before closing, and after retrieving the + ///unclosed object list + static void __cl_ClearMemory(); + +#endif //LUCENE_ENABLE_MEMLEAKTRACKING + + int __cl_refcount; + LuceneBase(){ + __cl_refcount=1; + } + inline int __cl_getref(){ + return __cl_refcount; + } + inline int __cl_addref(){ + __cl_refcount++; + return __cl_refcount; + } + inline int __cl_decref(){ + __cl_refcount--; + return __cl_refcount; + } + virtual ~LuceneBase(){}; +}; + +class LuceneVoidBase{ + public: + #ifdef _DEBUG + //a compile time check to make sure that _CLDELETE and _CLDECDELETE is being + //used correctly. + int dummy__see_mem_h_for_details; + #endif + virtual ~LuceneVoidBase(){}; +}; + +CL_NS_END +#endif //_lucene_debug_lucenebase_ |