File: | idlc/source/astdump.cxx |
Location: | line 393, column 26 |
Description: | Dereference of null pointer (loaded from variable 'methodIndex') |
1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | |||
2 | /* | |||
3 | * This file is part of the LibreOffice project. | |||
4 | * | |||
5 | * This Source Code Form is subject to the terms of the Mozilla Public | |||
6 | * License, v. 2.0. If a copy of the MPL was not distributed with this | |||
7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
8 | * | |||
9 | * This file incorporates work covered by the following license notice: | |||
10 | * | |||
11 | * Licensed to the Apache Software Foundation (ASF) under one or more | |||
12 | * contributor license agreements. See the NOTICE file distributed | |||
13 | * with this work for additional information regarding copyright | |||
14 | * ownership. The ASF licenses this file to you under the Apache | |||
15 | * License, Version 2.0 (the "License"); you may not use this file | |||
16 | * except in compliance with the License. You may obtain a copy of | |||
17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . | |||
18 | */ | |||
19 | ||||
20 | #include <idlc/astmodule.hxx> | |||
21 | #include <idlc/asttypedef.hxx> | |||
22 | #include <idlc/astservice.hxx> | |||
23 | #include <idlc/astconstant.hxx> | |||
24 | #include <idlc/astattribute.hxx> | |||
25 | #include <idlc/astinterfacemember.hxx> | |||
26 | #include <idlc/astservicemember.hxx> | |||
27 | #include <idlc/astobserves.hxx> | |||
28 | #include <idlc/astneeds.hxx> | |||
29 | #include <idlc/astsequence.hxx> | |||
30 | #include "idlc/astoperation.hxx" | |||
31 | ||||
32 | #include "registry/version.h" | |||
33 | #include "registry/writer.hxx" | |||
34 | ||||
35 | using namespace ::rtl; | |||
36 | ||||
37 | sal_Bool AstModule::dump(RegistryKey& rKey) | |||
38 | { | |||
39 | OUString emptyStr; | |||
40 | RegistryKey localKey; | |||
41 | if ( getNodeType() == NT_root ) | |||
42 | { | |||
43 | localKey = rKey; | |||
44 | }else | |||
45 | { | |||
46 | if (rKey.createKey( OStringToOUString(getFullName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)) ), localKey)) | |||
47 | { | |||
48 | fprintf(stderrstderr, "%s: warning, could not create key '%s' in '%s'\n", | |||
49 | idlc()->getOptions()->getProgramName().getStr(), | |||
50 | getFullName().getStr(), OUStringToOString(rKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
51 | return sal_False((sal_Bool)0); | |||
52 | } | |||
53 | } | |||
54 | ||||
55 | sal_uInt16 nConst = getNodeCount(NT_const); | |||
56 | ||||
57 | if ( nConst > 0 ) | |||
58 | { | |||
59 | RTTypeClass typeClass = RT_TYPE_MODULE; | |||
60 | if ( getNodeType() == NT_constants ) | |||
61 | typeClass = RT_TYPE_CONSTANTS; | |||
62 | ||||
63 | typereg::Writer aBlob( | |||
64 | m_bPublished ? TYPEREG_VERSION_1 : TYPEREG_VERSION_0, | |||
65 | getDocumentation(), emptyStr, typeClass, | |||
66 | m_bPublished, | |||
67 | OStringToOUString(getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), 0, | |||
68 | nConst, 0, 0); | |||
69 | ||||
70 | DeclList::const_iterator iter = getIteratorBegin(); | |||
71 | DeclList::const_iterator end = getIteratorEnd(); | |||
72 | AstDeclaration* pDecl = NULL__null; | |||
73 | sal_uInt16 index = 0; | |||
74 | while ( iter != end ) | |||
75 | { | |||
76 | pDecl = *iter; | |||
77 | if ( pDecl->getNodeType() == NT_const && | |||
78 | pDecl->isInMainfile() ) | |||
79 | { | |||
80 | ((AstConstant*)pDecl)->dumpBlob( | |||
81 | aBlob, index++, | |||
82 | getNodeType() == NT_module && pDecl->isPublished()); | |||
83 | } | |||
84 | ++iter; | |||
85 | } | |||
86 | ||||
87 | sal_uInt32 aBlobSize; | |||
88 | void const * pBlob = aBlob.getBlob(&aBlobSize); | |||
89 | ||||
90 | if (localKey.setValue(emptyStr, RG_VALUETYPE_BINARY, | |||
91 | (RegValue)pBlob, aBlobSize)) | |||
92 | { | |||
93 | fprintf(stderrstderr, "%s: warning, could not set value of key \"%s\" in %s\n", | |||
94 | idlc()->getOptions()->getProgramName().getStr(), | |||
95 | getFullName().getStr(), OUStringToOString(localKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
96 | return sal_False((sal_Bool)0); | |||
97 | } | |||
98 | } else | |||
99 | { | |||
100 | RTTypeClass typeClass = RT_TYPE_MODULE; | |||
101 | if ( getNodeType() == NT_constants ) | |||
102 | typeClass = RT_TYPE_CONSTANTS; | |||
103 | ||||
104 | typereg::Writer aBlob( | |||
105 | m_bPublished ? TYPEREG_VERSION_1 : TYPEREG_VERSION_0, | |||
106 | getDocumentation(), emptyStr, typeClass, m_bPublished, | |||
107 | OStringToOUString(getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), 0, 0, 0, | |||
108 | 0); | |||
109 | ||||
110 | sal_uInt32 aBlobSize; | |||
111 | void const * pBlob = aBlob.getBlob(&aBlobSize); | |||
112 | ||||
113 | if ( getNodeType() != NT_root ) | |||
114 | { | |||
115 | if (localKey.setValue(emptyStr, RG_VALUETYPE_BINARY, | |||
116 | (RegValue)pBlob, aBlobSize)) | |||
117 | { | |||
118 | fprintf(stderrstderr, "%s: warning, could not set value of key \"%s\" in %s\n", | |||
119 | idlc()->getOptions()->getProgramName().getStr(), | |||
120 | getFullName().getStr(), OUStringToOString(localKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
121 | return sal_False((sal_Bool)0); | |||
122 | } | |||
123 | } | |||
124 | } | |||
125 | if ( getNodeType() == NT_root ) | |||
126 | { | |||
127 | localKey.releaseKey(); | |||
128 | } | |||
129 | return AstDeclaration::dump(rKey); | |||
130 | } | |||
131 | ||||
132 | sal_Bool AstTypeDef::dump(RegistryKey& rKey) | |||
133 | { | |||
134 | OUString emptyStr; | |||
135 | RegistryKey localKey; | |||
136 | if (rKey.createKey( OStringToOUString(getFullName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)) ), localKey)) | |||
137 | { | |||
138 | fprintf(stderrstderr, "%s: warning, could not create key '%s' in '%s'\n", | |||
139 | idlc()->getOptions()->getProgramName().getStr(), | |||
140 | getFullName().getStr(), OUStringToOString(rKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
141 | return sal_False((sal_Bool)0); | |||
142 | } | |||
143 | ||||
144 | typereg::Writer aBlob( | |||
145 | m_bPublished ? TYPEREG_VERSION_1 : TYPEREG_VERSION_0, | |||
146 | getDocumentation(), emptyStr, RT_TYPE_TYPEDEF, m_bPublished, | |||
147 | OStringToOUString(getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), 1, 0, 0, 0); | |||
148 | aBlob.setSuperTypeName( | |||
149 | 0, | |||
150 | OStringToOUString( | |||
151 | getBaseType()->getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
152 | ||||
153 | sal_uInt32 aBlobSize; | |||
154 | void const * pBlob = aBlob.getBlob(&aBlobSize); | |||
155 | ||||
156 | if (localKey.setValue(emptyStr, RG_VALUETYPE_BINARY, (RegValue)pBlob, aBlobSize)) | |||
157 | { | |||
158 | fprintf(stderrstderr, "%s: warning, could not set value of key \"%s\" in %s\n", | |||
159 | idlc()->getOptions()->getProgramName().getStr(), | |||
160 | getFullName().getStr(), OUStringToOString(localKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
161 | return sal_False((sal_Bool)0); | |||
162 | } | |||
163 | ||||
164 | return sal_True((sal_Bool)1); | |||
165 | } | |||
166 | ||||
167 | sal_Bool AstService::dump(RegistryKey& rKey) | |||
168 | { | |||
169 | OUString emptyStr; | |||
170 | typereg_Version version = m_bPublished | |||
171 | ? TYPEREG_VERSION_1 : TYPEREG_VERSION_0; | |||
172 | OString superName; | |||
173 | sal_uInt16 constructors = 0; | |||
174 | sal_uInt16 properties = 0; | |||
175 | sal_uInt16 references = 0; | |||
176 | {for (DeclList::const_iterator i(getIteratorBegin()); i != getIteratorEnd(); | |||
177 | ++i) | |||
178 | { | |||
179 | switch ((*i)->getNodeType()) { | |||
180 | case NT_interface: | |||
181 | case NT_typedef: | |||
182 | version = TYPEREG_VERSION_1; | |||
183 | OSL_ASSERT(superName.isEmpty())do { if (true && (!(superName.isEmpty()))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "183" ": "), "OSL_ASSERT: %s", "superName.isEmpty()"); } } while (false); | |||
184 | superName = (*i)->getRelativName(); | |||
185 | break; | |||
186 | ||||
187 | case NT_operation: | |||
188 | OSL_ASSERT(getNodeType() == NT_service)do { if (true && (!(getNodeType() == NT_service))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "188" ": "), "OSL_ASSERT: %s", "getNodeType() == NT_service" ); } } while (false); | |||
189 | ++constructors; | |||
190 | break; | |||
191 | ||||
192 | case NT_property: | |||
193 | OSL_ASSERT(getNodeType() == NT_service)do { if (true && (!(getNodeType() == NT_service))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "193" ": "), "OSL_ASSERT: %s", "getNodeType() == NT_service" ); } } while (false); | |||
194 | ++properties; | |||
195 | break; | |||
196 | ||||
197 | case NT_service_member: | |||
198 | if (getNodeType() == NT_singleton) { | |||
199 | OSL_ASSERT(superName.isEmpty())do { if (true && (!(superName.isEmpty()))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "199" ": "), "OSL_ASSERT: %s", "superName.isEmpty()"); } } while (false); | |||
200 | superName = ((AstServiceMember *)(*i))-> | |||
201 | getRealService()->getRelativName(); | |||
202 | break; | |||
203 | } | |||
204 | case NT_interface_member: | |||
205 | case NT_observes: | |||
206 | case NT_needs: | |||
207 | OSL_ASSERT(getNodeType() == NT_service)do { if (true && (!(getNodeType() == NT_service))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "207" ": "), "OSL_ASSERT: %s", "getNodeType() == NT_service" ); } } while (false); | |||
208 | ++references; | |||
209 | break; | |||
210 | ||||
211 | default: | |||
212 | OSL_ASSERT(false)do { if (true && (!(false))) { sal_detail_logFormat(( SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "212" ": "), "OSL_ASSERT: %s", "false"); } } while (false ); | |||
213 | break; | |||
214 | } | |||
215 | }} | |||
216 | OSL_ASSERT(constructors == 0 || !m_defaultConstructor)do { if (true && (!(constructors == 0 || !m_defaultConstructor ))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl" ), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "216" ": "), "OSL_ASSERT: %s", "constructors == 0 || !m_defaultConstructor" ); } } while (false); | |||
217 | if (m_defaultConstructor) { | |||
218 | constructors = 1; | |||
219 | } | |||
220 | RegistryKey localKey; | |||
221 | if (rKey.createKey( | |||
222 | rtl::OStringToOUString(getFullName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), | |||
223 | localKey)) { | |||
224 | fprintf( | |||
225 | stderrstderr, "%s: warning, could not create key '%s' in '%s'\n", | |||
226 | idlc()->getOptions()->getProgramName().getStr(), | |||
227 | getFullName().getStr(), | |||
228 | rtl::OUStringToOString( | |||
229 | rKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
230 | return false; | |||
231 | } | |||
232 | typereg::Writer writer( | |||
233 | version, getDocumentation(), emptyStr, | |||
234 | getNodeType() == NT_singleton ? RT_TYPE_SINGLETON : RT_TYPE_SERVICE, | |||
235 | m_bPublished, | |||
236 | rtl::OStringToOUString(getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), | |||
237 | superName.isEmpty() ? 0 : 1, properties, constructors, | |||
238 | references); | |||
239 | if (!superName.isEmpty()) { | |||
240 | writer.setSuperTypeName( | |||
241 | 0, rtl::OStringToOUString(superName, RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
242 | } | |||
243 | sal_uInt16 constructorIndex = 0; | |||
244 | sal_uInt16 propertyIndex = 0; | |||
245 | sal_uInt16 referenceIndex = 0; | |||
246 | for (DeclList::const_iterator i(getIteratorBegin()); i != getIteratorEnd(); ++i) | |||
247 | { | |||
248 | switch ((*i)->getNodeType()) { | |||
249 | case NT_operation: | |||
250 | ((AstOperation *)(*i))->dumpBlob(writer, constructorIndex++); | |||
251 | break; | |||
252 | ||||
253 | case NT_property: | |||
254 | ((AstAttribute *)(*i))->dumpBlob(writer, propertyIndex++, 0); | |||
255 | break; | |||
256 | ||||
257 | case NT_interface_member: | |||
258 | { | |||
259 | AstInterfaceMember * decl = (AstInterfaceMember *)(*i); | |||
260 | writer.setReferenceData( | |||
261 | referenceIndex++, decl->getDocumentation(), RT_REF_SUPPORTS, | |||
262 | (decl->isOptional() ? RT_ACCESS_OPTIONAL0x0002 : RT_ACCESS_INVALID0x0000), | |||
263 | rtl::OStringToOUString( decl->getRealInterface()->getRelativName(), | |||
264 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
265 | break; | |||
266 | } | |||
267 | ||||
268 | case NT_service_member: | |||
269 | if (getNodeType() == NT_service) | |||
270 | { | |||
271 | AstServiceMember * decl = (AstServiceMember *)(*i); | |||
272 | writer.setReferenceData(referenceIndex++, decl->getDocumentation(), RT_REF_EXPORTS, | |||
273 | (decl->isOptional() ? RT_ACCESS_OPTIONAL0x0002 : RT_ACCESS_INVALID0x0000), | |||
274 | rtl::OStringToOUString(decl->getRealService()->getRelativName(), | |||
275 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
276 | } | |||
277 | break; | |||
278 | ||||
279 | case NT_observes: | |||
280 | { | |||
281 | AstObserves * decl = (AstObserves *)(*i); | |||
282 | writer.setReferenceData(referenceIndex++, decl->getDocumentation(), RT_REF_OBSERVES, | |||
283 | RT_ACCESS_INVALID0x0000, | |||
284 | rtl::OStringToOUString( decl->getRealInterface()->getRelativName(), | |||
285 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
286 | break; | |||
287 | } | |||
288 | ||||
289 | case NT_needs: | |||
290 | { | |||
291 | AstNeeds * decl = (AstNeeds *)(*i); | |||
292 | writer.setReferenceData( referenceIndex++, decl->getDocumentation(), RT_REF_NEEDS, | |||
293 | RT_ACCESS_INVALID0x0000, | |||
294 | rtl::OStringToOUString( decl->getRealService()->getRelativName(), | |||
295 | RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
296 | break; | |||
297 | } | |||
298 | ||||
299 | default: | |||
300 | OSL_ASSERT( (*i)->getNodeType() == NT_interface || (*i)->getNodeType() == NT_typedef)do { if (true && (!((*i)->getNodeType() == NT_interface || (*i)->getNodeType() == NT_typedef))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "300" ": "), "OSL_ASSERT: %s", "(*i)->getNodeType() == NT_interface || (*i)->getNodeType() == NT_typedef" ); } } while (false); | |||
301 | break; | |||
302 | } | |||
303 | } | |||
304 | if (m_defaultConstructor) { | |||
305 | writer.setMethodData( | |||
306 | constructorIndex++, emptyStr, RT_MODE_TWOWAY, | |||
307 | emptyStr, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("void")(&("void")[0]), ((sal_Int32)((sizeof ("void") / sizeof (( "void")[0]))-1)), (((rtl_TextEncoding) 11))), | |||
308 | 0, 0); | |||
309 | } | |||
310 | sal_uInt32 size; | |||
311 | void const * blob = writer.getBlob(&size); | |||
312 | if (localKey.setValue( | |||
313 | emptyStr, RG_VALUETYPE_BINARY, const_cast< void * >(blob), | |||
314 | size)) | |||
315 | { | |||
316 | fprintf( | |||
317 | stderrstderr, "%s: warning, could not set value of key \"%s\" in %s\n", | |||
318 | idlc()->getOptions()->getProgramName().getStr(), | |||
319 | getFullName().getStr(), | |||
320 | rtl::OUStringToOString( | |||
321 | localKey.getRegistryName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))).getStr()); | |||
322 | return false; | |||
323 | } | |||
324 | return true; | |||
325 | } | |||
326 | ||||
327 | sal_Bool AstAttribute::dumpBlob( | |||
328 | typereg::Writer & rBlob, sal_uInt16 index, sal_uInt16 * methodIndex) | |||
329 | { | |||
330 | RTFieldAccess accessMode = RT_ACCESS_INVALID0x0000; | |||
331 | ||||
332 | if (isReadonly()) | |||
333 | { | |||
334 | accessMode |= RT_ACCESS_READONLY0x0001; | |||
335 | } else | |||
336 | { | |||
337 | accessMode |= RT_ACCESS_READWRITE0x1000; | |||
338 | } | |||
339 | if (isOptional()) | |||
340 | { | |||
341 | accessMode |= RT_ACCESS_OPTIONAL0x0002; | |||
342 | } | |||
343 | if (isBound()) | |||
344 | { | |||
345 | accessMode |= RT_ACCESS_BOUND0x0008; | |||
346 | } | |||
347 | if (isMayBeVoid()) | |||
348 | { | |||
349 | accessMode |= RT_ACCESS_MAYBEVOID0x0004; | |||
350 | } | |||
351 | if (isConstrained()) | |||
352 | { | |||
353 | accessMode |= RT_ACCESS_CONSTRAINED0x0010; | |||
354 | } | |||
355 | if (isTransient()) | |||
356 | { | |||
357 | accessMode |= RT_ACCESS_TRANSIENT0x0020; | |||
358 | } | |||
359 | if (isMayBeAmbiguous()) | |||
360 | { | |||
361 | accessMode |= RT_ACCESS_MAYBEAMBIGUOUS0x0040; | |||
362 | } | |||
363 | if (isMayBeDefault()) | |||
364 | { | |||
365 | accessMode |= RT_ACCESS_MAYBEDEFAULT0x0080; | |||
366 | } | |||
367 | if (isRemoveable()) | |||
368 | { | |||
369 | accessMode |= RT_ACCESS_REMOVEABLE0x0100; | |||
370 | } | |||
371 | ||||
372 | OUString name(OStringToOUString(getLocalName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
373 | rBlob.setFieldData( | |||
374 | index, getDocumentation(), OUString(), accessMode, name, | |||
375 | OStringToOUString(getType()->getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), | |||
376 | RTConstValue()); | |||
377 | dumpExceptions( | |||
378 | rBlob, m_getDocumentation, m_getExceptions, RT_MODE_ATTRIBUTE_GET, | |||
379 | methodIndex); | |||
380 | dumpExceptions( | |||
381 | rBlob, m_setDocumentation, m_setExceptions, RT_MODE_ATTRIBUTE_SET, | |||
382 | methodIndex); | |||
383 | ||||
384 | return sal_True((sal_Bool)1); | |||
385 | } | |||
386 | ||||
387 | void AstAttribute::dumpExceptions( | |||
388 | typereg::Writer & writer, rtl::OUString const & documentation, | |||
389 | DeclList const & exceptions, RTMethodMode flags, sal_uInt16 * methodIndex) | |||
390 | { | |||
391 | if (!exceptions.empty()) { | |||
| ||||
392 | OSL_ASSERT(methodIndex != 0)do { if (true && (!(methodIndex != 0))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/idlc/source/astdump.cxx" ":" "392" ": "), "OSL_ASSERT: %s", "methodIndex != 0"); } } while (false); | |||
393 | sal_uInt16 idx = (*methodIndex)++; | |||
| ||||
394 | // exceptions.size() <= SAL_MAX_UINT16 already checked in | |||
395 | // AstInterface::dump: | |||
396 | writer.setMethodData( | |||
397 | idx, documentation, flags, | |||
398 | OStringToOUString(getLocalName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76))), | |||
399 | rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("void")(&("void")[0]), ((sal_Int32)((sizeof ("void") / sizeof (( "void")[0]))-1)), (((rtl_TextEncoding) 11))), 0, | |||
400 | static_cast< sal_uInt16 >(exceptions.size())); | |||
401 | sal_uInt16 exceptionIndex = 0; | |||
402 | for (DeclList::const_iterator i(exceptions.begin()); | |||
403 | i != exceptions.end(); ++i) | |||
404 | { | |||
405 | writer.setMethodExceptionTypeName( | |||
406 | idx, exceptionIndex++, | |||
407 | rtl::OStringToOUString( | |||
408 | (*i)->getRelativName(), RTL_TEXTENCODING_UTF8(((rtl_TextEncoding) 76)))); | |||
409 | } | |||
410 | } | |||
411 | } | |||
412 | ||||
413 | const sal_Char* AstSequence::getRelativName() const | |||
414 | { | |||
415 | if ( !m_pRelativName ) | |||
416 | { | |||
417 | m_pRelativName = new OString("[]"); | |||
418 | AstDeclaration const * pType = resolveTypedefs( m_pMemberType ); | |||
419 | *m_pRelativName += pType->getRelativName(); | |||
420 | } | |||
421 | ||||
422 | return m_pRelativName->getStr(); | |||
423 | } | |||
424 | ||||
425 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |