1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27#ifndef __com_sun_star_beans_XIntrospection_idl__
28#define __com_sun_star_beans_XIntrospection_idl__
29
30#ifndef __com_sun_star_uno_XInterface_idl__
31#include <com/sun/star/uno/XInterface.idl>
32#endif
33
34#ifndef __com_sun_star_beans_XIntrospectionAccess_idl__
35#include <com/sun/star/beans/XIntrospectionAccess.idl>
36#endif
37
38
39//=============================================================================
40
41 module com {  module sun {  module star {  module beans {
42
43//=============================================================================
44
45// DocMerge from xml: interface com::sun::star::beans::XIntrospection
46/** allows the inspection of an object's properties and methods.
47
48	<p><strong>Important note:</strong>An object can only be
49	inspected completely if it supports the <type scope=
50	"com::sun::star::lang">XTypeProvider</type> interface.</p>
51
52	<p>For details see method <member>XIntrospection::inspect</member>. </p>
53
54	@see XIntrospectionAccess
55 */
56published interface XIntrospection: com::sun::star::uno::XInterface
57{
58	//-------------------------------------------------------------------------
59
60	// DocMerge from xml: method com::sun::star::beans::XIntrospection::inspect
61	/** inspects the given object.
62
63		<p>It identifies all properties supported by the object
64		if they are represented in one of the following ways: </p>
65
66		<dl>
67			<dt>property set </dt>
68			<dd>If the object supports an <type>XPropertySet</type>
69				interface, all its properties are adopted.
70			</dd>
71
72			<dt>attributes </dt>
73			<dd>All of an object's attributes are considered as properties
74				with same name. If an attribute is read-only, the property
75				also is read-only.
76			</dd>
77
78			<dt>get/set methods </dt>
79			<dd>Every method <code>RetType getX()</code> defines a
80				property where "X" stands for the property name and
81				"RetType" for its type. The method must not have any
82				parameters, or there is no property access method
83				and "X" has no property.  If there is also a method
84				<code>void setX( [in] RetType )</code>, the property
85				"X" also allows write access; otherwise it is read-only.
86			</dd>
87
88			<dt> <strong>Important note:</strong></dt>
89			<dd>If an object implements <type scope="com::sun::star::container">XNameAccess</type>,
90				the items that can be accessed are not considered as properties
91				of the object and so are not included in the property list offered by
92				<member scope="com::sun::star::beans">XIntrospectionAccess::getProperties()</member>.
93				<type scope="com::sun::star::container">XNameAccess</type> items have to be
94				accessed separately by <member scope="com::sun::star::beans">XIntrospectionAccess::getNameAccess()</member>.
95			</dd>
96		</dl>
97
98		<p>In addition, the inspect method identifies all listener
99		access methods in the form <code>add...Listener</code>/
100		<code>remove...Listener</code> (except methods of interface
101		<type>XPropertySet</type>) where "..." stands for the listener type.
102		</p>
103
104		<p>Methods which do not belong to a property nor which represent
105		a listener access nor which are methods of <type>XPropertySet</type>,
106		<type scope="com::sun::star::container">XNameAccess</type>,
107		<type scope="com::sun::star::container">XIndexAccess</type>, or
108		<type scope="com::sun::star::container">XEnumerationAccess</type>, are considered to be normal
109		methods. </p>
110
111		@see XIntrospectionAccess
112	 */
113	com::sun::star::beans::XIntrospectionAccess inspect( [in] any aObject );
114
115};
116
117//=============================================================================
118
119}; }; }; };
120
121#endif
122