summaryrefslogtreecommitdiff
path: root/xmloff/inc
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2004-11-26 18:28:22 +0000
committerRüdiger Timm <rt@openoffice.org>2004-11-26 18:28:22 +0000
commit112ae29a3d278810d906608e7e63735fc0392a3f (patch)
tree8efbacca07a91ee2ad512f15cdc001599397a83d /xmloff/inc
parenteb157612803857d872d8dc1519baa6609a96d071 (diff)
INTEGRATION: CWS presentationengine01 (1.1.2); FILE ADDED
2004/04/16 12:24:52 cl 1.1.2.1: smil support for impress
Diffstat (limited to 'xmloff/inc')
-rw-r--r--xmloff/inc/unointerfacetouniqueidentifiermapper.hxx58
1 files changed, 58 insertions, 0 deletions
diff --git a/xmloff/inc/unointerfacetouniqueidentifiermapper.hxx b/xmloff/inc/unointerfacetouniqueidentifiermapper.hxx
new file mode 100644
index 000000000000..2d21df98f941
--- /dev/null
+++ b/xmloff/inc/unointerfacetouniqueidentifiermapper.hxx
@@ -0,0 +1,58 @@
+#ifndef __COMPHELPER_UNOINTERFACETOUNIQUEIDENTIFIERMAPPER__
+#define __COMPHELPER_UNOINTERFACETOUNIQUEIDENTIFIERMAPPER__
+
+#include <map>
+
+#ifndef _RTL_USTRING_HXX_
+#include <rtl/ustring.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_UNO_XINTERFACE_HPP_
+#include <com/sun/star/uno/XInterface.hpp>
+#endif
+
+namespace comphelper
+{
+
+typedef ::std::map< rtl::OUString, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > > IdMap_t;
+
+class UnoInterfaceToUniqueIdentifierMapper
+{
+public:
+ UnoInterfaceToUniqueIdentifierMapper();
+
+ /** returns a unique identifier for the given uno object. IF a uno object is
+ registered more than once, the returned identifier is always the same.
+ */
+ const rtl::OUString& registerReference( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rInterface );
+
+ /** registers the given uno object with the given identifier.
+
+ @returns
+ false, if the given identifier already exists and is not associated with the given interface
+ */
+ bool registerReference( const rtl::OUString& rIdentifier, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rInterface );
+
+ /** @returns
+ the identifier for the given uno object. If this uno object is not already
+ registered, an empty string is returned
+ */
+ const rtl::OUString& getIdentifier( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rInterface ) const;
+
+ /** @returns
+ the uno object that is registered with the given identifier. If no uno object
+ is registered with the given identifier, an empty reference is returned.
+ */
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& getReference( const rtl::OUString& rIdentifier ) const;
+
+private:
+ bool findReference( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rInterface, IdMap_t::const_iterator& rIter ) const;
+ bool findIdentifier( const rtl::OUString& rIdentifier, IdMap_t::const_iterator& rIter ) const;
+
+ IdMap_t maEntries;
+ sal_Int32 mnNextId;
+};
+
+};
+
+#endif