1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_XIntrospection_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_beans_XIntrospection_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_XIntrospectionAccess_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/XIntrospectionAccess.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski//=============================================================================
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module beans {
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski//=============================================================================
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski// DocMerge from xml: interface com::sun::star::beans::XIntrospection
42*b1cdbd2cSJim Jagielski/** allows the inspection of an object's properties and methods.
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski	<p><strong>Important note:</strong>An object can only be
45*b1cdbd2cSJim Jagielski	inspected completely if it supports the <type scope=
46*b1cdbd2cSJim Jagielski	"com::sun::star::lang">XTypeProvider</type> interface.</p>
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski	<p>For details see method <member>XIntrospection::inspect</member>. </p>
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielski	@see XIntrospectionAccess
51*b1cdbd2cSJim Jagielski */
52*b1cdbd2cSJim Jagielskipublished interface XIntrospection: com::sun::star::uno::XInterface
53*b1cdbd2cSJim Jagielski{
54*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski	// DocMerge from xml: method com::sun::star::beans::XIntrospection::inspect
57*b1cdbd2cSJim Jagielski	/** inspects the given object.
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski		<p>It identifies all properties supported by the object
60*b1cdbd2cSJim Jagielski		if they are represented in one of the following ways: </p>
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski		<dl>
63*b1cdbd2cSJim Jagielski			<dt>property set </dt>
64*b1cdbd2cSJim Jagielski			<dd>If the object supports an <type>XPropertySet</type>
65*b1cdbd2cSJim Jagielski				interface, all its properties are adopted.
66*b1cdbd2cSJim Jagielski			</dd>
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski			<dt>attributes </dt>
69*b1cdbd2cSJim Jagielski			<dd>All of an object's attributes are considered as properties
70*b1cdbd2cSJim Jagielski				with same name. If an attribute is read-only, the property
71*b1cdbd2cSJim Jagielski				also is read-only.
72*b1cdbd2cSJim Jagielski			</dd>
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski			<dt>get/set methods </dt>
75*b1cdbd2cSJim Jagielski			<dd>Every method <code>RetType getX()</code> defines a
76*b1cdbd2cSJim Jagielski				property where "X" stands for the property name and
77*b1cdbd2cSJim Jagielski				"RetType" for its type. The method must not have any
78*b1cdbd2cSJim Jagielski				parameters, or there is no property access method
79*b1cdbd2cSJim Jagielski				and "X" has no property.  If there is also a method
80*b1cdbd2cSJim Jagielski				<code>void setX( [in] RetType )</code>, the property
81*b1cdbd2cSJim Jagielski				"X" also allows write access; otherwise it is read-only.
82*b1cdbd2cSJim Jagielski			</dd>
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski			<dt> <strong>Important note:</strong></dt>
85*b1cdbd2cSJim Jagielski			<dd>If an object implements <type scope="com::sun::star::container">XNameAccess</type>,
86*b1cdbd2cSJim Jagielski				the items that can be accessed are not considered as properties
87*b1cdbd2cSJim Jagielski				of the object and so are not included in the property list offered by
88*b1cdbd2cSJim Jagielski				<member scope="com::sun::star::beans">XIntrospectionAccess::getProperties()</member>.
89*b1cdbd2cSJim Jagielski				<type scope="com::sun::star::container">XNameAccess</type> items have to be
90*b1cdbd2cSJim Jagielski				accessed separately by <member scope="com::sun::star::beans">XIntrospectionAccess::getNameAccess()</member>.
91*b1cdbd2cSJim Jagielski			</dd>
92*b1cdbd2cSJim Jagielski		</dl>
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski		<p>In addition, the inspect method identifies all listener
95*b1cdbd2cSJim Jagielski		access methods in the form <code>add...Listener</code>/
96*b1cdbd2cSJim Jagielski		<code>remove...Listener</code> (except methods of interface
97*b1cdbd2cSJim Jagielski		<type>XPropertySet</type>) where "..." stands for the listener type.
98*b1cdbd2cSJim Jagielski		</p>
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski		<p>Methods which do not belong to a property nor which represent
101*b1cdbd2cSJim Jagielski		a listener access nor which are methods of <type>XPropertySet</type>,
102*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::container">XNameAccess</type>,
103*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::container">XIndexAccess</type>, or
104*b1cdbd2cSJim Jagielski		<type scope="com::sun::star::container">XEnumerationAccess</type>, are considered to be normal
105*b1cdbd2cSJim Jagielski		methods. </p>
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski		@see XIntrospectionAccess
108*b1cdbd2cSJim Jagielski	 */
109*b1cdbd2cSJim Jagielski	com::sun::star::beans::XIntrospectionAccess inspect( [in] any aObject );
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski};
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski//=============================================================================
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski}; }; }; };
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski#endif
118