/*------------------------------------------------------------------------------ * 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_util_StringIntern_H #define _lucene_util_StringIntern_H #if defined(_LUCENE_PRAGMA_ONCE) # pragma once #endif #include "VoidMap.h" CL_NS_DEF(util) typedef CL_NS(util)::CLHashMap __wcsintrntype; typedef CL_NS(util)::CLHashMap __strintrntype; /** Functions for intern'ing strings. This * is a process of pooling strings thus using less memory, * and furthermore allows intern'd strings to be directly * compared: * string1==string2, rather than _tcscmp(string1,string2) */ class CLStringIntern{ static __wcsintrntype stringPool; static __strintrntype stringaPool; STATIC_DEFINE_MUTEX(THIS_LOCK) public: /** * Internalise the specified string. * \return Returns a pointer to the internalised string */ static const char* internA(const char* str CL_FILELINEPARAM); /** * Uninternalise the specified string. Decreases * the reference count and frees the string if * reference count is zero * \returns true if string was destroyed, otherwise false */ static bool uninternA(const char* str); /** * Internalise the specified string. * \return Returns a pointer to the internalised string */ static const TCHAR* intern(const TCHAR* str CL_FILELINEPARAM); /** * Uninternalise the specified string. Decreases * the reference count and frees the string if * reference count is zero * \returns true if string was destroyed, otherwise false */ static bool unintern(const TCHAR* str); static void shutdown(); }; CL_NS_END #endif