blob: 3ff90e613f187e7733932050eb7847bb36867ada [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _GLOBNAME_HXX
#define _GLOBNAME_HXX
#include "tools/toolsdllapi.h"
#include <com/sun/star/uno/Sequence.hxx>
#include <tools/string.hxx>
#include <tools/list.hxx>
/*************************************************************************
*************************************************************************/
struct ImpSvGlobalName
{
sal_uInt8 szData[ 16 ];
sal_uInt16 nRefCount;
ImpSvGlobalName()
{
nRefCount = 0;
}
ImpSvGlobalName( const ImpSvGlobalName & rObj );
ImpSvGlobalName( int );
sal_Bool operator == ( const ImpSvGlobalName & rObj ) const;
};
#ifdef WNT
struct _GUID;
typedef struct _GUID GUID;
#else
struct GUID;
#endif
typedef GUID CLSID;
class SvStream;
class SvGlobalNameList;
class TOOLS_DLLPUBLIC SvGlobalName
{
friend class SvGlobalNameList;
ImpSvGlobalName * pImp;
void NewImp();
public:
SvGlobalName();
SvGlobalName( const SvGlobalName & rObj )
{
pImp = rObj.pImp;
pImp->nRefCount++;
}
SvGlobalName( ImpSvGlobalName * pImpP )
{
pImp = pImpP;
pImp->nRefCount++;
}
SvGlobalName( sal_uInt32 n1, sal_uInt16 n2, sal_uInt16 n3,
sal_uInt8 b8, sal_uInt8 b9, sal_uInt8 b10, sal_uInt8 b11,
sal_uInt8 b12, sal_uInt8 b13, sal_uInt8 b14, sal_uInt8 b15 );
// create SvGlobalName from a platform independent representation
SvGlobalName( const ::com::sun::star::uno::Sequence< sal_Int8 >& aSeq );
SvGlobalName & operator = ( const SvGlobalName & rObj );
~SvGlobalName();
TOOLS_DLLPUBLIC friend SvStream & operator >> ( SvStream &, SvGlobalName & );
TOOLS_DLLPUBLIC friend SvStream & operator << ( SvStream &, const SvGlobalName & );
sal_Bool operator < ( const SvGlobalName & rObj ) const;
SvGlobalName & operator += ( sal_uInt32 );
SvGlobalName & operator ++ () { return operator += ( 1 ); }
sal_Bool operator == ( const SvGlobalName & rObj ) const;
sal_Bool operator != ( const SvGlobalName & rObj ) const
{ return !(*this == rObj); }
void MakeFromMemory( void * pData );
sal_Bool MakeId( const String & rId );
String GetctorName() const;
String GetHexName() const;
String GetRegDbName() const
{
String a = '{';
a += GetHexName();
a += '}';
return a;
}
SvGlobalName( const CLSID & rId );
const CLSID & GetCLSID() const { return *(CLSID *)pImp->szData; }
const sal_uInt8* GetBytes() const { return pImp->szData; }
// platform independent representation of a "GlobalName"
// maybe transported remotely
com::sun::star::uno::Sequence < sal_Int8 > GetByteSequence() const;
};
class SvGlobalNameList
{
List aList;
public:
SvGlobalNameList();
~SvGlobalNameList();
void Append( const SvGlobalName & );
SvGlobalName GetObject( sal_uLong );
sal_Bool IsEntry( const SvGlobalName & rName );
sal_uInt32 Count() const { return aList.Count(); }
private:
// nicht erlaubt
SvGlobalNameList( const SvGlobalNameList & );
SvGlobalNameList & operator = ( const SvGlobalNameList & );
};
#endif // _GLOBNAME_HXX