core/logic/HandleSys.cpp
changeset 4115 b5511a1fa380
parent 4064 d7ca1e28949d
child 4126 e3385d61402c
     1.1 --- a/core/logic/HandleSys.cpp	Sat Aug 31 19:50:26 2013 -0700
     1.2 +++ b/core/logic/HandleSys.cpp	Sat Aug 31 19:50:36 2013 -0700
     1.3 @@ -59,8 +59,6 @@
     1.4  	m_Types = new QHandleType[HANDLESYS_TYPEARRAY_SIZE];
     1.5  	memset(m_Types, 0, sizeof(QHandleType) * HANDLESYS_TYPEARRAY_SIZE);
     1.6  
     1.7 -	m_strtab = new BaseStringTable(512);
     1.8 -
     1.9  	m_TypeTail = 0;
    1.10  }
    1.11  
    1.12 @@ -68,7 +66,6 @@
    1.13  {
    1.14  	delete [] m_Handles;
    1.15  	delete [] m_Types;
    1.16 -	delete m_strtab;
    1.17  }
    1.18  
    1.19  
    1.20 @@ -142,12 +139,10 @@
    1.21  
    1.22  	if (name && name[0] != '\0')
    1.23  	{
    1.24 -		if (m_TypeLookup.retrieve(name))
    1.25 +		if (m_TypeLookup.contains(name))
    1.26  		{
    1.27  			if (err)
    1.28 -			{
    1.29  				*err = HandleError_Parameter;
    1.30 -			}
    1.31  			return 0;
    1.32  		}
    1.33  	}
    1.34 @@ -209,10 +204,10 @@
    1.35  	pType->dispatch = dispatch;
    1.36  	if (name && name[0] != '\0')
    1.37  	{
    1.38 -		pType->nameIdx = m_strtab->AddString(name);
    1.39 +		pType->name = name;
    1.40  		m_TypeLookup.insert(name, pType);
    1.41  	} else {
    1.42 -		pType->nameIdx = -1;
    1.43 +		pType->name.setVoid();
    1.44  	}
    1.45  
    1.46  	pType->opened = 0;
    1.47 @@ -930,13 +925,8 @@
    1.48  	}
    1.49  
    1.50  	/* Remove it from the type cache. */
    1.51 -	if (pType->nameIdx != -1)
    1.52 -	{
    1.53 -		const char *typeName;
    1.54 -
    1.55 -		typeName = m_strtab->GetString(pType->nameIdx);
    1.56 -		m_TypeLookup.remove(typeName);
    1.57 -	}
    1.58 +	if (!pType->name.isVoid())
    1.59 +		m_TypeLookup.remove(pType->name.chars());
    1.60  
    1.61  	return true;
    1.62  }
    1.63 @@ -1061,14 +1051,10 @@
    1.64  			continue; /* We may have gaps, it's fine. */
    1.65  		}
    1.66  
    1.67 -		if (m_Types[i].nameIdx != -1)
    1.68 -		{
    1.69 -			pTypeName = m_strtab->GetString(m_Types[i].nameIdx);
    1.70 -		}
    1.71 +		if (!m_Types[i].name.isVoid())
    1.72 +			pTypeName = m_Types[i].name.chars();
    1.73  		else
    1.74 -		{
    1.75  			pTypeName = "ANON";
    1.76 -		}
    1.77  
    1.78  		HANDLE_LOG_VERY_BAD("Type\t%-20.20s|\tCount\t%u", pTypeName, pCount[i]);
    1.79  	}
    1.80 @@ -1133,10 +1119,8 @@
    1.81  		unsigned int size = 0;
    1.82  		unsigned int parentIdx;
    1.83  		bool bresult;
    1.84 -		if (pType->nameIdx != -1)
    1.85 -		{
    1.86 -			type = m_strtab->GetString(pType->nameIdx);
    1.87 -		}
    1.88 +		if (!pType->name.isVoid())
    1.89 +			type = pType->name.chars();
    1.90  
    1.91  		if ((parentIdx = m_Handles[i].clone) != 0)
    1.92  		{