00001 /*! \file 00002 * X-Forge Util <br> 00003 * Copyright 2000-2003 Fathammer Ltd 00004 * 00005 * \brief XFuStringKey.cpp is the implementation file for the 00006 * XFuStringKey class. For more information, see XFuStringKey.h. 00007 * 00008 * $Id: XFuStringKey.cpp,v 1.9 2003/09/29 13:47:35 jari Exp $ 00009 * $Date: 2003/09/29 13:47:35 $ 00010 * $Revision: 1.9 $ 00011 */ 00012 00013 #include <xfcore/XFcCore.h> 00014 #include <xfutil/XFuStringKey.h> 00015 00016 00017 XFuStringKey::XFuStringKey() 00018 { 00019 mKey = NULL; 00020 mHashCode = 0; 00021 mUsingData = 0; 00022 } 00023 00024 00025 XFuStringKey::XFuStringKey(const CHAR *aKey) 00026 { 00027 init(aKey); 00028 } 00029 00030 00031 XFuStringKey::XFuStringKey(const XFuStringKey &aKey) 00032 { 00033 init(aKey.mKey); 00034 } 00035 00036 00037 XFuStringKey & XFuStringKey::operator=(const XFuStringKey &aKey) 00038 { 00039 init(aKey.mKey); 00040 return *this; 00041 } 00042 00043 00044 void XFuStringKey::init(const CHAR *aKey) 00045 { 00046 mKey = NULL; 00047 mHashCode = 0; 00048 mUsingData = 0; 00049 00050 if (aKey) 00051 { 00052 INT32 keyLen = XFcStringToolkit::getLength(aKey); 00053 if (keyLen < XFUSTRINGKEY_DATASIZE - 1) 00054 mUsingData = 1; 00055 if (mUsingData) 00056 { 00057 mKey = mData; 00058 INT a; 00059 for (a = 0; a < keyLen; ++a) 00060 mData[a] = aKey[a]; 00061 mData[keyLen] = 0; 00062 } 00063 else 00064 { 00065 mKey = XFcStringToolkit::copy(aKey); 00066 } 00067 mHashCode = 0; 00068 INT32 pos; 00069 for (pos = 0; pos < keyLen; pos++) 00070 mHashCode = 7 * mHashCode + aKey[pos]; 00071 } 00072 else 00073 { 00074 mKey = NULL; 00075 } 00076 } 00077 00078 00079 XFuStringKey::~XFuStringKey() 00080 { 00081 if (!mUsingData) 00082 delete[] mKey; 00083 } 00084 00085 00086 UINT32 XFcHashtableHash<XFuStringKey>::operator() (const XFuStringKey key) const 00087 { 00088 return key.mHashCode; 00089 } 00090 00091 00092 INT XFcHashtableEQ<XFuStringKey>::operator() (const XFuStringKey key1, const XFuStringKey key2) const 00093 { 00094 return !XFcStringToolkit::compare(key1.mKey, key2.mKey); 00095 } 00096 00097
![]() | ||||
![]() |
Confidential Copyright © 2002-2003 Fathammer | with doxygen by Dimitri van Heesch |