Bug Summary

File:stoc/source/simpleregistry/textualservices.cxx
Location:line 687, column 16
Description:Called C++ object pointer is null

Annotated Source Code

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 "sal/config.h"
21
22#include <cstddef>
23#include <cstdlib>
24#include <map>
25#include <vector>
26
27#include "boost/noncopyable.hpp"
28#include "com/sun/star/container/NoSuchElementException.hpp"
29#include "com/sun/star/registry/InvalidRegistryException.hpp"
30#include "com/sun/star/registry/XRegistryKey.hpp"
31#include "com/sun/star/uno/Reference.hxx"
32#include "com/sun/star/uno/XInterface.hpp"
33#include "cppuhelper/implbase1.hxx"
34#include "osl/diagnose.h"
35#include "rtl/malformeduriexception.hxx"
36#include "rtl/ref.hxx"
37#include "rtl/string.h"
38#include "rtl/uri.hxx"
39#include "rtl/ustrbuf.hxx"
40#include "rtl/ustring.h"
41#include "rtl/ustring.hxx"
42#include "salhelper/simplereferenceobject.hxx"
43#include "xmlreader/span.hxx"
44#include "xmlreader/xmlreader.hxx"
45
46#include "textualservices.hxx"
47
48namespace stoc { namespace simpleregistry {
49
50namespace {
51
52namespace css = com::sun::star;
53
54struct Implementation {
55 rtl::OUString uri;
56 rtl::OUString loader;
57 rtl::OUString prefix;
58 std::vector< rtl::OUString > services;
59 std::vector< rtl::OUString > singletons;
60};
61
62typedef std::map< rtl::OUString, Implementation > Implementations;
63
64typedef std::map< rtl::OUString, std::vector< rtl::OUString > >
65 ImplementationMap;
66
67}
68
69class Data: public salhelper::SimpleReferenceObject, private boost::noncopyable
70{
71public:
72 Implementations implementations;
73 ImplementationMap services;
74 ImplementationMap singletons;
75};
76
77namespace {
78
79class Parser: private boost::noncopyable {
80public:
81 Parser(rtl::OUString const & uri, rtl::Reference< Data > const & data);
82
83private:
84 void handleComponent();
85
86 void handleImplementation();
87
88 void handleService();
89
90 void handleSingleton();
91
92 rtl::OUString getNameAttribute();
93
94 xmlreader::XmlReader reader_;
95 rtl::Reference< Data > data_;
96 rtl::OUString attrUri_;
97 rtl::OUString attrLoader_;
98 rtl::OUString attrPrefix_;
99 rtl::OUString attrImplementation_;
100};
101
102Parser::Parser(rtl::OUString const & uri, rtl::Reference< Data > const & data):
103 reader_(uri), data_(data)
104{
105 OSL_ASSERT(data.is())do { if (true && (!(data.is()))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "105" ": "), "OSL_ASSERT: %s", "data.is()"); } } while (
false)
;
106 int ucNsId = reader_.registerNamespaceIri(
107 xmlreader::Span(
108 RTL_CONSTASCII_STRINGPARAM((&("http://openoffice.org/2010/uno-components")[0]), ((sal_Int32
)(sizeof ("http://openoffice.org/2010/uno-components") / sizeof
(("http://openoffice.org/2010/uno-components")[0]))-1)
109 "http://openoffice.org/2010/uno-components")(&("http://openoffice.org/2010/uno-components")[0]), ((sal_Int32
)(sizeof ("http://openoffice.org/2010/uno-components") / sizeof
(("http://openoffice.org/2010/uno-components")[0]))-1)
));
110 enum State {
111 STATE_BEGIN, STATE_END, STATE_COMPONENTS, STATE_COMPONENT_INITIAL,
112 STATE_COMPONENT, STATE_IMPLEMENTATION, STATE_SERVICE, STATE_SINGLETON };
113 for (State state = STATE_BEGIN;;) {
114 xmlreader::Span name;
115 int nsId;
116 xmlreader::XmlReader::Result res = reader_.nextItem(
117 xmlreader::XmlReader::TEXT_NONE, &name, &nsId);
118 switch (state) {
119 case STATE_BEGIN:
120 if (res == xmlreader::XmlReader::RESULT_BEGIN && nsId == ucNsId &&
121 name.equals(RTL_CONSTASCII_STRINGPARAM("components")(&("components")[0]), ((sal_Int32)(sizeof ("components") /
sizeof (("components")[0]))-1)
))
122 {
123 state = STATE_COMPONENTS;
124 break;
125 }
126 throw css::registry::InvalidRegistryException(
127 (reader_.getUrl() +
128 rtl::OUString(
129 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in outer level")[0]), ((sal_Int32)(
(sizeof (": unexpected item in outer level") / sizeof ((": unexpected item in outer level"
)[0]))-1)), (((rtl_TextEncoding) 11))
130 ": unexpected item in outer level")(&(": unexpected item in outer level")[0]), ((sal_Int32)(
(sizeof (": unexpected item in outer level") / sizeof ((": unexpected item in outer level"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
131 css::uno::Reference< css::uno::XInterface >());
132 case STATE_END:
133 if (res == xmlreader::XmlReader::RESULT_DONE) {
134 return;
135 }
136 throw css::registry::InvalidRegistryException(
137 (reader_.getUrl() +
138 rtl::OUString(
139 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in outer level")[0]), ((sal_Int32)(
(sizeof (": unexpected item in outer level") / sizeof ((": unexpected item in outer level"
)[0]))-1)), (((rtl_TextEncoding) 11))
140 ": unexpected item in outer level")(&(": unexpected item in outer level")[0]), ((sal_Int32)(
(sizeof (": unexpected item in outer level") / sizeof ((": unexpected item in outer level"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
141 css::uno::Reference< css::uno::XInterface >());
142 case STATE_COMPONENTS:
143 if (res == xmlreader::XmlReader::RESULT_END) {
144 state = STATE_END;
145 break;
146 }
147 if (res == xmlreader::XmlReader::RESULT_BEGIN && nsId == ucNsId &&
148 name.equals(RTL_CONSTASCII_STRINGPARAM("component")(&("component")[0]), ((sal_Int32)(sizeof ("component") / sizeof
(("component")[0]))-1)
))
149 {
150 handleComponent();
151 state = STATE_COMPONENT_INITIAL;
152 break;
153 }
154 throw css::registry::InvalidRegistryException(
155 (reader_.getUrl() +
156 rtl::OUString(
157 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in <components>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <components>") / sizeof
((": unexpected item in <components>")[0]))-1)), (((rtl_TextEncoding
) 11))
158 ": unexpected item in <components>")(&(": unexpected item in <components>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <components>") / sizeof
((": unexpected item in <components>")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
159 css::uno::Reference< css::uno::XInterface >());
160 case STATE_COMPONENT:
161 if (res == xmlreader::XmlReader::RESULT_END) {
162 state = STATE_COMPONENTS;
163 break;
164 }
165 // fall through
166 case STATE_COMPONENT_INITIAL:
167 if (res == xmlreader::XmlReader::RESULT_BEGIN && nsId == ucNsId &&
168 name.equals(RTL_CONSTASCII_STRINGPARAM("implementation")(&("implementation")[0]), ((sal_Int32)(sizeof ("implementation"
) / sizeof (("implementation")[0]))-1)
))
169 {
170 handleImplementation();
171 state = STATE_IMPLEMENTATION;
172 break;
173 }
174 throw css::registry::InvalidRegistryException(
175 (reader_.getUrl() +
176 rtl::OUString(
177 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in <component>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <component>") / sizeof
((": unexpected item in <component>")[0]))-1)), (((rtl_TextEncoding
) 11))
178 ": unexpected item in <component>")(&(": unexpected item in <component>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <component>") / sizeof
((": unexpected item in <component>")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
179 css::uno::Reference< css::uno::XInterface >());
180 case STATE_IMPLEMENTATION:
181 if (res == xmlreader::XmlReader::RESULT_END) {
182 state = STATE_COMPONENT;
183 break;
184 }
185 if (res == xmlreader::XmlReader::RESULT_BEGIN && nsId == ucNsId &&
186 name.equals(RTL_CONSTASCII_STRINGPARAM("service")(&("service")[0]), ((sal_Int32)(sizeof ("service") / sizeof
(("service")[0]))-1)
))
187 {
188 handleService();
189 state = STATE_SERVICE;
190 break;
191 }
192 if (res == xmlreader::XmlReader::RESULT_BEGIN && nsId == ucNsId &&
193 name.equals(RTL_CONSTASCII_STRINGPARAM("singleton")(&("singleton")[0]), ((sal_Int32)(sizeof ("singleton") / sizeof
(("singleton")[0]))-1)
))
194 {
195 handleSingleton();
196 state = STATE_SINGLETON;
197 break;
198 }
199 throw css::registry::InvalidRegistryException(
200 (reader_.getUrl() +
201 rtl::OUString(
202 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in <implementation>")[0]), ((
sal_Int32)((sizeof (": unexpected item in <implementation>"
) / sizeof ((": unexpected item in <implementation>")[0
]))-1)), (((rtl_TextEncoding) 11))
203 ": unexpected item in <implementation>")(&(": unexpected item in <implementation>")[0]), ((
sal_Int32)((sizeof (": unexpected item in <implementation>"
) / sizeof ((": unexpected item in <implementation>")[0
]))-1)), (((rtl_TextEncoding) 11))
)),
204 css::uno::Reference< css::uno::XInterface >());
205 case STATE_SERVICE:
206 if (res == xmlreader::XmlReader::RESULT_END) {
207 state = STATE_IMPLEMENTATION;
208 break;
209 }
210 throw css::registry::InvalidRegistryException(
211 (reader_.getUrl() +
212 rtl::OUString(
213 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in <service>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <service>") / sizeof (
(": unexpected item in <service>")[0]))-1)), (((rtl_TextEncoding
) 11))
214 ": unexpected item in <service>")(&(": unexpected item in <service>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <service>") / sizeof (
(": unexpected item in <service>")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
215 css::uno::Reference< css::uno::XInterface >());
216 case STATE_SINGLETON:
217 if (res == xmlreader::XmlReader::RESULT_END) {
218 state = STATE_IMPLEMENTATION;
219 break;
220 }
221 throw css::registry::InvalidRegistryException(
222 (reader_.getUrl() +
223 rtl::OUString(
224 RTL_CONSTASCII_USTRINGPARAM((&(": unexpected item in <service>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <service>") / sizeof (
(": unexpected item in <service>")[0]))-1)), (((rtl_TextEncoding
) 11))
225 ": unexpected item in <service>")(&(": unexpected item in <service>")[0]), ((sal_Int32
)((sizeof (": unexpected item in <service>") / sizeof (
(": unexpected item in <service>")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
226 css::uno::Reference< css::uno::XInterface >());
227 }
228 }
229}
230
231void Parser::handleComponent() {
232 attrUri_ = rtl::OUString();
233 attrLoader_ = rtl::OUString();
234 attrPrefix_ = rtl::OUString();
235 xmlreader::Span name;
236 int nsId;
237 while (reader_.nextAttribute(&nsId, &name)) {
238 if (nsId == xmlreader::XmlReader::NAMESPACE_NONE &&
239 name.equals(RTL_CONSTASCII_STRINGPARAM("uri")(&("uri")[0]), ((sal_Int32)(sizeof ("uri") / sizeof (("uri"
)[0]))-1)
))
240 {
241 if (!attrUri_.isEmpty()) {
242 throw css::registry::InvalidRegistryException(
243 (reader_.getUrl() +
244 rtl::OUString(
245 RTL_CONSTASCII_USTRINGPARAM((&(": <component> has multiple \"uri\" attributes")
[0]), ((sal_Int32)((sizeof (": <component> has multiple \"uri\" attributes"
) / sizeof ((": <component> has multiple \"uri\" attributes"
)[0]))-1)), (((rtl_TextEncoding) 11))
246 ": <component> has multiple \"uri\" attributes")(&(": <component> has multiple \"uri\" attributes")
[0]), ((sal_Int32)((sizeof (": <component> has multiple \"uri\" attributes"
) / sizeof ((": <component> has multiple \"uri\" attributes"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
247 css::uno::Reference< css::uno::XInterface >());
248 }
249 attrUri_ = reader_.getAttributeValue(false).convertFromUtf8();
250 if (attrUri_.isEmpty()) {
251 throw css::registry::InvalidRegistryException(
252 (reader_.getUrl() +
253 rtl::OUString(
254 RTL_CONSTASCII_USTRINGPARAM((&(": <component> has empty \"uri\" attribute")[0])
, ((sal_Int32)((sizeof (": <component> has empty \"uri\" attribute"
) / sizeof ((": <component> has empty \"uri\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
255 ": <component> has empty \"uri\" attribute")(&(": <component> has empty \"uri\" attribute")[0])
, ((sal_Int32)((sizeof (": <component> has empty \"uri\" attribute"
) / sizeof ((": <component> has empty \"uri\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
256 css::uno::Reference< css::uno::XInterface >());
257 }
258 } else if (nsId == xmlreader::XmlReader::NAMESPACE_NONE &&
259 name.equals(RTL_CONSTASCII_STRINGPARAM("loader")(&("loader")[0]), ((sal_Int32)(sizeof ("loader") / sizeof
(("loader")[0]))-1)
))
260 {
261 if (!attrLoader_.isEmpty()) {
262 throw css::registry::InvalidRegistryException(
263 (reader_.getUrl() +
264 rtl::OUString(
265 RTL_CONSTASCII_USTRINGPARAM((&(": <component> has multiple \"loader\"" " attributes"
)[0]), ((sal_Int32)((sizeof (": <component> has multiple \"loader\""
" attributes") / sizeof ((": <component> has multiple \"loader\""
" attributes")[0]))-1)), (((rtl_TextEncoding) 11))
266 ": <component> has multiple \"loader\""(&(": <component> has multiple \"loader\"" " attributes"
)[0]), ((sal_Int32)((sizeof (": <component> has multiple \"loader\""
" attributes") / sizeof ((": <component> has multiple \"loader\""
" attributes")[0]))-1)), (((rtl_TextEncoding) 11))
267 " attributes")(&(": <component> has multiple \"loader\"" " attributes"
)[0]), ((sal_Int32)((sizeof (": <component> has multiple \"loader\""
" attributes") / sizeof ((": <component> has multiple \"loader\""
" attributes")[0]))-1)), (((rtl_TextEncoding) 11))
)),
268 css::uno::Reference< css::uno::XInterface >());
269 }
270 attrLoader_ = reader_.getAttributeValue(false).convertFromUtf8();
271 if (attrLoader_.isEmpty()) {
272 throw css::registry::InvalidRegistryException(
273 (reader_.getUrl() +
274 rtl::OUString(
275 RTL_CONSTASCII_USTRINGPARAM((&(": <component> has empty \"loader\" attribute")[
0]), ((sal_Int32)((sizeof (": <component> has empty \"loader\" attribute"
) / sizeof ((": <component> has empty \"loader\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
276 ": <component> has empty \"loader\" attribute")(&(": <component> has empty \"loader\" attribute")[
0]), ((sal_Int32)((sizeof (": <component> has empty \"loader\" attribute"
) / sizeof ((": <component> has empty \"loader\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
277 css::uno::Reference< css::uno::XInterface >());
278 }
279 } else if (nsId == xmlreader::XmlReader::NAMESPACE_NONE &&
280 name.equals(RTL_CONSTASCII_STRINGPARAM("prefix")(&("prefix")[0]), ((sal_Int32)(sizeof ("prefix") / sizeof
(("prefix")[0]))-1)
))
281 {
282 if (!attrPrefix_.isEmpty()) {
283 throw css::registry::InvalidRegistryException(
284 (reader_.getUrl() +
285 rtl::OUString(
286 RTL_CONSTASCII_USTRINGPARAM((&(": <component> has multiple \"prefix\"" " attributes"
)[0]), ((sal_Int32)((sizeof (": <component> has multiple \"prefix\""
" attributes") / sizeof ((": <component> has multiple \"prefix\""
" attributes")[0]))-1)), (((rtl_TextEncoding) 11))
287 ": <component> has multiple \"prefix\""(&(": <component> has multiple \"prefix\"" " attributes"
)[0]), ((sal_Int32)((sizeof (": <component> has multiple \"prefix\""
" attributes") / sizeof ((": <component> has multiple \"prefix\""
" attributes")[0]))-1)), (((rtl_TextEncoding) 11))
288 " attributes")(&(": <component> has multiple \"prefix\"" " attributes"
)[0]), ((sal_Int32)((sizeof (": <component> has multiple \"prefix\""
" attributes") / sizeof ((": <component> has multiple \"prefix\""
" attributes")[0]))-1)), (((rtl_TextEncoding) 11))
)),
289 css::uno::Reference< css::uno::XInterface >());
290 }
291 attrPrefix_ = reader_.getAttributeValue(false).convertFromUtf8();
292 if (attrPrefix_.isEmpty()) {
293 throw css::registry::InvalidRegistryException(
294 (reader_.getUrl() +
295 rtl::OUString(
296 RTL_CONSTASCII_USTRINGPARAM((&(": <component> has empty \"prefix\" attribute")[
0]), ((sal_Int32)((sizeof (": <component> has empty \"prefix\" attribute"
) / sizeof ((": <component> has empty \"prefix\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
297 ": <component> has empty \"prefix\" attribute")(&(": <component> has empty \"prefix\" attribute")[
0]), ((sal_Int32)((sizeof (": <component> has empty \"prefix\" attribute"
) / sizeof ((": <component> has empty \"prefix\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
298 css::uno::Reference< css::uno::XInterface >());
299 }
300 } else {
301 OSL_FAIL ("unexpected component attribute, expected 'uri' or 'loader' or 'prefix'")do { if (true && (((sal_Bool)1))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "301" ": "), "%s", "unexpected component attribute, expected 'uri' or 'loader' or 'prefix'"
); } } while (false)
;
302 }
303 }
304 if (attrUri_.isEmpty()) {
305 throw css::registry::InvalidRegistryException(
306 (reader_.getUrl() +
307 rtl::OUString(
308 RTL_CONSTASCII_USTRINGPARAM((&(": <component> is missing \"uri\" attribute")[0]
), ((sal_Int32)((sizeof (": <component> is missing \"uri\" attribute"
) / sizeof ((": <component> is missing \"uri\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
309 ": <component> is missing \"uri\" attribute")(&(": <component> is missing \"uri\" attribute")[0]
), ((sal_Int32)((sizeof (": <component> is missing \"uri\" attribute"
) / sizeof ((": <component> is missing \"uri\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
310 css::uno::Reference< css::uno::XInterface >());
311 }
312 if (attrLoader_.isEmpty()) {
313 throw css::registry::InvalidRegistryException(
314 (reader_.getUrl() +
315 rtl::OUString(
316 RTL_CONSTASCII_USTRINGPARAM((&(": <component> is missing \"loader\" attribute")
[0]), ((sal_Int32)((sizeof (": <component> is missing \"loader\" attribute"
) / sizeof ((": <component> is missing \"loader\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
317 ": <component> is missing \"loader\" attribute")(&(": <component> is missing \"loader\" attribute")
[0]), ((sal_Int32)((sizeof (": <component> is missing \"loader\" attribute"
) / sizeof ((": <component> is missing \"loader\" attribute"
)[0]))-1)), (((rtl_TextEncoding) 11))
)),
318 css::uno::Reference< css::uno::XInterface >());
319 }
320#ifndef DISABLE_DYNLOADING
321 try {
322 attrUri_ = rtl::Uri::convertRelToAbs(reader_.getUrl(), attrUri_);
323 } catch (const rtl::MalformedUriException & e) {
324 throw css::registry::InvalidRegistryException(
325 (reader_.getUrl() +
326 rtl::OUString(
327 RTL_CONSTASCII_USTRINGPARAM(": bad \"uri\" attribute: ")(&(": bad \"uri\" attribute: ")[0]), ((sal_Int32)((sizeof
(": bad \"uri\" attribute: ") / sizeof ((": bad \"uri\" attribute: "
)[0]))-1)), (((rtl_TextEncoding) 11))
) +
328 e.getMessage()),
329 css::uno::Reference< css::uno::XInterface >());
330 }
331#endif
332}
333
334void Parser::handleImplementation() {
335 attrImplementation_ = getNameAttribute();
336 if (data_->implementations.find(attrImplementation_) !=
337 data_->implementations.end())
338 {
339 throw css::registry::InvalidRegistryException(
340 (reader_.getUrl() +
341 rtl::OUString(
342 RTL_CONSTASCII_USTRINGPARAM((&(": duplicate <implementation name=\"")[0]), ((sal_Int32
)((sizeof (": duplicate <implementation name=\"") / sizeof
((": duplicate <implementation name=\"")[0]))-1)), (((rtl_TextEncoding
) 11))
343 ": duplicate <implementation name=\"")(&(": duplicate <implementation name=\"")[0]), ((sal_Int32
)((sizeof (": duplicate <implementation name=\"") / sizeof
((": duplicate <implementation name=\"")[0]))-1)), (((rtl_TextEncoding
) 11))
) +
344 attrImplementation_ +
345 rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\">")(&("\">")[0]), ((sal_Int32)((sizeof ("\">") / sizeof
(("\">")[0]))-1)), (((rtl_TextEncoding) 11))
)),
346 css::uno::Reference< css::uno::XInterface >());
347 }
348 data_->implementations[attrImplementation_].uri = attrUri_;
349 data_->implementations[attrImplementation_].loader = attrLoader_;
350 data_->implementations[attrImplementation_].prefix = attrPrefix_;
351}
352
353void Parser::handleService() {
354 rtl::OUString name = getNameAttribute();
355 data_->implementations[attrImplementation_].services.push_back(name);
356 data_->services[name].push_back(attrImplementation_);
357}
358
359void Parser::handleSingleton() {
360 rtl::OUString name = getNameAttribute();
361 data_->implementations[attrImplementation_].singletons.push_back(name);
362 data_->singletons[name].push_back(attrImplementation_);
363}
364
365rtl::OUString Parser::getNameAttribute() {
366 rtl::OUString attrName;
367 xmlreader::Span name;
368 int nsId;
369 while (reader_.nextAttribute(&nsId, &name)) {
370 if (nsId == xmlreader::XmlReader::NAMESPACE_NONE &&
371 name.equals(RTL_CONSTASCII_STRINGPARAM("name")(&("name")[0]), ((sal_Int32)(sizeof ("name") / sizeof (("name"
)[0]))-1)
))
372 {
373 if (!attrName.isEmpty()) {
374 throw css::registry::InvalidRegistryException(
375 (reader_.getUrl() +
376 rtl::OUString(
377 RTL_CONSTASCII_USTRINGPARAM((&(": element has multiple \"name\" attributes")[0]), ((sal_Int32
)((sizeof (": element has multiple \"name\" attributes") / sizeof
((": element has multiple \"name\" attributes")[0]))-1)), ((
(rtl_TextEncoding) 11))
378 ": element has multiple \"name\" attributes")(&(": element has multiple \"name\" attributes")[0]), ((sal_Int32
)((sizeof (": element has multiple \"name\" attributes") / sizeof
((": element has multiple \"name\" attributes")[0]))-1)), ((
(rtl_TextEncoding) 11))
)),
379 css::uno::Reference< css::uno::XInterface >());
380 }
381 attrName = reader_.getAttributeValue(false).convertFromUtf8();
382 if (attrName.isEmpty()) {
383 throw css::registry::InvalidRegistryException(
384 (reader_.getUrl() +
385 rtl::OUString(
386 RTL_CONSTASCII_USTRINGPARAM((&(": element has empty \"name\" attribute")[0]), ((sal_Int32
)((sizeof (": element has empty \"name\" attribute") / sizeof
((": element has empty \"name\" attribute")[0]))-1)), (((rtl_TextEncoding
) 11))
387 ": element has empty \"name\" attribute")(&(": element has empty \"name\" attribute")[0]), ((sal_Int32
)((sizeof (": element has empty \"name\" attribute") / sizeof
((": element has empty \"name\" attribute")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
388 css::uno::Reference< css::uno::XInterface >());
389 }
390 } else {
391 throw css::registry::InvalidRegistryException(
392 (reader_.getUrl() +
393 rtl::OUString(
394 RTL_CONSTASCII_USTRINGPARAM((&(": expected element attribute \"name\"")[0]), ((sal_Int32
)((sizeof (": expected element attribute \"name\"") / sizeof (
(": expected element attribute \"name\"")[0]))-1)), (((rtl_TextEncoding
) 11))
395 ": expected element attribute \"name\"")(&(": expected element attribute \"name\"")[0]), ((sal_Int32
)((sizeof (": expected element attribute \"name\"") / sizeof (
(": expected element attribute \"name\"")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
396 css::uno::Reference< css::uno::XInterface >());
397 }
398 }
399 if (attrName.isEmpty()) {
400 throw css::registry::InvalidRegistryException(
401 (reader_.getUrl() +
402 rtl::OUString(
403 RTL_CONSTASCII_USTRINGPARAM((&(": element is missing \"name\" attribute")[0]), ((sal_Int32
)((sizeof (": element is missing \"name\" attribute") / sizeof
((": element is missing \"name\" attribute")[0]))-1)), (((rtl_TextEncoding
) 11))
404 ": element is missing \"name\" attribute")(&(": element is missing \"name\" attribute")[0]), ((sal_Int32
)((sizeof (": element is missing \"name\" attribute") / sizeof
((": element is missing \"name\" attribute")[0]))-1)), (((rtl_TextEncoding
) 11))
)),
405 css::uno::Reference< css::uno::XInterface >());
406 }
407 return attrName;
408}
409
410rtl::OUString pathToString(std::vector< rtl::OUString > const & path) {
411 rtl::OUStringBuffer buf;
412 for (std::vector< rtl::OUString >::const_iterator i(path.begin());
413 i != path.end(); ++i)
414 {
415 buf.append(sal_Unicode('/'));
416 buf.append(*i);
417 }
418 if (buf.getLength() == 0) {
419 buf.append(sal_Unicode('/'));
420 }
421 return buf.makeStringAndClear();
422}
423
424class Key: public cppu::WeakImplHelper1< css::registry::XRegistryKey > {
425public:
426 Key(
427 rtl::Reference< Data > const & data,
428 std::vector< rtl::OUString > const & path):
429 data_(data), path_(path) { OSL_ASSERT(data.is())do { if (true && (!(data.is()))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "429" ": "), "OSL_ASSERT: %s", "data.is()"); } } while (
false)
;
430 }
431
432private:
433 /*
434 /
435 IMPLEMENTATIONS
436 <implementation>
437 UNO
438 LOCATION utf-8
439 ACTIVATOR utf-8
440 PREFIX utf-8
441 SERVICES
442 <service>
443 ...
444 SINGLETONS
445 <singleton> utf-16
446 ...
447 ...
448 SERVICES
449 <service> utf-8-list
450 ...
451 SINGLETONS
452 <singleton> utf-16
453 REGISTERED_BY utf-8-list
454 ...
455 */
456 enum State {
457 STATE_ROOT, STATE_IMPLEMENTATIONS, STATE_IMPLEMENTATION, STATE_UNO,
458 STATE_LOCATION, STATE_ACTIVATOR, STATE_PREFIX, STATE_IMPLEMENTATION_SERVICES,
459 STATE_IMPLEMENTATION_SERVICE, STATE_IMPLEMENTATION_SINGLETONS,
460 STATE_IMPLEMENTATION_SINGLETON, STATE_SERVICES, STATE_SERVICE,
461 STATE_SINGLETONS, STATE_SINGLETON, STATE_REGISTEREDBY };
462
463 virtual rtl::OUString SAL_CALL getKeyName()
464 throw (css::uno::RuntimeException);
465
466 virtual sal_Bool SAL_CALL isReadOnly() throw (
467 css::registry::InvalidRegistryException, css::uno::RuntimeException);
468
469 virtual sal_Bool SAL_CALL isValid() throw(css::uno::RuntimeException);
470
471 virtual css::registry::RegistryKeyType SAL_CALL getKeyType(
472 rtl::OUString const & rKeyName)
473 throw (
474 css::registry::InvalidRegistryException,
475 css::uno::RuntimeException);
476
477 virtual css::registry::RegistryValueType SAL_CALL getValueType() throw(
478 css::registry::InvalidRegistryException, css::uno::RuntimeException);
479
480 virtual sal_Int32 SAL_CALL getLongValue() throw (
481 css::registry::InvalidRegistryException,
482 css::registry::InvalidValueException, css::uno::RuntimeException);
483
484 virtual void SAL_CALL setLongValue(sal_Int32 value) throw (
485 css::registry::InvalidRegistryException, css::uno::RuntimeException);
486
487 virtual css::uno::Sequence< sal_Int32 > SAL_CALL getLongListValue() throw(
488 css::registry::InvalidRegistryException,
489 css::registry::InvalidValueException, css::uno::RuntimeException);
490
491 virtual void SAL_CALL setLongListValue(
492 com::sun::star::uno::Sequence< sal_Int32 > const & seqValue)
493 throw (
494 css::registry::InvalidRegistryException,
495 css::uno::RuntimeException);
496
497 virtual rtl::OUString SAL_CALL getAsciiValue() throw (
498 css::registry::InvalidRegistryException,
499 css::registry::InvalidValueException, css::uno::RuntimeException);
500
501 virtual void SAL_CALL setAsciiValue(rtl::OUString const & value) throw (
502 css::registry::InvalidRegistryException, css::uno::RuntimeException);
503
504 virtual css::uno::Sequence< rtl::OUString > SAL_CALL getAsciiListValue()
505 throw (
506 css::registry::InvalidRegistryException,
507 css::registry::InvalidValueException, css::uno::RuntimeException);
508
509 virtual void SAL_CALL setAsciiListValue(
510 css::uno::Sequence< rtl::OUString > const & seqValue)
511 throw (
512 css::registry::InvalidRegistryException,
513 css::uno::RuntimeException);
514
515 virtual rtl::OUString SAL_CALL getStringValue() throw(
516 css::registry::InvalidRegistryException,
517 css::registry::InvalidValueException, css::uno::RuntimeException);
518
519 virtual void SAL_CALL setStringValue(rtl::OUString const & value) throw (
520 css::registry::InvalidRegistryException, css::uno::RuntimeException);
521
522 virtual css::uno::Sequence< rtl::OUString > SAL_CALL getStringListValue()
523 throw (
524 css::registry::InvalidRegistryException,
525 css::registry::InvalidValueException, css::uno::RuntimeException);
526
527 virtual void SAL_CALL setStringListValue(
528 css::uno::Sequence< rtl::OUString > const & seqValue)
529 throw (
530 css::registry::InvalidRegistryException,
531 css::uno::RuntimeException);
532
533 virtual css::uno::Sequence< sal_Int8 > SAL_CALL getBinaryValue() throw (
534 css::registry::InvalidRegistryException,
535 css::registry::InvalidValueException, css::uno::RuntimeException);
536
537 virtual void SAL_CALL setBinaryValue(
538 css::uno::Sequence< sal_Int8 > const & value)
539 throw (
540 css::registry::InvalidRegistryException,
541 css::uno::RuntimeException);
542
543 virtual css::uno::Reference< css::registry::XRegistryKey > SAL_CALL openKey(
544 rtl::OUString const & aKeyName)
545 throw (
546 css::registry::InvalidRegistryException,
547 css::uno::RuntimeException);
548
549 virtual css::uno::Reference< css::registry::XRegistryKey > SAL_CALL
550 createKey(rtl::OUString const & aKeyName) throw (
551 css::registry::InvalidRegistryException, css::uno::RuntimeException);
552
553 virtual void SAL_CALL closeKey() throw (
554 css::registry::InvalidRegistryException, css::uno::RuntimeException);
555
556 virtual void SAL_CALL deleteKey(rtl::OUString const & rKeyName) throw (
557 css::registry::InvalidRegistryException, css::uno::RuntimeException);
558
559 virtual
560 css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > >
561 SAL_CALL openKeys() throw (
562 css::registry::InvalidRegistryException, css::uno::RuntimeException);
563
564 virtual css::uno::Sequence< rtl::OUString > SAL_CALL getKeyNames() throw (
565 css::registry::InvalidRegistryException, css::uno::RuntimeException);
566
567 virtual sal_Bool SAL_CALL createLink(
568 rtl::OUString const & aLinkName, rtl::OUString const & aLinkTarget)
569 throw (
570 css::registry::InvalidRegistryException,
571 css::uno::RuntimeException);
572
573 virtual void SAL_CALL deleteLink(rtl::OUString const & rLinkName) throw (
574 css::registry::InvalidRegistryException, css::uno::RuntimeException);
575
576 virtual rtl::OUString SAL_CALL getLinkTarget(
577 rtl::OUString const & rLinkName)
578 throw (
579 css::registry::InvalidRegistryException,
580 css::uno::RuntimeException);
581
582 virtual rtl::OUString SAL_CALL getResolvedName(
583 rtl::OUString const & aKeyName)
584 throw (
585 css::registry::InvalidRegistryException,
586 css::uno::RuntimeException);
587
588 bool find(
589 rtl::OUString const & relative, std::vector< rtl::OUString > * path,
590 State * state, css::registry::RegistryValueType * type) const;
591
592 css::uno::Sequence< rtl::OUString > getChildren();
593
594 rtl::Reference< Data > data_;
595 std::vector< rtl::OUString > path_;
596};
597
598rtl::OUString Key::getKeyName() throw (css::uno::RuntimeException) {
599 return pathToString(path_);
600}
601
602sal_Bool Key::isReadOnly()
603 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
604{
605 return true;
606}
607
608sal_Bool Key::isValid() throw(css::uno::RuntimeException) {
609 return true;
610}
611
612css::registry::RegistryKeyType Key::getKeyType(rtl::OUString const & rKeyName)
613 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
614{
615 if (!find(rtl::OUString(), 0, 0, 0)) {
616 throw css::registry::InvalidRegistryException(
617 (rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("unknown key ")(&("unknown key ")[0]), ((sal_Int32)((sizeof ("unknown key "
) / sizeof (("unknown key ")[0]))-1)), (((rtl_TextEncoding) 11
))
) +
618 rKeyName),
619 static_cast< cppu::OWeakObject * >(this));
620 }
621 return css::registry::RegistryKeyType_KEY;
622}
623
624css::registry::RegistryValueType Key::getValueType()
625 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
626{
627 css::registry::RegistryValueType type =
628 css::registry::RegistryValueType_NOT_DEFINED;
629 OSL_VERIFY(find(rtl::OUString(), 0, 0, &type))do { if (!(find(rtl::OUString(), 0, 0, &type))) do { if (
true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN
), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "629" ": "), "OSL_ASSERT: %s", "0"); } } while (false); }
while (0)
;
630 return type;
631}
632
633sal_Int32 Key::getLongValue() throw (
634 css::registry::InvalidRegistryException,
635 css::registry::InvalidValueException, css::uno::RuntimeException)
636{
637 throw css::registry::InvalidValueException(
638 rtl::OUString(
639 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
640 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
641 " getLongValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLongValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
642 static_cast< OWeakObject * >(this));
643}
644
645void Key::setLongValue(sal_Int32)
646 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
647{
648 throw css::registry::InvalidRegistryException(
649 rtl::OUString(
650 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
651 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
652 " setLongValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setLongValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
653 static_cast< OWeakObject * >(this));
654}
655
656css::uno::Sequence< sal_Int32 > Key::getLongListValue() throw (
657 css::registry::InvalidRegistryException,
658 css::registry::InvalidValueException, css::uno::RuntimeException)
659{
660 throw css::registry::InvalidValueException(
661 rtl::OUString(
662 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
663 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
664 " getLongListValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLongListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
665 static_cast< OWeakObject * >(this));
666}
667
668void Key::setLongListValue(css::uno::Sequence< sal_Int32 > const &)
669 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
670{
671 throw css::registry::InvalidRegistryException(
672 rtl::OUString(
673 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
674 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
675 " setLongListValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setLongListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
676 static_cast< OWeakObject * >(this));
677}
678
679rtl::OUString Key::getAsciiValue() throw (
680 css::registry::InvalidRegistryException,
681 css::registry::InvalidValueException, css::uno::RuntimeException)
682{
683 State state = STATE_ROOT;
684 OSL_VERIFY(find(rtl::OUString(), 0, &state, 0))do { if (!(find(rtl::OUString(), 0, &state, 0))) do { if (
true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN
), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "684" ": "), "OSL_ASSERT: %s", "0"); } } while (false); }
while (0)
;
685 switch (state) {
1
Control jumps to 'case STATE_LOCATION:' at line 686
686 case STATE_LOCATION:
687 return data_->implementations[path_[1]].uri;
2
Called C++ object pointer is null
688 case STATE_ACTIVATOR:
689 return data_->implementations[path_[1]].loader;
690 case STATE_PREFIX:
691 return data_->implementations[path_[1]].prefix;
692 default:
693 throw css::registry::InvalidValueException(
694 rtl::OUString(
695 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type")[0]))-1)), (((rtl_TextEncoding)
11))
696 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type")[0]))-1)), (((rtl_TextEncoding)
11))
697 " getAsciiValue: wrong type")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiValue: wrong type")[0]))-1)), (((rtl_TextEncoding)
11))
),
698 static_cast< OWeakObject * >(this));
699 }
700}
701
702void Key::setAsciiValue(rtl::OUString const &)
703 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
704{
705 throw css::registry::InvalidRegistryException(
706 rtl::OUString(
707 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
708 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
709 " setAsciiValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
710 static_cast< OWeakObject * >(this));
711}
712
713css::uno::Sequence< rtl::OUString > Key::getAsciiListValue() throw (
714 css::registry::InvalidRegistryException,
715 css::registry::InvalidValueException, css::uno::RuntimeException)
716{
717 State state = STATE_ROOT;
718 OSL_VERIFY(find(rtl::OUString(), 0, &state, 0))do { if (!(find(rtl::OUString(), 0, &state, 0))) do { if (
true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN
), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "718" ": "), "OSL_ASSERT: %s", "0"); } } while (false); }
while (0)
;
719 std::vector< rtl::OUString > const * list;
720 switch (state) {
721 case STATE_SERVICE:
722 list = &data_->services[path_[1]];
723 break;
724 case STATE_REGISTEREDBY:
725 list = &data_->singletons[path_[1]];
726 break;
727 default:
728 throw css::registry::InvalidValueException(
729 rtl::OUString(
730 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: wrong type")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " getAsciiListValue: wrong type"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: wrong type")[0]))-1)), (((rtl_TextEncoding
) 11))
731 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: wrong type")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " getAsciiListValue: wrong type"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: wrong type")[0]))-1)), (((rtl_TextEncoding
) 11))
732 " getAsciiListValue: wrong type")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: wrong type")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " getAsciiListValue: wrong type"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: wrong type")[0]))-1)), (((rtl_TextEncoding
) 11))
),
733 static_cast< OWeakObject * >(this));
734 }
735 if (list->size() > SAL_MAX_INT32((sal_Int32) 0x7FFFFFFF)) {
736 throw css::registry::InvalidValueException(
737 rtl::OUString(
738 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: too large")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " getAsciiListValue: too large"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
739 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: too large")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " getAsciiListValue: too large"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
740 " getAsciiListValue: too large")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: too large")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " getAsciiListValue: too large"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getAsciiListValue: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
),
741 static_cast< OWeakObject * >(this));
742 }
743 css::uno::Sequence< rtl::OUString > seq(
744 static_cast< sal_Int32 >(list->size()));
745 sal_Int32 i = 0;
746 for (std::vector< rtl::OUString >::const_iterator j(list->begin());
747 j != list->end(); ++j)
748 {
749 seq[i++] = *j;
750 }
751 return seq;
752}
753
754void Key::setAsciiListValue(css::uno::Sequence< rtl::OUString > const &)
755 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
756{
757 throw css::registry::InvalidRegistryException(
758 rtl::OUString(
759 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
760 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
761 " setAsciiListValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setAsciiListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
762 static_cast< OWeakObject * >(this));
763}
764
765rtl::OUString Key::getStringValue() throw (
766 css::registry::InvalidRegistryException,
767 css::registry::InvalidValueException, css::uno::RuntimeException)
768{
769 State state = STATE_ROOT;
770 OSL_VERIFY(find(rtl::OUString(), 0, &state, 0))do { if (!(find(rtl::OUString(), 0, &state, 0))) do { if (
true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN
), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "770" ": "), "OSL_ASSERT: %s", "0"); } } while (false); }
while (0)
;
771 switch (state) {
772 case STATE_IMPLEMENTATION_SINGLETON:
773 case STATE_SINGLETON:
774 throw css::registry::InvalidRegistryException(
775 rtl::OUString(
776 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]))-1)), (((rtl_TextEncoding) 11))
777 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]))-1)), (((rtl_TextEncoding) 11))
778 " getStringValue: does not associate singletons with"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]))-1)), (((rtl_TextEncoding) 11))
779 " services")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: does not associate singletons with" " services"
)[0]))-1)), (((rtl_TextEncoding) 11))
),
780 static_cast< OWeakObject * >(this));
781 default:
782 break;
783 }
784 // default case extracted from switch to avoid erroneous compiler warnings
785 // on Solaris:
786 throw css::registry::InvalidValueException(
787 rtl::OUString(
788 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type")[0]))-1)), (((rtl_TextEncoding
) 11))
789 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type")[0]))-1)), (((rtl_TextEncoding
) 11))
790 " getStringValue: wrong type")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringValue: wrong type")[0]))-1)), (((rtl_TextEncoding
) 11))
),
791 static_cast< OWeakObject * >(this));
792}
793
794void Key::setStringValue(rtl::OUString const &)
795 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
796{
797 throw css::registry::InvalidRegistryException(
798 rtl::OUString(
799 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setStringValue not supported")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " setStringValue not supported"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setStringValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
800 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setStringValue not supported")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " setStringValue not supported"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setStringValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
801 " setStringValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setStringValue not supported")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " setStringValue not supported"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setStringValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
802 static_cast< OWeakObject * >(this));
803}
804
805css::uno::Sequence< rtl::OUString > Key::getStringListValue() throw (
806 css::registry::InvalidRegistryException,
807 css::registry::InvalidValueException, css::uno::RuntimeException)
808{
809 throw css::registry::InvalidValueException(
810 rtl::OUString(
811 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
812 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
813 " getStringListValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getStringListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
814 static_cast< OWeakObject * >(this));
815}
816
817void Key::setStringListValue(css::uno::Sequence< rtl::OUString > const &)
818 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
819{
820 throw css::registry::InvalidRegistryException(
821 rtl::OUString(
822 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
823 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
824 " setStringListValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported")[0]), ((sal_Int32)((sizeof
("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setStringListValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
825 static_cast< OWeakObject * >(this));
826}
827
828css::uno::Sequence< sal_Int8 > Key::getBinaryValue()
829 throw (
830 css::registry::InvalidRegistryException,
831 css::registry::InvalidValueException, css::uno::RuntimeException)
832{
833 throw css::registry::InvalidValueException(
834 rtl::OUString(
835 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
836 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
837 " getBinarValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getBinarValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
838 static_cast< OWeakObject * >(this));
839}
840
841void Key::setBinaryValue(css::uno::Sequence< sal_Int8 > const &)
842 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
843{
844 throw css::registry::InvalidRegistryException(
845 rtl::OUString(
846 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" setBinaryValue not supported")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " setBinaryValue not supported"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setBinaryValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
847 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" setBinaryValue not supported")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " setBinaryValue not supported"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setBinaryValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
848 " setBinaryValue not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" setBinaryValue not supported")[0]), ((sal_Int32)((sizeof (
"com.sun.star.registry.SimpleRegistry textual services key" " setBinaryValue not supported"
) / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" setBinaryValue not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
849 static_cast< OWeakObject * >(this));
850}
851
852css::uno::Reference< css::registry::XRegistryKey > Key::openKey(
853 rtl::OUString const & aKeyName)
854 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
855{
856 std::vector< rtl::OUString > path;
857 if (!find(aKeyName, &path, 0, 0)) {
858 return css::uno::Reference< css::registry::XRegistryKey >();
859 }
860 return new Key(data_, path);
861}
862
863css::uno::Reference< css::registry::XRegistryKey > Key::createKey(
864 rtl::OUString const &)
865 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
866{
867 throw css::registry::InvalidRegistryException(
868 rtl::OUString(
869 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
870 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
871 " createKey not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" createKey not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
),
872 static_cast< OWeakObject * >(this));
873}
874
875void Key::closeKey()
876 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
877{}
878
879void Key::deleteKey(rtl::OUString const &)
880 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
881{
882 throw css::registry::InvalidRegistryException(
883 rtl::OUString(
884 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
885 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
886 " deleteKey not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" deleteKey not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
),
887 static_cast< OWeakObject * >(this));
888}
889
890css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > >
891Key::openKeys()
892 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
893{
894 css::uno::Sequence< rtl::OUString > names(getChildren());
895 css::uno::Sequence< css::uno::Reference< css::registry::XRegistryKey > >
896 keys(names.getLength());
897 for (sal_Int32 i = 0; i < keys.getLength(); ++i) {
898 keys[i] = openKey(names[i]);
899 OSL_ASSERT(keys[i].is())do { if (true && (!(keys[i].is()))) { sal_detail_logFormat
((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "899" ": "), "OSL_ASSERT: %s", "keys[i].is()"); } } while
(false)
;
900 }
901 return keys;
902}
903
904css::uno::Sequence< rtl::OUString > Key::getKeyNames()
905 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
906{
907 css::uno::Sequence< rtl::OUString > names(getChildren());
908 rtl::OUString prefix(pathToString(path_));
909 prefix += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")(&("/")[0]), ((sal_Int32)((sizeof ("/") / sizeof (("/")[0
]))-1)), (((rtl_TextEncoding) 11))
);
910 for (sal_Int32 i = 0; i < names.getLength(); ++i) {
911 names[i] = prefix + names[i];
912 }
913 return names;
914}
915
916sal_Bool Key::createLink(rtl::OUString const &, rtl::OUString const &)
917 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
918{
919 throw css::registry::InvalidRegistryException(
920 rtl::OUString(
921 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
922 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
923 " createLink not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" createLink not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
),
924 static_cast< OWeakObject * >(this));
925}
926
927void Key::deleteLink(rtl::OUString const &)
928 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
929{
930 throw css::registry::InvalidRegistryException(
931 rtl::OUString(
932 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
933 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
934 " deleteLink not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" deleteLink not supported")[0]))-1)), (((rtl_TextEncoding) 11
))
),
935 static_cast< OWeakObject * >(this));
936}
937
938rtl::OUString Key::getLinkTarget(rtl::OUString const &)
939 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
940{
941 throw css::registry::InvalidRegistryException(
942 rtl::OUString(
943 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
944 "com.sun.star.registry.SimpleRegistry textual services key"(&("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
945 " getLinkTarget not supported")(&("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported")[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported") / sizeof (("com.sun.star.registry.SimpleRegistry textual services key"
" getLinkTarget not supported")[0]))-1)), (((rtl_TextEncoding
) 11))
),
946 static_cast< OWeakObject * >(this));
947}
948
949rtl::OUString Key::getResolvedName(rtl::OUString const & aKeyName)
950 throw (css::registry::InvalidRegistryException, css::uno::RuntimeException)
951{
952 std::vector< rtl::OUString > path;
953 find(aKeyName, &path, 0, 0);
954 return pathToString(path);
955}
956
957bool Key::find(
958 rtl::OUString const & relative, std::vector< rtl::OUString > * path,
959 State * state, css::registry::RegistryValueType * type) const
960{
961 std::vector< rtl::OUString > p(path_);
962 sal_Int32 i = 0;
963 do {
964 rtl::OUString seg(relative.getToken(0, '/', i));
965 if (!seg.isEmpty()) {
966 p.push_back(seg);
967 }
968 } while (i >= 0);
969 if (path != 0) {
970 *path = p;
971 }
972 std::size_t const MAX_TRANSITIONS = 5;
973 struct StateInfo {
974 css::registry::RegistryValueType type;
975 std::size_t count;
976 struct { char const * segment; State state; }
977 transitions[MAX_TRANSITIONS];
978 };
979 static StateInfo const info[] = {
980 // STATE_ROOT:
981 { css::registry::RegistryValueType_NOT_DEFINED, 3,
982 { { "IMPLEMENTATIONS", STATE_IMPLEMENTATIONS },
983 { "SERVICES", STATE_SERVICES },
984 { "SINGLETONS", STATE_SINGLETONS } } },
985 // STATE_IMPLEMENTATIONS:
986 { css::registry::RegistryValueType_NOT_DEFINED, 1,
987 { { 0, STATE_IMPLEMENTATION } } },
988 // STATE_IMPLEMENTATION:
989 { css::registry::RegistryValueType_NOT_DEFINED, 1,
990 { { "UNO", STATE_UNO } } },
991 // STATE_UNO:
992 { css::registry::RegistryValueType_NOT_DEFINED, 5,
993 { { "LOCATION", STATE_LOCATION },
994 { "ACTIVATOR", STATE_ACTIVATOR },
995 { "PREFIX", STATE_PREFIX },
996 { "SERVICES", STATE_IMPLEMENTATION_SERVICES },
997 { "SINGLETONS", STATE_IMPLEMENTATION_SINGLETONS } } },
998 // STATE_LOCATION:
999 { css::registry::RegistryValueType_ASCII, 0, {} },
1000 // STATE_ACTIVATOR:
1001 { css::registry::RegistryValueType_ASCII, 0, {} },
1002 // STATE_PREFIX:
1003 { css::registry::RegistryValueType_ASCII, 0, {} },
1004 // STATE_IMPLEMENTATION_SERVICES:
1005 { css::registry::RegistryValueType_NOT_DEFINED, 1,
1006 { { 0, STATE_IMPLEMENTATION_SERVICE } } },
1007 // STATE_IMPLEMENTATION_SERVICE:
1008 { css::registry::RegistryValueType_NOT_DEFINED, 0, {} },
1009 // STATE_IMPLEMENTATION_SINGLETONS:
1010 { css::registry::RegistryValueType_NOT_DEFINED, 1,
1011 { { 0, STATE_IMPLEMENTATION_SINGLETON } } },
1012 // STATE_IMPLEMENTATION_SINGLETON:
1013 { css::registry::RegistryValueType_STRING, 0, {} },
1014 // STATE_SERVICES:
1015 { css::registry::RegistryValueType_NOT_DEFINED, 1,
1016 { { 0, STATE_SERVICE } } },
1017 // STATE_SERVICE:
1018 { css::registry::RegistryValueType_ASCIILIST, 0, {} },
1019 // STATE_SINGLETONS:
1020 { css::registry::RegistryValueType_NOT_DEFINED, 1,
1021 { { 0, STATE_SINGLETON } } },
1022 // STATE_SINGLETON:
1023 { css::registry::RegistryValueType_STRING, 1,
1024 { { "REGISTERED_BY", STATE_REGISTEREDBY } } },
1025 // STATE_REGISTEREDBY:
1026 { css::registry::RegistryValueType_ASCIILIST, 0, {} } };
1027 State s = STATE_ROOT;
1028 for (std::vector< rtl::OUString >::iterator j(p.begin()); j != p.end(); ++j)
1029 {
1030 bool found = false;
1031 for (std::size_t k = 0; k < info[s].count; ++k) {
1032 if (info[s].transitions[k].segment == 0) {
1033 switch (info[s].transitions[k].state) {
1034 case STATE_IMPLEMENTATION:
1035 found = data_->implementations.find(*j) !=
1036 data_->implementations.end();
1037 break;
1038 case STATE_IMPLEMENTATION_SERVICE:
1039 case STATE_IMPLEMENTATION_SINGLETON:
1040 found = true; //TODO
1041 break;
1042 case STATE_SERVICE:
1043 found = data_->services.find(*j) != data_->services.end();
1044 break;
1045 case STATE_SINGLETON:
1046 found = data_->singletons.find(*j) !=
1047 data_->singletons.end();
1048 break;
1049 default:
1050 std::abort(); // this cannot happen
1051 }
1052 } else {
1053 found = j->equalsAscii(info[s].transitions[k].segment);
1054 }
1055 if (found) {
1056 s = info[s].transitions[k].state;
1057 break;
1058 }
1059 }
1060 if (!found) {
1061 return false;
1062 }
1063 }
1064 if (state != 0) {
1065 *state = s;
1066 }
1067 if (type != 0) {
1068 *type = info[s].type;
1069 }
1070 return true;
1071}
1072
1073css::uno::Sequence< rtl::OUString > Key::getChildren() {
1074 State state = STATE_ROOT;
1075 OSL_VERIFY(find(rtl::OUString(), 0, &state, 0))do { if (!(find(rtl::OUString(), 0, &state, 0))) do { if (
true && (!(0))) { sal_detail_logFormat((SAL_DETAIL_LOG_LEVEL_WARN
), ("legacy.osl"), ("/usr/local/src/libreoffice/stoc/source/simpleregistry/textualservices.cxx"
":" "1075" ": "), "OSL_ASSERT: %s", "0"); } } while (false);
} while (0)
;
1076 switch (state) {
1077 default:
1078 std::abort(); // this cannot happen
1079 // pseudo-fall-through to avoid warnings on MSC
1080 case STATE_ROOT:
1081 {
1082 css::uno::Sequence< rtl::OUString > seq(3);
1083 seq[0] = rtl::OUString(
1084 RTL_CONSTASCII_USTRINGPARAM("IMPLEMENTATIONS")(&("IMPLEMENTATIONS")[0]), ((sal_Int32)((sizeof ("IMPLEMENTATIONS"
) / sizeof (("IMPLEMENTATIONS")[0]))-1)), (((rtl_TextEncoding
) 11))
);
1085 seq[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SERVICES")(&("SERVICES")[0]), ((sal_Int32)((sizeof ("SERVICES") / sizeof
(("SERVICES")[0]))-1)), (((rtl_TextEncoding) 11))
);
1086 seq[2] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SINGLETONS")(&("SINGLETONS")[0]), ((sal_Int32)((sizeof ("SINGLETONS")
/ sizeof (("SINGLETONS")[0]))-1)), (((rtl_TextEncoding) 11))
);
1087 return seq;
1088 }
1089 case STATE_IMPLEMENTATIONS:
1090 {
1091 if (data_->implementations.size() > SAL_MAX_INT32((sal_Int32) 0x7FFFFFFF)) {
1092 throw css::registry::InvalidValueException(
1093 rtl::OUString(
1094 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1095 "com.sun.star.registry.SimpleRegistry textual"(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1096 " services key openKeys: too large")(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
),
1097 static_cast< OWeakObject * >(this));
1098 }
1099 css::uno::Sequence< rtl::OUString > seq(
1100 static_cast< sal_Int32 >(data_->implementations.size()));
1101 sal_Int32 i = 0;
1102 for (Implementations::iterator j(data_->implementations.begin());
1103 j != data_->implementations.end(); ++j)
1104 {
1105 seq[i++] = j->first;
1106 }
1107 return seq;
1108 }
1109 case STATE_UNO:
1110 {
1111 css::uno::Sequence< rtl::OUString > seq(5);
1112 seq[0] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LOCATION")(&("LOCATION")[0]), ((sal_Int32)((sizeof ("LOCATION") / sizeof
(("LOCATION")[0]))-1)), (((rtl_TextEncoding) 11))
);
1113 seq[1] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ACTIVATOR")(&("ACTIVATOR")[0]), ((sal_Int32)((sizeof ("ACTIVATOR") /
sizeof (("ACTIVATOR")[0]))-1)), (((rtl_TextEncoding) 11))
);
1114 seq[2] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PREFIX")(&("PREFIX")[0]), ((sal_Int32)((sizeof ("PREFIX") / sizeof
(("PREFIX")[0]))-1)), (((rtl_TextEncoding) 11))
);
1115 seq[3] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SERVICES")(&("SERVICES")[0]), ((sal_Int32)((sizeof ("SERVICES") / sizeof
(("SERVICES")[0]))-1)), (((rtl_TextEncoding) 11))
);
1116 seq[4] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SINGLETONS")(&("SINGLETONS")[0]), ((sal_Int32)((sizeof ("SINGLETONS")
/ sizeof (("SINGLETONS")[0]))-1)), (((rtl_TextEncoding) 11))
);
1117 return seq;
1118 }
1119 case STATE_LOCATION:
1120 case STATE_ACTIVATOR:
1121 case STATE_PREFIX:
1122 case STATE_IMPLEMENTATION_SERVICE:
1123 case STATE_IMPLEMENTATION_SINGLETON:
1124 case STATE_SERVICE:
1125 case STATE_REGISTEREDBY:
1126 return css::uno::Sequence< rtl::OUString >();
1127 case STATE_IMPLEMENTATION_SERVICES:
1128 {
1129 if (data_->implementations[path_[1]].services.size() >
1130 SAL_MAX_INT32((sal_Int32) 0x7FFFFFFF))
1131 {
1132 throw css::registry::InvalidValueException(
1133 rtl::OUString(
1134 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1135 "com.sun.star.registry.SimpleRegistry textual"(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1136 " services key openKeys: too large")(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
),
1137 static_cast< OWeakObject * >(this));
1138 }
1139 css::uno::Sequence< rtl::OUString > seq(
1140 static_cast< sal_Int32 >(
1141 data_->implementations[path_[1]].services.size()));
1142 sal_Int32 i = 0;
1143 for (std::vector< rtl::OUString >::iterator j(
1144 data_->implementations[path_[1]].services.begin());
1145 j != data_->implementations[path_[1]].services.end(); ++j)
1146 {
1147 seq[i++] = *j;
1148 }
1149 return seq;
1150 }
1151 case STATE_IMPLEMENTATION_SINGLETONS:
1152 {
1153 if (data_->implementations[path_[1]].singletons.size() >
1154 SAL_MAX_INT32((sal_Int32) 0x7FFFFFFF))
1155 {
1156 throw css::registry::InvalidValueException(
1157 rtl::OUString(
1158 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1159 "com.sun.star.registry.SimpleRegistry textual"(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1160 " services key openKeys: too large")(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
),
1161 static_cast< OWeakObject * >(this));
1162 }
1163 css::uno::Sequence< rtl::OUString > seq(
1164 static_cast< sal_Int32 >(
1165 data_->implementations[path_[1]].singletons.size()));
1166 sal_Int32 i = 0;
1167 for (std::vector< rtl::OUString >::iterator j(
1168 data_->implementations[path_[1]].singletons.begin());
1169 j != data_->implementations[path_[1]].singletons.end(); ++j)
1170 {
1171 seq[i++] = *j;
1172 }
1173 return seq;
1174 }
1175 case STATE_SERVICES:
1176 {
1177 if (data_->services.size() > SAL_MAX_INT32((sal_Int32) 0x7FFFFFFF)) {
1178 throw css::registry::InvalidValueException(
1179 rtl::OUString(
1180 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1181 "com.sun.star.registry.SimpleRegistry textual"(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1182 " services key openKeys: too large")(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
),
1183 static_cast< OWeakObject * >(this));
1184 }
1185 css::uno::Sequence< rtl::OUString > seq(
1186 static_cast< sal_Int32 >(data_->services.size()));
1187 sal_Int32 i = 0;
1188 for (ImplementationMap::iterator j(data_->services.begin());
1189 j != data_->services.end(); ++j)
1190 {
1191 seq[i++] = j->first;
1192 }
1193 return seq;
1194 }
1195 case STATE_SINGLETONS:
1196 {
1197 if (data_->singletons.size() > SAL_MAX_INT32((sal_Int32) 0x7FFFFFFF)) {
1198 throw css::registry::InvalidValueException(
1199 rtl::OUString(
1200 RTL_CONSTASCII_USTRINGPARAM((&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1201 "com.sun.star.registry.SimpleRegistry textual"(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
1202 " services key openKeys: too large")(&("com.sun.star.registry.SimpleRegistry textual" " services key openKeys: too large"
)[0]), ((sal_Int32)((sizeof ("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large") / sizeof (("com.sun.star.registry.SimpleRegistry textual"
" services key openKeys: too large")[0]))-1)), (((rtl_TextEncoding
) 11))
),
1203 static_cast< OWeakObject * >(this));
1204 }
1205 css::uno::Sequence< rtl::OUString > seq(
1206 static_cast< sal_Int32 >(data_->singletons.size()));
1207 sal_Int32 i = 0;
1208 for (ImplementationMap::iterator j(data_->singletons.begin());
1209 j != data_->singletons.end(); ++j)
1210 {
1211 seq[i++] = j->first;
1212 }
1213 return seq;
1214 }
1215 case STATE_SINGLETON:
1216 {
1217 css::uno::Sequence< rtl::OUString > seq(1);
1218 seq[0] = rtl::OUString(
1219 RTL_CONSTASCII_USTRINGPARAM("REGISTERED_BY")(&("REGISTERED_BY")[0]), ((sal_Int32)((sizeof ("REGISTERED_BY"
) / sizeof (("REGISTERED_BY")[0]))-1)), (((rtl_TextEncoding) 11
))
);
1220 return seq;
1221 }
1222 }
1223}
1224
1225}
1226
1227TextualServices::TextualServices(rtl::OUString const & uri):
1228 uri_(uri), data_(new Data)
1229{
1230 try {
1231 Parser(uri, data_);
1232 } catch (css::container::NoSuchElementException &) {
1233 throw css::registry::InvalidRegistryException(
1234 (uri +
1235 rtl::OUString(
1236 RTL_CONSTASCII_USTRINGPARAM(": no such file")(&(": no such file")[0]), ((sal_Int32)((sizeof (": no such file"
) / sizeof ((": no such file")[0]))-1)), (((rtl_TextEncoding)
11))
)),
1237 css::uno::Reference< css::uno::XInterface >());
1238 }
1239}
1240
1241TextualServices::~TextualServices() {}
1242
1243css::uno::Reference< css::registry::XRegistryKey > TextualServices::getRootKey()
1244{
1245 return new Key(data_, std::vector< rtl::OUString >());
1246}
1247
1248} }
1249
1250/* vim:set shiftwidth=4 softtabstop=4 expandtab: */