summaryrefslogtreecommitdiff
path: root/idl/source/cmptools/hash.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'idl/source/cmptools/hash.cxx')
-rw-r--r--idl/source/cmptools/hash.cxx213
1 files changed, 0 insertions, 213 deletions
diff --git a/idl/source/cmptools/hash.cxx b/idl/source/cmptools/hash.cxx
deleted file mode 100644
index 6ddc5a618b..0000000000
--- a/idl/source/cmptools/hash.cxx
+++ /dev/null
@@ -1,213 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_idl.hxx"
-
-// C and C++ includes
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-
-// program-sensitive includes
-#include <hash.hxx>
-#include <tools/debug.hxx>
-
-SvStringHashEntry::~SvStringHashEntry() { };
-
-SvHashTable::SvHashTable( sal_uInt32 nMaxEntries )
-{
- nMax = nMaxEntries; // set max entries
- nFill = 0; // no entries
- lTry = 0;
- lAsk = 0;
-}
-
-SvHashTable::~SvHashTable()
-{
-}
-
-sal_Bool SvHashTable::Test_Insert( const void * pElement, sal_Bool bInsert,
- sal_uInt32 * pInsertPos )
-{
- sal_uInt32 nHash;
- sal_uInt32 nIndex;
- sal_uInt32 nLoop;
-
- lAsk++;
- lTry++;
-
- nHash = HashFunc( pElement );
- nIndex = nHash % nMax;
-
- nLoop = 0; // divide to range
- while( (nMax != nLoop) && IsEntry( nIndex ) )
- { // is place occupied
- if( COMPARE_EQUAL == Compare( pElement, nIndex ) )
- {
- if( pInsertPos )
- *pInsertPos = nIndex; // place of Element
- return sal_True;
- }
- nLoop++;
- lTry++;
- nIndex = (sal_uInt16)(nIndex + nHash + 7) % nMax;
- }
-
- if( bInsert )
- {
- DBG_ASSERT( nMax != nLoop, "Hash table full" );
- if( nMax != nLoop )
- {
- nFill++;
- *pInsertPos = nIndex; // return free place
- return sal_True;
- }
- }
- return( sal_False );
-}
-
-SvStringHashTable::SvStringHashTable( sal_uInt32 nMaxEntries )
- : SvHashTable( nMaxEntries )
-{
- pEntries = new SvStringHashEntry[ nMaxEntries ];
-
- // set RefCount to one
- SvStringHashEntry * pPos, *pEnd;
- pPos = pEntries;
- pEnd = pEntries + nMaxEntries;
- while( pPos != pEnd )
- {
- pPos->AddRef();
- pPos++;
- }
-}
-
-SvStringHashTable::~SvStringHashTable()
-{
-#ifdef DBG_UTIL
- // set RefCount to one
- SvStringHashEntry * pPos, *pEnd;
- pPos = pEntries;
- pEnd = pEntries + GetMax();
- while( pPos != pEnd )
- {
- DBG_ASSERT( pPos->GetRefCount() == 1, "Reference count != 1" );
- pPos++;
- }
-#endif
-
- delete [] pEntries;
-}
-
-sal_uInt32 SvStringHashTable::HashFunc( const void * pElement ) const
-{
- sal_uInt32 nHash = 0; // hash value
- const char * pStr = ((const ByteString * )pElement)->GetBuffer();
-
- int nShift = 0;
- while( *pStr )
- {
- if( isupper( *pStr ) )
- nHash ^= sal_uInt32(*pStr - 'A' + 26) << nShift;
- else
- nHash ^= sal_uInt32(*pStr - 'a') << nShift;
- if( nShift == 28 )
- nShift = 0;
- else
- nShift += 4;
- pStr++;
- }
- return( nHash );
-}
-
-ByteString SvStringHashTable::GetNearString( const ByteString & rName ) const
-{
- for( sal_uInt32 i = 0; i < GetMax(); i++ )
- {
- SvStringHashEntry * pE = Get( i );
- if( pE )
- {
- if( pE->GetName().EqualsIgnoreCaseAscii( rName ) && !pE->GetName().Equals( rName ) )
- return pE->GetName();
- }
- }
- return ByteString();
-}
-
-sal_Bool SvStringHashTable::IsEntry( sal_uInt32 nIndex ) const
-{
- if( nIndex >= GetMax() )
- return sal_False;
- return pEntries[ nIndex ].HasId();
-}
-
-sal_Bool SvStringHashTable::Insert( const ByteString & rName, sal_uInt32 * pIndex )
-{
- sal_uInt32 nIndex;
-
- if( !pIndex ) pIndex = &nIndex;
-
- if( !SvHashTable::Test_Insert( &rName, sal_True, pIndex ) )
- return sal_False;
-
- if( !IsEntry( *pIndex ) )
- pEntries[ *pIndex ] = SvStringHashEntry( rName, *pIndex );
- return sal_True;
-}
-
-sal_Bool SvStringHashTable::Test( const ByteString & rName, sal_uInt32 * pPos ) const
-{
- return ((SvStringHashTable *)this)->SvHashTable::
- Test_Insert( &rName, sal_False, pPos );
-}
-
-SvStringHashEntry * SvStringHashTable::Get( sal_uInt32 nIndex ) const
-{
- if( IsEntry( nIndex ) )
- return pEntries + nIndex;
- return( NULL );
-}
-
-StringCompare SvStringHashTable::Compare( const void * pElement,
- sal_uInt32 nIndex ) const
-{
- return ((const ByteString *)pElement)->CompareTo( pEntries[ nIndex ].GetName() );
-}
-
-void SvStringHashTable::FillHashList( SvStringHashList * pList ) const
-{
- for( sal_uInt32 n = 0; n < GetMax(); n++ )
- {
- if( IsEntry( n ) )
- pList->push_back( Get( n ) );
- }
- // hash order, sort now
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */