xref: /aoo41x/main/registry/inc/registry/reflread.hxx (revision 5a5f4a75)
1*5a5f4a75SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*5a5f4a75SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*5a5f4a75SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*5a5f4a75SAndrew Rist  * distributed with this work for additional information
6*5a5f4a75SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*5a5f4a75SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*5a5f4a75SAndrew Rist  * "License"); you may not use this file except in compliance
9*5a5f4a75SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*5a5f4a75SAndrew Rist  *
11*5a5f4a75SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*5a5f4a75SAndrew Rist  *
13*5a5f4a75SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*5a5f4a75SAndrew Rist  * software distributed under the License is distributed on an
15*5a5f4a75SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*5a5f4a75SAndrew Rist  * KIND, either express or implied.  See the License for the
17*5a5f4a75SAndrew Rist  * specific language governing permissions and limitations
18*5a5f4a75SAndrew Rist  * under the License.
19*5a5f4a75SAndrew Rist  *
20*5a5f4a75SAndrew Rist  *************************************************************/
21*5a5f4a75SAndrew Rist 
22*5a5f4a75SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _REGISTRY_REFLREAD_HXX_
25cdf0e10cSrcweir #define _REGISTRY_REFLREAD_HXX_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <registry/refltype.hxx>
28cdf0e10cSrcweir #include <registry/regtype.h>
29cdf0e10cSrcweir #include <rtl/ustring.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir /// Implememetation handle
32cdf0e10cSrcweir typedef void* TypeReaderImpl;
33cdf0e10cSrcweir 
34cdf0e10cSrcweir /****************************************************************************
35cdf0e10cSrcweir 
36cdf0e10cSrcweir 	C-Api
37cdf0e10cSrcweir 
38cdf0e10cSrcweir *****************************************************************************/
39cdf0e10cSrcweir 
40cdf0e10cSrcweir #ifdef __cplusplus
41cdf0e10cSrcweir extern "C" {
42cdf0e10cSrcweir #endif
43cdf0e10cSrcweir 
44cdf0e10cSrcweir /** specifies a collection of function pointers which represents the complete registry type reader C-API.
45cdf0e10cSrcweir 
46cdf0e10cSrcweir     This funtions pointers are used by the C++ wrapper to call the C-API.
47cdf0e10cSrcweir */
48cdf0e10cSrcweir struct RegistryTypeReader_Api
49cdf0e10cSrcweir {
50cdf0e10cSrcweir 	TypeReaderImpl		(TYPEREG_CALLTYPE *createEntry) 		(const sal_uInt8*, sal_uInt32, sal_Bool);
51cdf0e10cSrcweir 	void				(TYPEREG_CALLTYPE *acquire) 			(TypeReaderImpl);
52cdf0e10cSrcweir 	void				(TYPEREG_CALLTYPE *release) 			(TypeReaderImpl);
53cdf0e10cSrcweir 	sal_uInt16			(TYPEREG_CALLTYPE *getMinorVersion) 	(TypeReaderImpl);
54cdf0e10cSrcweir 	sal_uInt16			(TYPEREG_CALLTYPE *getMajorVersion) 	(TypeReaderImpl);
55cdf0e10cSrcweir 	RTTypeClass 		(TYPEREG_CALLTYPE *getTypeClass) 		(TypeReaderImpl);
56cdf0e10cSrcweir 	void 				(TYPEREG_CALLTYPE *getUik)				(TypeReaderImpl, RTUik*);
57cdf0e10cSrcweir 	void 	  			(TYPEREG_CALLTYPE *getDoku) 			(TypeReaderImpl, rtl_uString**);
58cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getFileName)			(TypeReaderImpl, rtl_uString**);
59cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getTypeName) 		(TypeReaderImpl, rtl_uString**);
60cdf0e10cSrcweir 	void   				(TYPEREG_CALLTYPE *getSuperTypeName) 	(TypeReaderImpl, rtl_uString**);
61cdf0e10cSrcweir 	sal_uInt32			(TYPEREG_CALLTYPE *getFieldCount) 		(TypeReaderImpl);
62cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getFieldName) 		(TypeReaderImpl, rtl_uString**, sal_uInt16);
63cdf0e10cSrcweir 	void	  			(TYPEREG_CALLTYPE *getFieldType) 		(TypeReaderImpl, rtl_uString**, sal_uInt16);
64cdf0e10cSrcweir 	RTFieldAccess		(TYPEREG_CALLTYPE *getFieldAccess) 		(TypeReaderImpl, sal_uInt16);
65cdf0e10cSrcweir 	RTValueType			(TYPEREG_CALLTYPE *getFieldConstValue) 	(TypeReaderImpl, sal_uInt16, RTConstValueUnion*);
66cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getFieldDoku) 		(TypeReaderImpl, rtl_uString**, sal_uInt16);
67cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getFieldFileName)	(TypeReaderImpl, rtl_uString**, sal_uInt16);
68cdf0e10cSrcweir 	sal_uInt32	  		(TYPEREG_CALLTYPE *getMethodCount) 		(TypeReaderImpl);
69cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getMethodName) 		(TypeReaderImpl, rtl_uString**, sal_uInt16);
70cdf0e10cSrcweir 	sal_uInt32    		(TYPEREG_CALLTYPE *getMethodParamCount) (TypeReaderImpl, sal_uInt16);
71cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getMethodParamType) 	(TypeReaderImpl, rtl_uString**, sal_uInt16, sal_uInt16);
72cdf0e10cSrcweir 	void   				(TYPEREG_CALLTYPE *getMethodParamName) 	(TypeReaderImpl, rtl_uString**, sal_uInt16, sal_uInt16);
73cdf0e10cSrcweir 	RTParamMode			(TYPEREG_CALLTYPE *getMethodParamMode) 	(TypeReaderImpl, sal_uInt16, sal_uInt16);
74cdf0e10cSrcweir 	sal_uInt32    		(TYPEREG_CALLTYPE *getMethodExcCount) 	(TypeReaderImpl, sal_uInt16);
75cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getMethodExcType) 	(TypeReaderImpl, rtl_uString**, sal_uInt16, sal_uInt16);
76cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getMethodReturnType) (TypeReaderImpl, rtl_uString**, sal_uInt16);
77cdf0e10cSrcweir 	RTMethodMode		(TYPEREG_CALLTYPE *getMethodMode) 		(TypeReaderImpl, sal_uInt16);
78cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getMethodDoku) 		(TypeReaderImpl, rtl_uString**, sal_uInt16);
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 	sal_uInt32	  		(TYPEREG_CALLTYPE *getReferenceCount) 	(TypeReaderImpl);
81cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getReferenceName)  	(TypeReaderImpl, rtl_uString**, sal_uInt16);
82cdf0e10cSrcweir 	RTReferenceType		(TYPEREG_CALLTYPE *getReferenceType) 	(TypeReaderImpl, sal_uInt16);
83cdf0e10cSrcweir 	void		   		(TYPEREG_CALLTYPE *getReferenceDoku)  	(TypeReaderImpl, rtl_uString**, sal_uInt16);
84cdf0e10cSrcweir 	RTFieldAccess		(TYPEREG_CALLTYPE *getReferenceAccess)	(TypeReaderImpl, sal_uInt16);
85cdf0e10cSrcweir };
86cdf0e10cSrcweir 
87cdf0e10cSrcweir /** the API initialization function.
88cdf0e10cSrcweir */
89cdf0e10cSrcweir RegistryTypeReader_Api* TYPEREG_CALLTYPE initRegistryTypeReader_Api(void);
90cdf0e10cSrcweir 
91cdf0e10cSrcweir #ifdef __cplusplus
92cdf0e10cSrcweir }
93cdf0e10cSrcweir #endif
94cdf0e10cSrcweir 
95cdf0e10cSrcweir /** RegistryTypeReades reads a binary type blob.
96cdf0e10cSrcweir 
97cdf0e10cSrcweir     This class provides the necessary functions to read type informations
98cdf0e10cSrcweir     for all kinds of types of a type blob.
99cdf0e10cSrcweir 	The class is inline and use a C-Api.
100cdf0e10cSrcweir 
101cdf0e10cSrcweir     @deprecated
102cdf0e10cSrcweir     use typereg::Reader instead
103cdf0e10cSrcweir */
104cdf0e10cSrcweir class RegistryTypeReader
105cdf0e10cSrcweir {
106cdf0e10cSrcweir public:
107cdf0e10cSrcweir 
108cdf0e10cSrcweir 	/** Constructor.
109cdf0e10cSrcweir 
110cdf0e10cSrcweir         @param buffer points to the binary data block.
111cdf0e10cSrcweir         @param bufferlen specifies the size of the binary data block.
112cdf0e10cSrcweir         @param copyData specifies if the data block should be copied.
113cdf0e10cSrcweir                         The block can be copied to ensure that the data
114cdf0e10cSrcweir                         is valid for the lifetime of this instance.
115cdf0e10cSrcweir 	 */
116cdf0e10cSrcweir 	inline RegistryTypeReader(const sal_uInt8* buffer,
117cdf0e10cSrcweir 							  sal_uInt32 bufferLen,
118cdf0e10cSrcweir 							  sal_Bool copyData);
119cdf0e10cSrcweir 
120cdf0e10cSrcweir 	/// Copy constructcor
121cdf0e10cSrcweir 	inline RegistryTypeReader(const RegistryTypeReader& toCopy);
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 	/// Destructor. The Destructor frees the data block if the copyData flag was TRUE.
124cdf0e10cSrcweir 	inline ~RegistryTypeReader();
125cdf0e10cSrcweir 
126cdf0e10cSrcweir 	/// Assign operator
127cdf0e10cSrcweir 	inline RegistryTypeReader& operator == (const RegistryTypeReader& toAssign);
128cdf0e10cSrcweir 
129cdf0e10cSrcweir 	/// checks if the registry type reader points to a valid Api.
130cdf0e10cSrcweir 	inline sal_Bool			isValid() const;
131cdf0e10cSrcweir 
132cdf0e10cSrcweir     /** @deprecated
133cdf0e10cSrcweir         returns the minor version number.
134cdf0e10cSrcweir 
135cdf0e10cSrcweir         We currently don't support a versioning concept of IDL interfaces and
136cdf0e10cSrcweir         so this function is currently not used.
137cdf0e10cSrcweir      */
138cdf0e10cSrcweir 	inline sal_uInt16		getMinorVersion() const;
139cdf0e10cSrcweir 
140cdf0e10cSrcweir     /** @deprecated
141cdf0e10cSrcweir         returns the major version number.
142cdf0e10cSrcweir 
143cdf0e10cSrcweir         We currently don't support a versioning concept of IDL interfaces and
144cdf0e10cSrcweir         so this function is currently not used.
145cdf0e10cSrcweir      */
146cdf0e10cSrcweir 	inline sal_uInt16		getMajorVersion() const;
147cdf0e10cSrcweir 
148cdf0e10cSrcweir     /** returns the typeclass of the type represented by this blob.
149cdf0e10cSrcweir 
150cdf0e10cSrcweir         This function will always return the type class without the internal
151cdf0e10cSrcweir         RT_TYPE_PUBLISHED flag set.
152cdf0e10cSrcweir      */
153cdf0e10cSrcweir 	inline RTTypeClass 		getTypeClass() const;
154cdf0e10cSrcweir 
155cdf0e10cSrcweir     /** returns the full qualified name of the type.
156cdf0e10cSrcweir      */
157cdf0e10cSrcweir 	inline ::rtl::OUString 	getTypeName() const;
158cdf0e10cSrcweir 
159cdf0e10cSrcweir     /** returns the full qualified name of the supertype.
160cdf0e10cSrcweir      */
161cdf0e10cSrcweir 	inline ::rtl::OUString 	getSuperTypeName() const;
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     /** @deprecated
164cdf0e10cSrcweir         returns the unique identifier for an interface type as an out parameter.
165cdf0e10cSrcweir 
166cdf0e10cSrcweir         An earlier version of UNO used an unique identifier for interfaces. In the
167cdf0e10cSrcweir         current version of UNO this uik was eliminated and this function is
168cdf0e10cSrcweir         not longer used.
169cdf0e10cSrcweir      */
170cdf0e10cSrcweir 	inline void				getUik(RTUik& uik) const;
171cdf0e10cSrcweir 
172cdf0e10cSrcweir     /** returns the documentation string of this type.
173cdf0e10cSrcweir      */
174cdf0e10cSrcweir 	inline ::rtl::OUString 	getDoku() const;
175cdf0e10cSrcweir 
176cdf0e10cSrcweir     /** returns the IDL filename where the type is defined.
177cdf0e10cSrcweir      */
178cdf0e10cSrcweir 	inline ::rtl::OUString 	getFileName() const;
179cdf0e10cSrcweir 
180cdf0e10cSrcweir     /** returns the number of fields (attributes/properties, enum values or number
181cdf0e10cSrcweir         of constants in a module).
182cdf0e10cSrcweir 
183cdf0e10cSrcweir      */
184cdf0e10cSrcweir 	inline sal_uInt32		getFieldCount() const;
185cdf0e10cSrcweir 
186cdf0e10cSrcweir     /** returns the name of the field specified by index.
187cdf0e10cSrcweir      */
188cdf0e10cSrcweir 	inline ::rtl::OUString 	getFieldName( sal_uInt16 index ) const;
189cdf0e10cSrcweir 
190cdf0e10cSrcweir     /** returns the full qualified name of the field specified by index.
191cdf0e10cSrcweir      */
192cdf0e10cSrcweir 	inline ::rtl::OUString	getFieldType( sal_uInt16 index ) const;
193cdf0e10cSrcweir 
194cdf0e10cSrcweir     /** returns the access mode of the field specified by index.
195cdf0e10cSrcweir      */
196cdf0e10cSrcweir 	inline RTFieldAccess	getFieldAccess( sal_uInt16 index ) const;
197cdf0e10cSrcweir 
198cdf0e10cSrcweir     /** returns the value of the field specified by index.
199cdf0e10cSrcweir 
200cdf0e10cSrcweir         This function returns the value of an enum value or of a constant.
201cdf0e10cSrcweir      */
202cdf0e10cSrcweir 	inline RTConstValue		getFieldConstValue( sal_uInt16 index ) const;
203cdf0e10cSrcweir 
204cdf0e10cSrcweir     /** returns the documentation string for the field specified by index.
205cdf0e10cSrcweir 
206cdf0e10cSrcweir         Each field of a type can have their own documentation.
207cdf0e10cSrcweir      */
208cdf0e10cSrcweir 	inline ::rtl::OUString 	getFieldDoku( sal_uInt16 index ) const;
209cdf0e10cSrcweir 
210cdf0e10cSrcweir     /** returns the IDL filename of the field specified by index.
211cdf0e10cSrcweir 
212cdf0e10cSrcweir         The IDL filename of a field can differ from the filename of the ype itself
213cdf0e10cSrcweir         because modules and also constants can be defined in different IDL files.
214cdf0e10cSrcweir      */
215cdf0e10cSrcweir 	inline ::rtl::OUString 	getFieldFileName( sal_uInt16 index ) const;
216cdf0e10cSrcweir 
217cdf0e10cSrcweir     /** returns the number of methods of an interface type.
218cdf0e10cSrcweir      */
219cdf0e10cSrcweir 	inline sal_uInt32		getMethodCount() const;
220cdf0e10cSrcweir 
221cdf0e10cSrcweir     /** returns the name of the method specified by index.
222cdf0e10cSrcweir      */
223cdf0e10cSrcweir 	inline ::rtl::OUString 	getMethodName( sal_uInt16 index ) const;
224cdf0e10cSrcweir 
225cdf0e10cSrcweir     /** returns number of parameters of the method specified by index.
226cdf0e10cSrcweir      */
227cdf0e10cSrcweir 	inline sal_uInt32    	getMethodParamCount( sal_uInt16 index ) const;
228cdf0e10cSrcweir 
229cdf0e10cSrcweir     /** returns the full qualified parameter typename.
230cdf0e10cSrcweir 
231cdf0e10cSrcweir         @param index indicates the method
232cdf0e10cSrcweir         @param paramIndex indeciates the parameter which type will be returned.
233cdf0e10cSrcweir      */
234cdf0e10cSrcweir 	inline ::rtl::OUString 	getMethodParamType( sal_uInt16 index, sal_uInt16 paramIndex ) const;
235cdf0e10cSrcweir 
236cdf0e10cSrcweir     /** returns the name of a parameter.
237cdf0e10cSrcweir 
238cdf0e10cSrcweir         @param index indicates the method
239cdf0e10cSrcweir         @param paramIndex indiciates the parameter which name will be returned.
240cdf0e10cSrcweir      */
241cdf0e10cSrcweir 	inline ::rtl::OUString 	getMethodParamName( sal_uInt16 index, sal_uInt16 paramIndex ) const;
242cdf0e10cSrcweir 
243cdf0e10cSrcweir     /** returns the parameter mode, if it is an in, out or inout parameter.
244cdf0e10cSrcweir 
245cdf0e10cSrcweir         @param index indicates the method
246cdf0e10cSrcweir         @param paramIndex indeciates the parameter which mode will be returned.
247cdf0e10cSrcweir      */
248cdf0e10cSrcweir 	inline RTParamMode		getMethodParamMode( sal_uInt16 index, sal_uInt16 paramIndex ) const;
249cdf0e10cSrcweir 
250cdf0e10cSrcweir     /** returns the number of exceptions which are declared for the method specified by index.
251cdf0e10cSrcweir 
252cdf0e10cSrcweir         @param index indicates the method
253cdf0e10cSrcweir      */
254cdf0e10cSrcweir 	inline sal_uInt32    	getMethodExcCount( sal_uInt16 index ) const;
255cdf0e10cSrcweir 
256cdf0e10cSrcweir     /** returns the full qualified exception type of the specified exception.
257cdf0e10cSrcweir 
258cdf0e10cSrcweir         @param index indicates the method
259cdf0e10cSrcweir         @param paramIndex indeciates the exception which typename will be returned.
260cdf0e10cSrcweir      */
261cdf0e10cSrcweir 	inline ::rtl::OUString 	getMethodExcType( sal_uInt16 index, sal_uInt16 excIndex ) const;
262cdf0e10cSrcweir 
263cdf0e10cSrcweir     /** returns the full qualified return type of the method specified by index.
264cdf0e10cSrcweir      */
265cdf0e10cSrcweir 	inline ::rtl::OUString 	getMethodReturnType( sal_uInt16 index ) const;
266cdf0e10cSrcweir 
267cdf0e10cSrcweir     /** returns the full qualified exception type of the specified exception.
268cdf0e10cSrcweir 
269cdf0e10cSrcweir         @param index indicates the method
270cdf0e10cSrcweir         @param paramIndex indeciates the exception which typename will be returned.
271cdf0e10cSrcweir      */
272cdf0e10cSrcweir 	inline RTMethodMode		getMethodMode( sal_uInt16 index ) const;
273cdf0e10cSrcweir 
274cdf0e10cSrcweir     /** returns the documentation string of the method specified by index.
275cdf0e10cSrcweir 
276cdf0e10cSrcweir         @param index indicates the method.
277cdf0e10cSrcweir      */
278cdf0e10cSrcweir 	inline ::rtl::OUString 	getMethodDoku( sal_uInt16 index ) const;
279cdf0e10cSrcweir 
280cdf0e10cSrcweir     /** returns the number of references (supported interfaces, exported services).
281cdf0e10cSrcweir      */
282cdf0e10cSrcweir 	inline sal_uInt32		getReferenceCount() const;
283cdf0e10cSrcweir 
284cdf0e10cSrcweir     /** returns the full qualified typename of the reference specified by index.
285cdf0e10cSrcweir 
286cdf0e10cSrcweir         @param index indicates the reference.
287cdf0e10cSrcweir      */
288cdf0e10cSrcweir 	inline ::rtl::OUString 	getReferenceName( sal_uInt16 index ) const;
289cdf0e10cSrcweir 
290cdf0e10cSrcweir     /** returns the type of the reference specified by index.
291cdf0e10cSrcweir 
292cdf0e10cSrcweir         @param index indicates the reference.
293cdf0e10cSrcweir      */
294cdf0e10cSrcweir 	inline RTReferenceType	getReferenceType( sal_uInt16 index ) const;
295cdf0e10cSrcweir 
296cdf0e10cSrcweir     /** returns the documentation string of the reference specified by index.
297cdf0e10cSrcweir 
298cdf0e10cSrcweir         @param index indicates the reference.
299cdf0e10cSrcweir     */
300cdf0e10cSrcweir 	inline ::rtl::OUString 	getReferenceDoku( sal_uInt16 index ) const;
301cdf0e10cSrcweir 
302cdf0e10cSrcweir     /** returns the access mode of the reference specified by index.
303cdf0e10cSrcweir 
304cdf0e10cSrcweir         The only valid value is RT_ACCESS_OPTIONAL in the context of
305cdf0e10cSrcweir         references.
306cdf0e10cSrcweir         @param index indicates the reference.
307cdf0e10cSrcweir      */
308cdf0e10cSrcweir 	inline RTFieldAccess	getReferenceAccess( sal_uInt16 index ) const;
309cdf0e10cSrcweir 
310cdf0e10cSrcweir protected:
311cdf0e10cSrcweir 
312cdf0e10cSrcweir     /// stores the registry type reader Api.
313cdf0e10cSrcweir 	const RegistryTypeReader_Api*							    m_pApi;
314cdf0e10cSrcweir     /// stores the handle of an implementation class
315cdf0e10cSrcweir 	TypeReaderImpl												m_hImpl;
316cdf0e10cSrcweir };
317cdf0e10cSrcweir 
318cdf0e10cSrcweir 
319cdf0e10cSrcweir 
RegistryTypeReader(const sal_uInt8 * buffer,sal_uInt32 bufferLen,sal_Bool copyData)320cdf0e10cSrcweir inline RegistryTypeReader::RegistryTypeReader(const sal_uInt8* buffer,
321cdf0e10cSrcweir 											  sal_uInt32 bufferLen,
322cdf0e10cSrcweir 											  sal_Bool copyData)
323cdf0e10cSrcweir 	: m_pApi(initRegistryTypeReader_Api())
324cdf0e10cSrcweir 	, m_hImpl(NULL)
325cdf0e10cSrcweir 	{
326cdf0e10cSrcweir 		m_hImpl = m_pApi->createEntry(buffer, bufferLen, copyData);
327cdf0e10cSrcweir 	}
328cdf0e10cSrcweir 
329cdf0e10cSrcweir 
RegistryTypeReader(const RegistryTypeReader & toCopy)330cdf0e10cSrcweir inline RegistryTypeReader::RegistryTypeReader(const RegistryTypeReader& toCopy)
331cdf0e10cSrcweir 	: m_pApi(toCopy.m_pApi)
332cdf0e10cSrcweir 	, m_hImpl(toCopy.m_hImpl)
333cdf0e10cSrcweir 	{ m_pApi->acquire(m_hImpl); }
334cdf0e10cSrcweir 
335cdf0e10cSrcweir 
~RegistryTypeReader()336cdf0e10cSrcweir inline RegistryTypeReader::~RegistryTypeReader()
337cdf0e10cSrcweir 	{  m_pApi->release(m_hImpl); }
338cdf0e10cSrcweir 
operator ==(const RegistryTypeReader & toAssign)339cdf0e10cSrcweir inline RegistryTypeReader& RegistryTypeReader::operator == (const RegistryTypeReader& toAssign)
340cdf0e10cSrcweir {
341cdf0e10cSrcweir 	if (m_hImpl != toAssign.m_hImpl)
342cdf0e10cSrcweir 	{
343cdf0e10cSrcweir 		m_pApi->release(m_hImpl);
344cdf0e10cSrcweir 		m_hImpl = toAssign.m_hImpl;
345cdf0e10cSrcweir 		m_pApi->acquire(m_hImpl);
346cdf0e10cSrcweir 	}
347cdf0e10cSrcweir 
348cdf0e10cSrcweir 	return *this;
349cdf0e10cSrcweir }
350cdf0e10cSrcweir 
getMinorVersion() const351cdf0e10cSrcweir inline sal_uInt16 RegistryTypeReader::getMinorVersion() const
352cdf0e10cSrcweir 	{  return m_pApi->getMinorVersion(m_hImpl); }
353cdf0e10cSrcweir 
isValid() const354cdf0e10cSrcweir inline sal_Bool RegistryTypeReader::isValid() const
355cdf0e10cSrcweir 	{  return (m_hImpl != NULL); }
356cdf0e10cSrcweir 
getMajorVersion() const357cdf0e10cSrcweir inline sal_uInt16 RegistryTypeReader::getMajorVersion() const
358cdf0e10cSrcweir 	{  return m_pApi->getMajorVersion(m_hImpl); }
359cdf0e10cSrcweir 
getTypeClass() const360cdf0e10cSrcweir inline RTTypeClass RegistryTypeReader::getTypeClass() const
361cdf0e10cSrcweir 	{  return m_pApi->getTypeClass(m_hImpl); }
362cdf0e10cSrcweir 
getTypeName() const363cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getTypeName() const
364cdf0e10cSrcweir 	{
365cdf0e10cSrcweir 		::rtl::OUString sRet;
366cdf0e10cSrcweir 		m_pApi->getTypeName(m_hImpl, &sRet.pData);
367cdf0e10cSrcweir 		return sRet;
368cdf0e10cSrcweir 	}
369cdf0e10cSrcweir 
getSuperTypeName() const370cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getSuperTypeName() const
371cdf0e10cSrcweir 	{
372cdf0e10cSrcweir 		::rtl::OUString sRet;
373cdf0e10cSrcweir 		m_pApi->getSuperTypeName(m_hImpl, &sRet.pData);
374cdf0e10cSrcweir 		return sRet;
375cdf0e10cSrcweir 	}
376cdf0e10cSrcweir 
getUik(RTUik & uik) const377cdf0e10cSrcweir inline void RegistryTypeReader::getUik(RTUik& uik) const
378cdf0e10cSrcweir 	{  m_pApi->getUik(m_hImpl, &uik); }
379cdf0e10cSrcweir 
getDoku() const380cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getDoku() const
381cdf0e10cSrcweir 	{
382cdf0e10cSrcweir 		::rtl::OUString sRet;
383cdf0e10cSrcweir 		m_pApi->getDoku(m_hImpl, &sRet.pData);
384cdf0e10cSrcweir 		return sRet;
385cdf0e10cSrcweir 	}
386cdf0e10cSrcweir 
getFileName() const387cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getFileName() const
388cdf0e10cSrcweir 	{
389cdf0e10cSrcweir 		::rtl::OUString sRet;
390cdf0e10cSrcweir 		m_pApi->getFileName(m_hImpl, &sRet.pData);
391cdf0e10cSrcweir 		return sRet;
392cdf0e10cSrcweir 	}
393cdf0e10cSrcweir 
getFieldCount() const394cdf0e10cSrcweir inline sal_uInt32 RegistryTypeReader::getFieldCount() const
395cdf0e10cSrcweir 	{  	return m_pApi->getFieldCount(m_hImpl); }
396cdf0e10cSrcweir 
getFieldName(sal_uInt16 index) const397cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getFieldName( sal_uInt16 index ) const
398cdf0e10cSrcweir 	{
399cdf0e10cSrcweir 		::rtl::OUString sRet;
400cdf0e10cSrcweir 		m_pApi->getFieldName(m_hImpl, &sRet.pData, index);
401cdf0e10cSrcweir 		return sRet;
402cdf0e10cSrcweir 	}
403cdf0e10cSrcweir 
getFieldType(sal_uInt16 index) const404cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getFieldType( sal_uInt16 index ) const
405cdf0e10cSrcweir 	{
406cdf0e10cSrcweir 		::rtl::OUString sRet;
407cdf0e10cSrcweir 		m_pApi->getFieldType(m_hImpl, &sRet.pData, index);
408cdf0e10cSrcweir 		return sRet;
409cdf0e10cSrcweir 	}
410cdf0e10cSrcweir 
getFieldAccess(sal_uInt16 index) const411cdf0e10cSrcweir inline RTFieldAccess RegistryTypeReader::getFieldAccess( sal_uInt16 index ) const
412cdf0e10cSrcweir 	{  return m_pApi->getFieldAccess(m_hImpl, index); }
413cdf0e10cSrcweir 
getFieldConstValue(sal_uInt16 index) const414cdf0e10cSrcweir inline RTConstValue RegistryTypeReader::getFieldConstValue( sal_uInt16 index ) const
415cdf0e10cSrcweir 	{
416cdf0e10cSrcweir 		RTConstValue ret;
417cdf0e10cSrcweir 		ret.m_type = m_pApi->getFieldConstValue(m_hImpl, index, &ret.m_value);
418cdf0e10cSrcweir 		return ret;
419cdf0e10cSrcweir 	}
420cdf0e10cSrcweir 
getFieldDoku(sal_uInt16 index) const421cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getFieldDoku( sal_uInt16 index ) const
422cdf0e10cSrcweir 	{
423cdf0e10cSrcweir 		::rtl::OUString sRet;
424cdf0e10cSrcweir 		m_pApi->getFieldDoku(m_hImpl, &sRet.pData, index);
425cdf0e10cSrcweir 		return sRet;
426cdf0e10cSrcweir 	}
427cdf0e10cSrcweir 
getFieldFileName(sal_uInt16 index) const428cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getFieldFileName( sal_uInt16 index ) const
429cdf0e10cSrcweir 	{
430cdf0e10cSrcweir 		::rtl::OUString sRet;
431cdf0e10cSrcweir 		m_pApi->getFieldFileName(m_hImpl, &sRet.pData, index);
432cdf0e10cSrcweir 		return sRet;
433cdf0e10cSrcweir 	}
434cdf0e10cSrcweir 
getMethodCount() const435cdf0e10cSrcweir inline sal_uInt32 RegistryTypeReader::getMethodCount() const
436cdf0e10cSrcweir 	{  return m_pApi->getMethodCount(m_hImpl); }
437cdf0e10cSrcweir 
getMethodName(sal_uInt16 index) const438cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getMethodName( sal_uInt16 index ) const
439cdf0e10cSrcweir 	{
440cdf0e10cSrcweir 		::rtl::OUString sRet;
441cdf0e10cSrcweir 		m_pApi->getMethodName(m_hImpl, &sRet.pData, index);
442cdf0e10cSrcweir 		return sRet;
443cdf0e10cSrcweir 	}
444cdf0e10cSrcweir 
getMethodParamCount(sal_uInt16 index) const445cdf0e10cSrcweir inline sal_uInt32 RegistryTypeReader::getMethodParamCount( sal_uInt16 index ) const
446cdf0e10cSrcweir 	{  return m_pApi->getMethodParamCount(m_hImpl, index); }
447cdf0e10cSrcweir 
getMethodParamType(sal_uInt16 index,sal_uInt16 paramIndex) const448cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getMethodParamType( sal_uInt16 index, sal_uInt16 paramIndex ) const
449cdf0e10cSrcweir 	{
450cdf0e10cSrcweir 		::rtl::OUString sRet;
451cdf0e10cSrcweir 		m_pApi->getMethodParamType(m_hImpl, &sRet.pData, index, paramIndex);
452cdf0e10cSrcweir 		return sRet;
453cdf0e10cSrcweir 	}
454cdf0e10cSrcweir 
getMethodParamName(sal_uInt16 index,sal_uInt16 paramIndex) const455cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getMethodParamName( sal_uInt16 index, sal_uInt16 paramIndex ) const
456cdf0e10cSrcweir 	{
457cdf0e10cSrcweir 		::rtl::OUString sRet;
458cdf0e10cSrcweir 		m_pApi->getMethodParamName(m_hImpl, &sRet.pData, index, paramIndex);
459cdf0e10cSrcweir 		return sRet;
460cdf0e10cSrcweir 	}
461cdf0e10cSrcweir 
getMethodParamMode(sal_uInt16 index,sal_uInt16 paramIndex) const462cdf0e10cSrcweir inline RTParamMode RegistryTypeReader::getMethodParamMode( sal_uInt16 index, sal_uInt16 paramIndex ) const
463cdf0e10cSrcweir 	{  return m_pApi->getMethodParamMode(m_hImpl, index, paramIndex); }
464cdf0e10cSrcweir 
getMethodExcCount(sal_uInt16 index) const465cdf0e10cSrcweir inline sal_uInt32 RegistryTypeReader::getMethodExcCount( sal_uInt16 index ) const
466cdf0e10cSrcweir 	{  return m_pApi->getMethodExcCount(m_hImpl, index); }
467cdf0e10cSrcweir 
getMethodExcType(sal_uInt16 index,sal_uInt16 excIndex) const468cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getMethodExcType( sal_uInt16 index, sal_uInt16 excIndex ) const
469cdf0e10cSrcweir 	{
470cdf0e10cSrcweir 		::rtl::OUString sRet;
471cdf0e10cSrcweir 		m_pApi->getMethodExcType(m_hImpl, &sRet.pData, index, excIndex);
472cdf0e10cSrcweir 		return sRet;
473cdf0e10cSrcweir 	}
474cdf0e10cSrcweir 
getMethodReturnType(sal_uInt16 index) const475cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getMethodReturnType( sal_uInt16 index ) const
476cdf0e10cSrcweir 	{
477cdf0e10cSrcweir 		::rtl::OUString sRet;
478cdf0e10cSrcweir 		m_pApi->getMethodReturnType(m_hImpl, &sRet.pData, index);
479cdf0e10cSrcweir 		return sRet;
480cdf0e10cSrcweir 	}
481cdf0e10cSrcweir 
getMethodMode(sal_uInt16 index) const482cdf0e10cSrcweir inline RTMethodMode RegistryTypeReader::getMethodMode( sal_uInt16 index ) const
483cdf0e10cSrcweir 	{  return m_pApi->getMethodMode(m_hImpl, index); }
484cdf0e10cSrcweir 
getMethodDoku(sal_uInt16 index) const485cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getMethodDoku( sal_uInt16 index ) const
486cdf0e10cSrcweir 	{
487cdf0e10cSrcweir 		::rtl::OUString sRet;
488cdf0e10cSrcweir 		m_pApi->getMethodDoku(m_hImpl, &sRet.pData, index);
489cdf0e10cSrcweir 		return sRet;
490cdf0e10cSrcweir 	}
491cdf0e10cSrcweir 
getReferenceCount() const492cdf0e10cSrcweir inline sal_uInt32 RegistryTypeReader::getReferenceCount() const
493cdf0e10cSrcweir 	{  return m_pApi->getReferenceCount(m_hImpl); }
494cdf0e10cSrcweir 
getReferenceName(sal_uInt16 index) const495cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getReferenceName( sal_uInt16 index ) const
496cdf0e10cSrcweir 	{
497cdf0e10cSrcweir 		::rtl::OUString sRet;
498cdf0e10cSrcweir 		m_pApi->getReferenceName(m_hImpl, &sRet.pData, index);
499cdf0e10cSrcweir 		return sRet;
500cdf0e10cSrcweir 	}
501cdf0e10cSrcweir 
getReferenceType(sal_uInt16 index) const502cdf0e10cSrcweir inline RTReferenceType RegistryTypeReader::getReferenceType( sal_uInt16 index ) const
503cdf0e10cSrcweir 	{  return m_pApi->getReferenceType(m_hImpl, index); }
504cdf0e10cSrcweir 
getReferenceDoku(sal_uInt16 index) const505cdf0e10cSrcweir inline ::rtl::OUString RegistryTypeReader::getReferenceDoku( sal_uInt16 index ) const
506cdf0e10cSrcweir 	{
507cdf0e10cSrcweir 		::rtl::OUString sRet;
508cdf0e10cSrcweir 		m_pApi->getReferenceDoku(m_hImpl, &sRet.pData, index);
509cdf0e10cSrcweir 		return sRet;
510cdf0e10cSrcweir 	}
511cdf0e10cSrcweir 
getReferenceAccess(sal_uInt16 index) const512cdf0e10cSrcweir inline RTFieldAccess RegistryTypeReader::getReferenceAccess( sal_uInt16 index ) const
513cdf0e10cSrcweir 	{  return m_pApi->getReferenceAccess(m_hImpl, index); }
514cdf0e10cSrcweir 
515cdf0e10cSrcweir #endif
516