diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2007-04-11 19:20:32 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2007-04-11 19:20:32 +0000 |
commit | 0cb6c05d153b3e64fa58cc35e7b6590326c0dcba (patch) | |
tree | b016660cb5a37ad9ebe4d63124c678635c2dcf1a /tools/inc | |
parent | 0a874232db0feca5fb37a64ab3bd1e134cd3d50a (diff) |
INTEGRATION: CWS hedaburemove01 (1.1.2); FILE ADDED
2006/12/12 16:24:58 vg 1.1.2.1: #i72503# gathered global includes in one place
Diffstat (limited to 'tools/inc')
-rw-r--r-- | tools/inc/tools/tools.h | 51 | ||||
-rw-r--r-- | tools/inc/tools/unqid.hxx | 122 | ||||
-rw-r--r-- | tools/inc/tools/unqidx.hxx | 167 |
3 files changed, 340 insertions, 0 deletions
diff --git a/tools/inc/tools/tools.h b/tools/inc/tools/tools.h new file mode 100644 index 000000000000..575fd2a2f5c9 --- /dev/null +++ b/tools/inc/tools/tools.h @@ -0,0 +1,51 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: tools.h,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-04-11 20:20:11 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ +#ifndef _TOOLS_H +#define _TOOLS_H + +#ifndef INCLUDED_TOOLSDLLAPI_H +#include "tools/toolsdllapi.h" +#endif + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +// Methoden, die von VCL gerufen werden muessen +TOOLS_DLLPUBLIC void InitTools(); +TOOLS_DLLPUBLIC void DeInitTools(); +TOOLS_DLLPUBLIC void GlobalDeInitTools(); + +#endif // _TOOLS_H diff --git a/tools/inc/tools/unqid.hxx b/tools/inc/tools/unqid.hxx new file mode 100644 index 000000000000..e674477e9d8f --- /dev/null +++ b/tools/inc/tools/unqid.hxx @@ -0,0 +1,122 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: unqid.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-04-11 20:20:22 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ +#ifndef _UNQID_HXX +#define _UNQID_HXX + +#ifndef INCLUDED_TOOLSDLLAPI_H +#include "tools/toolsdllapi.h" +#endif + +#ifndef _UNQIDX_HXX +#include <tools/unqidx.hxx> +#endif + +// --------------- +// - ImpUniqueId - +// --------------- + +struct ImpUniqueId +{ + ULONG nId; + USHORT nRefCount; + void Release() + { + nRefCount--; + if( 0 == nRefCount ) + delete this; + } +}; + +// ------------ +// - UniqueId - +// ------------ + +class UniqueIdContainer; +class UniqueItemId +{ + friend class UniqueIdContainer; + ImpUniqueId* pId; + + UniqueItemId( ImpUniqueId * pIdP ) + { pId = pIdP; pId->nRefCount++; } +public: + UniqueItemId() { pId = NULL; } + UniqueItemId( const UniqueItemId & rId ) + { pId = rId.pId; if( pId ) pId->nRefCount++; } + ~UniqueItemId() + { if( pId ) pId->Release(); } + UniqueItemId& operator = ( const UniqueItemId & rId ) + { + if( rId.pId ) rId.pId->nRefCount++; + if( pId ) pId->Release(); + pId = rId.pId; + return *this; + } + ULONG GetId() const { return pId ? pId->nId : 0; } +}; + +// --------------------- +// - UniqueIdContainer - +// --------------------- + +class TOOLS_DLLPUBLIC UniqueIdContainer : private UniqueIndex +{ + USHORT nCollectCount; + +public: // Irgend etwas mit protected falsch + void Clear( BOOL bAll ); + UniqueItemId CreateIdProt( ULONG nId ); + +public: + UniqueIdContainer( ULONG _nStartIndex, + ULONG _nInitSize = 16, + ULONG _nReSize = 16 ) + : UniqueIndex( _nStartIndex, _nInitSize, _nReSize ) + , nCollectCount( 0 ) + {} + UniqueIdContainer( const UniqueIdContainer& ); + + ~UniqueIdContainer() + { Clear( TRUE ); } + UniqueIdContainer& operator = ( const UniqueIdContainer & ); + + BOOL IsIndexValid( ULONG nIndex ) const + { return UniqueIndex::IsIndexValid( nIndex ); } + + UniqueItemId CreateId(); + static UniqueItemId CreateFreeId( ULONG nId ); // freies Id +}; + +#endif // _UNQID_HXX diff --git a/tools/inc/tools/unqidx.hxx b/tools/inc/tools/unqidx.hxx new file mode 100644 index 000000000000..772e87c28190 --- /dev/null +++ b/tools/inc/tools/unqidx.hxx @@ -0,0 +1,167 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: unqidx.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: vg $ $Date: 2007-04-11 20:20:32 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ +#ifndef _UNQIDX_HXX +#define _UNQIDX_HXX + +#ifndef INCLUDED_TOOLSDLLAPI_H +#include "tools/toolsdllapi.h" +#endif + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +#ifndef _CONTNR_HXX +#include <tools/contnr.hxx> +#endif + +// --------------- +// - UniqueIndex - +// --------------- + +#define UNIQUEINDEX_ENTRY_NOTFOUND CONTAINER_ENTRY_NOTFOUND + +class TOOLS_DLLPUBLIC UniqueIndex : private Container +{ +private: + ULONG nReSize; + ULONG nStartIndex; + ULONG nUniqIndex; + ULONG nCount; + +public: + using Container::GetCurObject; + + UniqueIndex( ULONG nStartIndex = 0, + ULONG nInitSize = 16, + ULONG nReSize = 16 ); + UniqueIndex( const UniqueIndex& rIdx ); + + ULONG Insert( ULONG nIndex, void* p ); + ULONG Insert( void* p ); + void* Remove( ULONG nIndex ); + void* Replace( ULONG nIndex, void* p ); + void* Get( ULONG nIndex ) const; + + void Clear(); + ULONG Count() const { return nCount; } + + ULONG GetCurIndex() const; + ULONG GetIndex( const void* p ) const; + BOOL IsIndexValid( ULONG nIndex ) const; + + void* Seek( ULONG nIndex ); + void* Seek( void* p ); + void* First(); + void* Last(); + void* Next(); + void* Prev(); + + ULONG GetStartIndex() const { return nStartIndex; } + ULONG GetCurMaxIndex() const + { return (nStartIndex + Container::GetSize()); } + + UniqueIndex& operator =( const UniqueIndex& rIdx ); + + BOOL operator ==( const UniqueIndex& rIdx ) const; + BOOL operator !=( const UniqueIndex& rIdx ) const + { return !(UniqueIndex::operator==( rIdx )); } +}; + +inline void UniqueIndex::Clear() +{ + Container::Clear(); + nCount = 0; + nUniqIndex = 0; +} + +// ----------------------- +// - DECLARE_UNIQUEINDEX - +// ----------------------- + +#define DECLARE_UNIQUEINDEX( ClassName, Type ) \ +class ClassName : private UniqueIndex \ +{ \ +public: \ + using UniqueIndex::Clear; \ + using UniqueIndex::Count; \ + using UniqueIndex::GetCurIndex; \ + using UniqueIndex::IsIndexValid; \ + using UniqueIndex::GetStartIndex; \ + using UniqueIndex::GetCurMaxIndex; \ + \ + ClassName( ULONG _nStartIndex = 0, \ + ULONG _nInitSize = 16, ULONG _nReSize = 16 ):\ + UniqueIndex( _nStartIndex, _nInitSize, _nReSize ) {}\ + ClassName( const ClassName& rClassName ) : \ + UniqueIndex( rClassName ) {} \ + \ + ULONG Insert( ULONG nIndex, Type p ) \ + { return UniqueIndex::Insert( nIndex, (void*)p ); } \ + ULONG Insert( Type p ) \ + { return UniqueIndex::Insert( (void*)p ); } \ + Type Remove( ULONG nIndex ) \ + { return (Type)UniqueIndex::Remove( nIndex ); } \ + Type Replace( ULONG nIndex, Type p ) \ + { return (Type)UniqueIndex::Replace( nIndex, \ + (void*)p ); } \ + Type Get( ULONG nIndex ) const \ + { return (Type)UniqueIndex::Get( nIndex ); } \ + \ + Type GetCurObject() const \ + { return (Type)UniqueIndex::GetCurObject(); } \ + ULONG GetIndex( const Type p ) const \ + { return UniqueIndex::GetIndex( (const void*)p ); } \ + \ + Type Seek( ULONG nKey ) \ + { return (Type)UniqueIndex::Seek( nKey ); } \ + Type Seek( Type p ) \ + { return (Type)UniqueIndex::Seek( (void*)p ); } \ + Type First() { return (Type)UniqueIndex::First(); } \ + Type Last() { return (Type)UniqueIndex::Last(); } \ + Type Next() { return (Type)UniqueIndex::Next(); } \ + Type Prev() { return (Type)UniqueIndex::Prev(); } \ + \ + ClassName& operator =( const ClassName& rClassName ) \ + { UniqueIndex::operator =( rClassName ); \ + return *this; } \ + \ + BOOL operator ==( const ClassName& rIdx ) const \ + { return UniqueIndex::operator ==( rIdx ); } \ + BOOL operator !=( const ClassName& rIdx ) const \ + { return UniqueIndex::operator !=( rIdx ); } \ +}; + +#endif // _UNQIDX_HXX |