Version 5.2.6.1, tag libreoffice-5.2.6.1
[LibreOffice.git] / unoxml / source / rdf / CURI.cxx
blob64f31ddee079fbf2d69d90fde5ea54438563d085
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #include "CNodes.hxx"
22 #include <cppuhelper/implbase.hxx>
23 #include <cppuhelper/supportsservice.hxx>
24 #include <com/sun/star/lang/XServiceInfo.hpp>
25 #include <com/sun/star/lang/XInitialization.hpp>
26 #include <com/sun/star/rdf/XURI.hpp>
27 #include <com/sun/star/rdf/URIs.hpp>
29 #include <com/sun/star/lang/IllegalArgumentException.hpp>
32 /// anonymous implementation namespace
33 namespace {
35 class CURI:
36 public ::cppu::WeakImplHelper<
37 css::lang::XServiceInfo,
38 css::lang::XInitialization,
39 css::rdf::XURI>
41 public:
42 explicit CURI();
43 virtual ~CURI() {}
45 // css::lang::XServiceInfo:
46 virtual OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException, std::exception) override;
47 virtual sal_Bool SAL_CALL supportsService(const OUString & ServiceName) throw (css::uno::RuntimeException, std::exception) override;
48 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException, std::exception) override;
50 // css::lang::XInitialization:
51 virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception, std::exception) override;
53 // css::rdf::XNode:
54 virtual OUString SAL_CALL getStringValue() throw (css::uno::RuntimeException, std::exception) override;
56 // css::rdf::XURI:
57 virtual OUString SAL_CALL getLocalName() throw (css::uno::RuntimeException, std::exception) override;
58 virtual OUString SAL_CALL getNamespace() throw (css::uno::RuntimeException, std::exception) override;
60 private:
61 CURI(CURI const&) = delete;
62 CURI& operator=(CURI const&) = delete;
64 /// handle css.rdf.URIs
65 void SAL_CALL initFromConstant(const sal_Int16 i_Constant);
67 OUString m_Namespace;
68 OUString m_LocalName;
71 CURI::CURI() :
72 m_Namespace(), m_LocalName()
75 // com.sun.star.uno.XServiceInfo:
76 OUString SAL_CALL CURI::getImplementationName() throw (css::uno::RuntimeException, std::exception)
78 return comp_CURI::_getImplementationName();
81 sal_Bool SAL_CALL CURI::supportsService(OUString const & serviceName) throw (css::uno::RuntimeException, std::exception)
83 return cppu::supportsService(this, serviceName);
86 css::uno::Sequence< OUString > SAL_CALL CURI::getSupportedServiceNames() throw (css::uno::RuntimeException, std::exception)
88 return comp_CURI::_getSupportedServiceNames();
91 const char s_nsXSD [] = "http://www.w3.org/2001/XMLSchema-datatypes#";
92 const char s_nsRDF [] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
93 const char s_nsRDFs [] = "http://www.w3.org/2000/01/rdf-schema#";
94 const char s_nsOWL [] = "http://www.w3.org/2002/07/owl#";
95 const char s_nsPkg [] =
96 "http://docs.oasis-open.org/ns/office/1.2/meta/pkg#";
97 const char s_nsODF [] =
98 "http://docs.oasis-open.org/ns/office/1.2/meta/odf#";
100 void SAL_CALL CURI::initFromConstant(const sal_Int16 i_Constant)
102 const char *ns(nullptr);
103 const char *ln(nullptr);
104 switch (i_Constant)
106 case css::rdf::URIs::XSD_NCNAME:
107 ns = s_nsXSD;
108 ln = "NCName";
109 break;
111 case css::rdf::URIs::XSD_STRING:
112 ns = s_nsXSD;
113 ln = "string";
114 break;
116 case css::rdf::URIs::XSD_NORMALIZEDSTRING:
117 ns = s_nsXSD;
118 ln = "normalizedString";
119 break;
121 case css::rdf::URIs::XSD_BOOLEAN:
122 ns = s_nsXSD;
123 ln = "boolean";
124 break;
126 case css::rdf::URIs::XSD_DECIMAL:
127 ns = s_nsXSD;
128 ln = "decimal";
129 break;
131 case css::rdf::URIs::XSD_FLOAT:
132 ns = s_nsXSD;
133 ln = "float";
134 break;
136 case css::rdf::URIs::XSD_DOUBLE:
137 ns = s_nsXSD;
138 ln = "double";
139 break;
141 case css::rdf::URIs::XSD_INTEGER:
142 ns = s_nsXSD;
143 ln = "integer";
144 break;
146 case css::rdf::URIs::XSD_NONNEGATIVEINTEGER:
147 ns = s_nsXSD;
148 ln = "nonNegativeInteger";
149 break;
151 case css::rdf::URIs::XSD_POSITIVEINTEGER:
152 ns = s_nsXSD;
153 ln = "positiveInteger";
154 break;
156 case css::rdf::URIs::XSD_NONPOSITIVEINTEGER:
157 ns = s_nsXSD;
158 ln = "nonPositiveInteger";
159 break;
161 case css::rdf::URIs::XSD_NEGATIVEINTEGER:
162 ns = s_nsXSD;
163 ln = "negativeInteger";
164 break;
166 case css::rdf::URIs::XSD_LONG:
167 ns = s_nsXSD;
168 ln = "long";
169 break;
171 case css::rdf::URIs::XSD_INT:
172 ns = s_nsXSD;
173 ln = "int";
174 break;
176 case css::rdf::URIs::XSD_SHORT:
177 ns = s_nsXSD;
178 ln = "short";
179 break;
181 case css::rdf::URIs::XSD_BYTE:
182 ns = s_nsXSD;
183 ln = "byte";
184 break;
186 case css::rdf::URIs::XSD_UNSIGNEDLONG:
187 ns = s_nsXSD;
188 ln = "unsignedLong";
189 break;
191 case css::rdf::URIs::XSD_UNSIGNEDINT:
192 ns = s_nsXSD;
193 ln = "unsignedInt";
194 break;
196 case css::rdf::URIs::XSD_UNSIGNEDSHORT:
197 ns = s_nsXSD;
198 ln = "unsignedShort";
199 break;
201 case css::rdf::URIs::XSD_UNSIGNEDBYTE:
202 ns = s_nsXSD;
203 ln = "unsignedByte";
204 break;
206 case css::rdf::URIs::XSD_HEXBINARY:
207 ns = s_nsXSD;
208 ln = "hexBinary";
209 break;
211 case css::rdf::URIs::XSD_BASE64BINARY:
212 ns = s_nsXSD;
213 ln = "base64Binary";
214 break;
216 case css::rdf::URIs::XSD_DATETIME:
217 ns = s_nsXSD;
218 ln = "dateTime";
219 break;
221 case css::rdf::URIs::XSD_TIME:
222 ns = s_nsXSD;
223 ln = "time";
224 break;
226 case css::rdf::URIs::XSD_DATE:
227 ns = s_nsXSD;
228 ln = "date";
229 break;
231 case css::rdf::URIs::XSD_GYEARMONTH:
232 ns = s_nsXSD;
233 ln = "gYearMonth";
234 break;
236 case css::rdf::URIs::XSD_GYEAR:
237 ns = s_nsXSD;
238 ln = "gYear";
239 break;
241 case css::rdf::URIs::XSD_GMONTHDAY:
242 ns = s_nsXSD;
243 ln = "gMonthDay";
244 break;
246 case css::rdf::URIs::XSD_GDAY:
247 ns = s_nsXSD;
248 ln = "gDay";
249 break;
251 case css::rdf::URIs::XSD_GMONTH:
252 ns = s_nsXSD;
253 ln = "gMonth";
254 break;
256 case css::rdf::URIs::XSD_ANYURI:
257 ns = s_nsXSD;
258 ln = "anyURI";
259 break;
261 case css::rdf::URIs::XSD_TOKEN:
262 ns = s_nsXSD;
263 ln = "token";
264 break;
266 case css::rdf::URIs::XSD_LANGUAGE:
267 ns = s_nsXSD;
268 ln = "language";
269 break;
271 case css::rdf::URIs::XSD_NMTOKEN:
272 ns = s_nsXSD;
273 ln = "NMTOKEN";
274 break;
276 case css::rdf::URIs::XSD_NAME:
277 ns = s_nsXSD;
278 ln = "Name";
279 break;
281 case css::rdf::URIs::XSD_DURATION:
282 ns = s_nsXSD;
283 ln = "duration";
284 break;
286 case css::rdf::URIs::XSD_QNAME:
287 ns = s_nsXSD;
288 ln = "QName";
289 break;
291 case css::rdf::URIs::XSD_NOTATION:
292 ns = s_nsXSD;
293 ln = "NOTATION";
294 break;
296 case css::rdf::URIs::XSD_NMTOKENS:
297 ns = s_nsXSD;
298 ln = "NMTOKENS";
299 break;
301 case css::rdf::URIs::XSD_ID:
302 ns = s_nsXSD;
303 ln = "ID";
304 break;
306 case css::rdf::URIs::XSD_IDREF:
307 ns = s_nsXSD;
308 ln = "IDREF";
309 break;
311 case css::rdf::URIs::XSD_IDREFS:
312 ns = s_nsXSD;
313 ln = "IDREFS";
314 break;
316 case css::rdf::URIs::XSD_ENTITY:
317 ns = s_nsXSD;
318 ln = "ENTITY";
319 break;
321 case css::rdf::URIs::XSD_ENTITIES:
322 ns = s_nsXSD;
323 ln = "ENTITIES";
324 break;
326 case css::rdf::URIs::RDF_TYPE:
327 ns = s_nsRDF;
328 ln = "type";
329 break;
331 case css::rdf::URIs::RDF_SUBJECT:
332 ns = s_nsRDF;
333 ln = "subject";
334 break;
336 case css::rdf::URIs::RDF_PREDICATE:
337 ns = s_nsRDF;
338 ln = "predicate";
339 break;
341 case css::rdf::URIs::RDF_OBJECT:
342 ns = s_nsRDF;
343 ln = "object";
344 break;
346 case css::rdf::URIs::RDF_PROPERTY:
347 ns = s_nsRDF;
348 ln = "Property";
349 break;
351 case css::rdf::URIs::RDF_STATEMENT:
352 ns = s_nsRDF;
353 ln = "Statement";
354 break;
356 case css::rdf::URIs::RDF_VALUE:
357 ns = s_nsRDF;
358 ln = "value";
359 break;
361 case css::rdf::URIs::RDF_FIRST:
362 ns = s_nsRDF;
363 ln = "first";
364 break;
366 case css::rdf::URIs::RDF_REST:
367 ns = s_nsRDF;
368 ln = "rest";
369 break;
371 case css::rdf::URIs::RDF_NIL:
372 ns = s_nsRDF;
373 ln = "nil";
374 break;
376 case css::rdf::URIs::RDF_XMLLITERAL:
377 ns = s_nsRDF;
378 ln = "XMLLiteral";
379 break;
381 case css::rdf::URIs::RDF_ALT:
382 ns = s_nsRDF;
383 ln = "Alt";
384 break;
386 case css::rdf::URIs::RDF_BAG:
387 ns = s_nsRDF;
388 ln = "Bag";
389 break;
391 case css::rdf::URIs::RDF_LIST:
392 ns = s_nsRDF;
393 ln = "List";
394 break;
396 case css::rdf::URIs::RDF_SEQ:
397 ns = s_nsRDF;
398 ln = "Seq";
399 break;
401 case css::rdf::URIs::RDF_1:
402 ns = s_nsRDF;
403 ln = "_1";
404 break;
406 case css::rdf::URIs::RDFS_COMMENT:
407 ns = s_nsRDFs;
408 ln = "comment";
409 break;
411 case css::rdf::URIs::RDFS_LABEL:
412 ns = s_nsRDFs;
413 ln = "label";
414 break;
416 case css::rdf::URIs::RDFS_DOMAIN:
417 ns = s_nsRDFs;
418 ln = "domain";
419 break;
421 case css::rdf::URIs::RDFS_RANGE:
422 ns = s_nsRDFs;
423 ln = "range";
424 break;
426 case css::rdf::URIs::RDFS_SUBCLASSOF:
427 ns = s_nsRDFs;
428 ln = "subClassOf";
429 break;
431 case css::rdf::URIs::RDFS_LITERAL:
432 ns = s_nsRDFs;
433 ln = "Literal";
434 break;
436 case css::rdf::URIs::OWL_CLASS:
437 ns = s_nsOWL;
438 ln = "Class";
439 break;
441 case css::rdf::URIs::OWL_OBJECTPROPERTY:
442 ns = s_nsOWL;
443 ln = "ObjectProperty";
444 break;
446 case css::rdf::URIs::OWL_DATATYPEPROPERTY:
447 ns = s_nsOWL;
448 ln = "DatatypeProperty";
449 break;
451 case css::rdf::URIs::OWL_FUNCTIONALPROPERTY:
452 ns = s_nsOWL;
453 ln = "FunctionalProperty";
454 break;
456 case css::rdf::URIs::OWL_THING:
457 ns = s_nsOWL;
458 ln = "Thing";
459 break;
461 case css::rdf::URIs::OWL_NOTHING:
462 ns = s_nsOWL;
463 ln = "Nothing";
464 break;
466 case css::rdf::URIs::OWL_INDIVIDUAL:
467 ns = s_nsOWL;
468 ln = "Individual";
469 break;
471 case css::rdf::URIs::OWL_EQUIVALENTCLASS:
472 ns = s_nsOWL;
473 ln = "equivalentClass";
474 break;
476 case css::rdf::URIs::OWL_EQUIVALENTPROPERTY:
477 ns = s_nsOWL;
478 ln = "equivalentProperty";
479 break;
481 case css::rdf::URIs::OWL_SAMEAS:
482 ns = s_nsOWL;
483 ln = "sameAs";
484 break;
486 case css::rdf::URIs::OWL_DIFFERENTFROM:
487 ns = s_nsOWL;
488 ln = "differentFrom";
489 break;
491 case css::rdf::URIs::OWL_ALLDIFFERENT:
492 ns = s_nsOWL;
493 ln = "AllDifferent";
494 break;
496 case css::rdf::URIs::OWL_DISTINCTMEMBERS:
497 ns = s_nsOWL;
498 ln = "distinctMembers";
499 break;
501 case css::rdf::URIs::OWL_INVERSEOF:
502 ns = s_nsOWL;
503 ln = "inverseOf";
504 break;
506 case css::rdf::URIs::OWL_TRANSITIVEPROPERTY:
507 ns = s_nsOWL;
508 ln = "TransitiveProperty";
509 break;
511 case css::rdf::URIs::OWL_SYMMETRICPROPERTY:
512 ns = s_nsOWL;
513 ln = "SymmetricProperty";
514 break;
516 case css::rdf::URIs::OWL_INVERSEFUNCTIONALPROPERTY:
517 ns = s_nsOWL;
518 ln = "InverseFunctionalProperty";
519 break;
521 case css::rdf::URIs::OWL_RESTRICTION:
522 ns = s_nsOWL;
523 ln = "Restriction";
524 break;
526 case css::rdf::URIs::OWL_ONPROPERTY:
527 ns = s_nsOWL;
528 ln = "onProperty";
529 break;
531 case css::rdf::URIs::OWL_ALLVALUESFROM:
532 ns = s_nsOWL;
533 ln = "allValuesFrom";
534 break;
536 case css::rdf::URIs::OWL_SOMEVALUESFROM:
537 ns = s_nsOWL;
538 ln = "someValuesFrom";
539 break;
541 case css::rdf::URIs::OWL_MINCARDINALITY:
542 ns = s_nsOWL;
543 ln = "minCardinality";
544 break;
546 case css::rdf::URIs::OWL_MAXCARDINALITY:
547 ns = s_nsOWL;
548 ln = "maxCardinality";
549 break;
551 case css::rdf::URIs::OWL_CARDINALITY:
552 ns = s_nsOWL;
553 ln = "cardinality";
554 break;
556 case css::rdf::URIs::OWL_ONTOLOGY:
557 ns = s_nsOWL;
558 ln = "Ontology";
559 break;
561 case css::rdf::URIs::OWL_IMPORTS:
562 ns = s_nsOWL;
563 ln = "imports";
564 break;
566 case css::rdf::URIs::OWL_VERSIONINFO:
567 ns = s_nsOWL;
568 ln = "versionInfo";
569 break;
571 case css::rdf::URIs::OWL_PRIORVERSION:
572 ns = s_nsOWL;
573 ln = "priorVersion";
574 break;
576 case css::rdf::URIs::OWL_BACKWARDCOMPATIBLEWITH:
577 ns = s_nsOWL;
578 ln = "backwardCompatibleWith";
579 break;
581 case css::rdf::URIs::OWL_INCOMPATIBLEWITH:
582 ns = s_nsOWL;
583 ln = "incompatibleWith";
584 break;
586 case css::rdf::URIs::OWL_DEPRECATEDCLASS:
587 ns = s_nsOWL;
588 ln = "DeprecatedClass";
589 break;
591 case css::rdf::URIs::OWL_DEPRECATEDPROPERTY:
592 ns = s_nsOWL;
593 ln = "DeprecatedProperty";
594 break;
596 case css::rdf::URIs::OWL_ANNOTATIONPROPERTY:
597 ns = s_nsOWL;
598 ln = "AnnotationProperty";
599 break;
601 case css::rdf::URIs::OWL_ONTOLOGYPROPERTY:
602 ns = s_nsOWL;
603 ln = "OntologyProperty";
604 break;
606 case css::rdf::URIs::OWL_ONEOF:
607 ns = s_nsOWL;
608 ln = "oneOf";
609 break;
611 case css::rdf::URIs::OWL_DATARANGE:
612 ns = s_nsOWL;
613 ln = "dataRange";
614 break;
616 case css::rdf::URIs::OWL_DISJOINTWITH:
617 ns = s_nsOWL;
618 ln = "disjointWith";
619 break;
621 case css::rdf::URIs::OWL_UNIONOF:
622 ns = s_nsOWL;
623 ln = "unionOf";
624 break;
626 case css::rdf::URIs::OWL_COMPLEMENTOF:
627 ns = s_nsOWL;
628 ln = "complementOf";
629 break;
631 case css::rdf::URIs::OWL_INTERSECTIONOF:
632 ns = s_nsOWL;
633 ln = "intersectionOf";
634 break;
636 case css::rdf::URIs::OWL_HASVALUE:
637 ns = s_nsOWL;
638 ln = "hasValue";
639 break;
642 case css::rdf::URIs::PKG_HASPART:
643 ns = s_nsPkg;
644 ln = "hasPart";
645 break;
647 case css::rdf::URIs::PKG_MIMETYPE:
648 ns = s_nsPkg;
649 ln = "mimeType";
650 break;
652 case css::rdf::URIs::PKG_PACKAGE:
653 ns = s_nsPkg;
654 ln = "Package";
655 break;
657 case css::rdf::URIs::PKG_ELEMENT:
658 ns = s_nsPkg;
659 ln = "Element";
660 break;
662 case css::rdf::URIs::PKG_FILE:
663 ns = s_nsPkg;
664 ln = "File";
665 break;
667 case css::rdf::URIs::PKG_METADATAFILE:
668 ns = s_nsPkg;
669 ln = "MetadataFile";
670 break;
672 case css::rdf::URIs::PKG_DOCUMENT:
673 ns = s_nsPkg;
674 ln = "Document";
675 break;
677 case css::rdf::URIs::ODF_PREFIX:
678 ns = s_nsODF;
679 ln = "prefix";
680 break;
682 case css::rdf::URIs::ODF_SUFFIX:
683 ns = s_nsODF;
684 ln = "suffix";
685 break;
687 case css::rdf::URIs::ODF_ELEMENT:
688 ns = s_nsODF;
689 ln = "Element";
690 break;
692 case css::rdf::URIs::ODF_CONTENTFILE:
693 ns = s_nsODF;
694 ln = "ContentFile";
695 break;
697 case css::rdf::URIs::ODF_STYLESFILE:
698 ns = s_nsODF;
699 ln = "StylesFile";
700 break;
702 default:
703 throw css::lang::IllegalArgumentException(
704 OUString("CURI::initialize: "
705 "invalid URIs constant argument"), *this, 0);
707 m_Namespace = OUString::createFromAscii(ns).intern();
708 m_LocalName = OUString::createFromAscii(ln).intern();
709 return;
712 // css::lang::XInitialization:
713 void SAL_CALL CURI::initialize(const css::uno::Sequence< css::uno::Any > & aArguments) throw (css::uno::RuntimeException, css::uno::Exception, std::exception)
715 sal_Int32 len = aArguments.getLength();
716 if ((len < 1) || (len > 2)) {
717 throw css::lang::IllegalArgumentException(
718 OUString("CURI::initialize: "
719 "must give 1 or 2 argument(s)"), *this, 2);
722 sal_Int16 arg(0);
723 OUString arg0;
724 OUString arg1;
725 if ((aArguments[0] >>= arg)) {
726 // integer argument: constant from rdf::URIs
727 if (len != 1) {
728 throw css::lang::IllegalArgumentException(
729 OUString("CURI::initialize: "
730 "must give 1 int argument"), *this, 1);
732 initFromConstant(arg);
733 return;
735 if (!(aArguments[0] >>= arg0)) {
736 throw css::lang::IllegalArgumentException(
737 OUString("CURI::initialize: "
738 "argument must be string or short"), *this, 0);
740 if (len > 1) {
741 if (!(aArguments[1] >>= arg1)) {
742 throw css::lang::IllegalArgumentException(
743 OUString("CURI::initialize: "
744 "argument must be string"), *this, 1);
746 // just append the parameters and then split them again; seems simplest
747 arg0 = arg0 + arg1;
748 arg1.clear();
751 // split parameter
752 sal_Int32 idx;
753 if ( ((idx = arg0.indexOf ('#')) >= 0)
754 || ((idx = arg0.lastIndexOf('/')) >= 0)
755 || ((idx = arg0.lastIndexOf(':')) >= 0))
758 if (idx < arg0.getLength() - 1) {
759 arg1 = arg0.copy(idx+1);
760 arg0 = arg0.copy(0, idx+1);
762 } else {
763 throw css::lang::IllegalArgumentException(
764 OUString("CURI::initialize: "
765 "argument not splittable: no separator [#/:]"), *this, 0);
768 //FIXME: what is legal?
769 if (!arg0.isEmpty()) {
770 m_Namespace = arg0;
771 } else {
772 throw css::lang::IllegalArgumentException(
773 OUString("CURI::initialize: "
774 "argument is not valid namespace"), *this, 0);
776 //FIXME: what is legal?
777 if (true) {
778 m_LocalName = arg1;
779 } else {
780 throw css::lang::IllegalArgumentException(
781 OUString("CURI::initialize: "
782 "argument is not valid local name"), *this, 1);
786 // css::rdf::XNode:
787 OUString SAL_CALL CURI::getStringValue() throw (css::uno::RuntimeException, std::exception)
789 return m_Namespace + m_LocalName;
792 // css::rdf::XURI:
793 OUString SAL_CALL CURI::getNamespace() throw (css::uno::RuntimeException, std::exception)
795 return m_Namespace;
798 OUString SAL_CALL CURI::getLocalName() throw (css::uno::RuntimeException, std::exception)
800 return m_LocalName;
803 } // closing anonymous implementation namespace
806 // component helper namespace
807 namespace comp_CURI {
809 OUString SAL_CALL _getImplementationName() {
810 return OUString(
811 "CURI");
814 css::uno::Sequence< OUString > SAL_CALL _getSupportedServiceNames()
816 css::uno::Sequence< OUString > s { "com.sun.star.rdf.URI" };
817 return s;
820 css::uno::Reference< css::uno::XInterface > SAL_CALL _create(
821 const css::uno::Reference< css::uno::XComponentContext > & )
823 return static_cast< ::cppu::OWeakObject * >(new CURI);
826 } // closing component helper namespace
828 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */