summaryrefslogtreecommitdiff
path: root/udkapi/com/sun/star/uno/XInterface.idl
diff options
context:
space:
mode:
Diffstat (limited to 'udkapi/com/sun/star/uno/XInterface.idl')
-rw-r--r--udkapi/com/sun/star/uno/XInterface.idl134
1 files changed, 134 insertions, 0 deletions
diff --git a/udkapi/com/sun/star/uno/XInterface.idl b/udkapi/com/sun/star/uno/XInterface.idl
new file mode 100644
index 000000000000..440b3fe95db1
--- /dev/null
+++ b/udkapi/com/sun/star/uno/XInterface.idl
@@ -0,0 +1,134 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef __com_sun_star_uno_XInterface_idl__
+#define __com_sun_star_uno_XInterface_idl__
+
+//=============================================================================
+
+ module com { module sun { module star { module uno {
+
+//=============================================================================
+
+// DocMerge from xml: interface com::sun::star::uno::XInterface
+/** base interface of all UNO interfaces
+
+ <p> It provides lifetime control by reference counting and the
+ possibility of querying for other
+ interfaces of the same logical object.
+
+
+ <p>
+ "Logical Object" in this case means that the
+ interfaces actually can be supported by internal (e.g. aggregated) physical objects.</p>
+
+ <p> Deriving from this interface is mandatory for all UNO interfaces.
+ <p> Each language binding (Java, C++, StarBasic, Python, ... ) may
+ provide a different mapping of this interface, please look into the language
+ dependent documention.
+
+ <p> The UNO object does not export the state of the reference count (acquire() and
+ release() do not have return values). In general, also the UNO object itself
+ should not make any assumption on the concrete value of the reference count
+ (except on the transition from one to zero ).
+
+ */
+published interface XInterface
+{
+ /** queries for a new interface to an existing UNO object.
+ <p>
+ The queryInterface() method is the entry point to obtain other interfaces which
+ are exported by the object. The caller asks the implementation of the object,
+ if it supports the interface specified by the type argument. The call may either
+ return with a interface reference of the requested type or with a void any.
+
+ <p>
+ There are certain specifications, a queryInterface() implementation must not violate.
+ <p>
+ 1) If queryInterface on a specific object has once returned a valid interface reference
+ for a given type, it must return a valid reference for any successive queryInterface
+ calls on this object for the same type.
+ <p>
+ 2) If queryInterface on a specific object has once returned a null reference
+ for a given type, it must always return a null reference for the same type.
+ <p>
+ 3) If queryInterface on a reference A returns reference B, queryInterface on
+ B for Type A must return interface reference A or calls made on the returned
+ reference must be equivalent to calls made on reference A.
+ <p>
+ 4) If queryInterface on a reference A returns reference B, queryInterface on
+ A and B for XInterface must return the same interface reference (object identity).
+
+ <p> The reason for the strong specification is, that a Uno Runtime Environment (URE)
+ may choose to cache queryInterface() calls.
+ <p> As mentioned above, certain language bindings may map this function differently also
+ with different specifications, please visit the language dependent specification for it.
+ The current C++ binding sticks to the specification state
+ <p>
+ The rules mentioned above are basically identical to the rules of QueryInterface in MS COM.
+
+ @param aType a UNO interface type, for which an object reference shall be obtained.
+ @return an interface reference in case the requested interface is supported by the object,
+ a void any otherwise.
+ */
+ any queryInterface( [in] type aType );
+
+ //-------------------------------------------------------------------------
+ /** increases the reference counter by one.
+
+ <p>When you have called acquire() on the
+ UNO object, it is often said, that you have a reference or a hard reference
+ to the object.
+
+ <p>
+ It is only allowed to invoke a method on an UNO object, when you keep
+ a hard reference to it.
+
+ <p> Every call to acquire must be followed by a corresponding call to release
+ some time later, which may eventually lead to the destruction of the object.
+ */
+ [oneway] void acquire();
+
+ //-------------------------------------------------------------------------
+
+ // DocMerge from xml: method com::sun::star::uno::XInterface::release
+ /** decreases the reference counter by one.
+ <p>When the reference counter reaches 0, the object gets deleted.</p>
+ <p>Calling release() on the object is often called releasing
+ or clearing the reference to an object.
+ */
+ [oneway] void release();
+
+};
+
+//=============================================================================
+
+}; }; }; };
+
+/*=============================================================================
+
+=============================================================================*/
+#endif