bump product version to 6.3.0.0.beta1
[LibreOffice.git] / include / xmloff / unointerfacetouniqueidentifiermapper.hxx
blob6489feedd717f8184b20db8399a6b15b91bea2b8
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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>
27 #include <map>
28 #include <rtl/ustring.hxx>
29 #include <com/sun/star/uno/XInterface.hpp>
31 namespace comphelper
34 typedef ::std::map< OUString, css::uno::Reference< css::uno::XInterface > > IdMap_t;
36 class XMLOFF_DLLPUBLIC UnoInterfaceToUniqueIdentifierMapper
38 public:
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 css::uno::Reference< css::uno::XInterface >& rInterface );
46 /** registers the given uno object with the given identifier.
48 @returns
49 false, if the given identifier already exists and is not associated with the given interface
51 bool registerReference( const OUString& rIdentifier, const css::uno::Reference< css::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 OUString& rIdentifier, const css::uno::Reference< css::uno::XInterface >& rInterface );
60 /** @returns
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 css::uno::Reference< css::uno::XInterface >& rInterface ) const;
66 /** @returns
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 css::uno::Reference< css::uno::XInterface >& getReference( const OUString& rIdentifier ) const;
72 private:
73 bool findReference( const css::uno::Reference< css::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 css::uno::Reference< css::uno::XInterface >& rInterface );
77 IdMap_t maEntries;
78 sal_uInt32 mnNextId;
83 #endif
85 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */