| /*------------------------------------------------------------------------------ |
| * 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<const TCHAR*,int,CL_NS(util)::Compare::TChar,CL_NS(util)::Equals::TChar,CL_NS(util)::Deletor::tcArray, CL_NS(util)::Deletor::DummyInt32 > __wcsintrntype; |
| typedef CL_NS(util)::CLHashMap<const char*,int,CL_NS(util)::Compare::Char,CL_NS(util)::Equals::Char,CL_NS(util)::Deletor::acArray, CL_NS(util)::Deletor::DummyInt32 > __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 |