1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_XMLOFF_UNOINTERFACETOUNIQUEIDENTIFIERMAPPER_HXX
21 #define INCLUDED_XMLOFF_UNOINTERFACETOUNIQUEIDENTIFIERMAPPER_HXX
23 #include <sal/config.h>
24 #include <xmloff/dllapi.h>
25 #include <sal/types.h>
28 #include <rtl/ustring.hxx>
29 #include <com/sun/star/uno/XInterface.hpp>
34 typedef ::std::map
< OUString
, ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> > IdMap_t
;
36 class XMLOFF_DLLPUBLIC UnoInterfaceToUniqueIdentifierMapper
39 UnoInterfaceToUniqueIdentifierMapper();
41 /** returns a unique identifier for the given uno object. IF a uno object is
42 registered more than once, the returned identifier is always the same.
44 const OUString
& registerReference( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& rInterface
);
46 /** registers the given uno object with the given identifier.
49 false, if the given identifier already exists and is not associated with the given interface
51 bool registerReference( const OUString
& rIdentifier
, const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& rInterface
);
53 /** always registers the given uno object with the given identifier.
55 In contrast to registerReference(), this here overwrites any
56 earlier registration of the same identifier
58 void registerReferenceAlways( const rtl::OUString
& rIdentifier
, const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& rInterface
);
61 the identifier for the given uno object. If this uno object is not already
62 registered, an empty string is returned
64 const OUString
& getIdentifier( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& rInterface
) const;
67 the uno object that is registered with the given identifier. If no uno object
68 is registered with the given identifier, an empty reference is returned.
70 const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& getReference( const OUString
& rIdentifier
) const;
73 bool findReference( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& rInterface
, IdMap_t::const_iterator
& rIter
) const;
74 bool findIdentifier( const OUString
& rIdentifier
, IdMap_t::const_iterator
& rIter
) const;
75 void insertReference( const OUString
& rIdentifier
, const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& rInterface
);
85 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */