/////////////////////////////////////////////////////////////////////////////
-// Name: hash.cpp
+// Name: src/common/hash.cpp
// Purpose: wxHashTable implementation
// Author: Julian Smart
// Modified by: VZ at 25.02.00: type safe hashes with WX_DECLARE_HASH()
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "hash.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
#ifndef WX_PRECOMP
-#include "wx/list.h"
+ #include "wx/list.h"
+ #include "wx/hash.h"
#endif
-#include "wx/hash.h"
-
-#if !wxUSE_STL
+#if wxUSE_OLD_HASH_TABLE
#include <string.h>
#include <stdarg.h>
wxHashTableBase::wxHashTableBase()
{
- m_deleteContents = FALSE;
+ m_deleteContents = false;
m_hashTable = (wxListBase **)NULL;
m_hashSize = 0;
m_count = 0;
wxString wxStringHashTable::Get(long key, bool *wasFound) const
{
- wxCHECK_MSG( m_hashSize, _T(""), _T("must call Create() first") );
+ wxCHECK_MSG( m_hashSize, wxEmptyString, _T("must call Create() first") );
size_t slot = (size_t)abs((int)(key % (long)m_hashSize));
if ( keys->Item(n) == key )
{
if ( wasFound )
- *wasFound = TRUE;
+ *wasFound = true;
return m_values[slot]->Item(n);
}
}
if ( wasFound )
- *wasFound = FALSE;
+ *wasFound = false;
- return _T("");
+ return wxEmptyString;
}
bool wxStringHashTable::Delete(long key) const
{
- wxCHECK_MSG( m_hashSize, FALSE, _T("must call Create() first") );
+ wxCHECK_MSG( m_hashSize, false, _T("must call Create() first") );
size_t slot = (size_t)abs((int)(key % (long)m_hashSize));
{
keys->RemoveAt(n);
m_values[slot]->RemoveAt(n);
- return TRUE;
+ return true;
}
}
}
- return FALSE;
+ return false;
}
#endif // WXWIN_COMPATIBILITY_2_4
hash_table = (wxList**) NULL;
Create(the_key_type, size);
m_count = 0;
- m_deleteContents = FALSE;
+ m_deleteContents = false;
/*
n = size;
current_position = -1;
int i;
for (i = 0; i < size; i++)
hash_table[i] = (wxList *) NULL;
- return TRUE;
+ return true;
}
if (!hash_table[position])
{
hash_table[position] = new wxList (wxKEY_INTEGER);
- if (m_deleteContents) hash_table[position]->DeleteContents(TRUE);
+ if (m_deleteContents) hash_table[position]->DeleteContents(true);
}
hash_table[position]->Append (value, object);
if (!hash_table[position])
{
hash_table[position] = new wxList (wxKEY_STRING);
- if (m_deleteContents) hash_table[position]->DeleteContents(TRUE);
+ if (m_deleteContents) hash_table[position]->DeleteContents(true);
}
hash_table[position]->Append (value, object);
if (!hash_table[position])
{
hash_table[position] = new wxList (wxKEY_INTEGER);
- if (m_deleteContents) hash_table[position]->DeleteContents(TRUE);
+ if (m_deleteContents) hash_table[position]->DeleteContents(true);
}
hash_table[position]->Append (k, object);
if (!hash_table[position])
{
hash_table[position] = new wxList (wxKEY_STRING);
- if (m_deleteContents) hash_table[position]->DeleteContents(TRUE);
+ if (m_deleteContents) hash_table[position]->DeleteContents(true);
}
hash_table[position]->Append (key, object);
wxHashTable::Node* wxHashTable::Next ()
{
wxNode *found = (wxNode *) NULL;
- bool end = FALSE;
+ bool end = false;
while (!end && !found)
{
if (!current_node)
{
current_position = -1;
current_node = (wxNode *) NULL;
- end = TRUE;
+ end = true;
}
else
{
m_count = 0;
}
-#else // if wxUSE_STL
-
-#include "wx/object.h"
+#else // if !wxUSE_OLD_HASH_TABLE
wxHashTableBase_Node::wxHashTableBase_Node( long key, void* value,
wxHashTableBase* table )
{
}
-wxHashTableBase::~wxHashTableBase()
-{
- Destroy();
-}
-
void wxHashTableBase::Create( wxKeyType keyType, size_t size )
{
m_keyType = keyType;
Node* prev = start;
for( curr = prev->GetNext(); curr != node;
- prev = curr, curr = curr->GetNext() );
+ prev = curr, curr = curr->GetNext() ) ;
DoUnlinkNode( bucket, node, prev );
}
return int_key;
}
-//
+// ----------------------------------------------------------------------------
+// wxHashTable
+// ----------------------------------------------------------------------------
wxHashTable::wxHashTable( const wxHashTable& table )
+ : wxHashTableBase()
{
DoCopy( table );
}
return *this;
}
-void wxHashTable::DoCopy( const wxHashTable& table )
+void wxHashTable::DoCopy( const wxHashTable& WXUNUSED(table) )
{
Create( m_keyType, m_size );
- wxASSERT( false );
+ wxFAIL;
}
void wxHashTable::DoDeleteContents( wxHashTableBase_Node* node )
return m_curr;
}
-#endif // wxUSE_STL
+#endif // !wxUSE_OLD_HASH_TABLE