LCOV - code coverage report
Current view: top level - include/unoidl - unoidl.hxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 150 152 98.7 %
Date: 2015-06-13 12:38:46 Functions: 104 106 98.1 %
Legend: Lines: hit not hit

          Line data    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             : 
      10             : #ifndef INCLUDED_UNOIDL_UNOIDL_HXX
      11             : #define INCLUDED_UNOIDL_UNOIDL_HXX
      12             : 
      13             : #include <sal/config.h>
      14             : 
      15             : #include <cassert>
      16             : #include <vector>
      17             : 
      18             : #include <osl/mutex.hxx>
      19             : #include <rtl/ref.hxx>
      20             : #include <rtl/ustring.hxx>
      21             : #include <sal/types.h>
      22             : #include <salhelper/simplereferenceobject.hxx>
      23             : #include <unoidl/detail/dllapi.hxx>
      24             : 
      25             : namespace unoidl {
      26             : 
      27             : class LO_DLLPUBLIC_UNOIDL NoSuchFileException {
      28             : public:
      29           0 :     SAL_DLLPRIVATE NoSuchFileException(rtl::OUString const & uri): uri_(uri) {}
      30             : 
      31             :     SAL_DLLPRIVATE NoSuchFileException(NoSuchFileException const & other):
      32             :         uri_(other.uri_) {}
      33             : 
      34             :     virtual SAL_DLLPRIVATE ~NoSuchFileException() throw ();
      35             : 
      36           0 :     rtl::OUString getUri() const { return uri_; }
      37             : 
      38             : private:
      39             :     void operator =(NoSuchFileException) SAL_DELETED_FUNCTION;
      40             : 
      41             :     rtl::OUString uri_;
      42             : };
      43             : 
      44             : class LO_DLLPUBLIC_UNOIDL FileFormatException {
      45             : public:
      46         185 :     SAL_DLLPRIVATE FileFormatException(
      47             :         rtl::OUString const & uri, rtl::OUString const & detail):
      48         185 :         uri_(uri), detail_(detail)
      49         185 :     {}
      50             : 
      51             :     SAL_DLLPRIVATE FileFormatException(FileFormatException const & other):
      52             :         uri_(other.uri_), detail_(other.detail_)
      53             :     {}
      54             : 
      55             :     virtual SAL_DLLPRIVATE ~FileFormatException() throw ();
      56             : 
      57         185 :     rtl::OUString getUri() const { return uri_; }
      58             : 
      59         185 :     rtl::OUString getDetail() const { return detail_; }
      60             : 
      61             : private:
      62             :     void operator =(FileFormatException) SAL_DELETED_FUNCTION;
      63             : 
      64             :     rtl::OUString uri_;
      65             :     rtl::OUString detail_;
      66             : };
      67             : 
      68     2327704 : struct AnnotatedReference {
      69      437652 :     AnnotatedReference(
      70             :         rtl::OUString const & theName,
      71             :         std::vector< rtl::OUString > const & theAnnotations):
      72      437652 :         name(theName), annotations(theAnnotations)
      73      437652 :     {}
      74             : 
      75             :     rtl::OUString name;
      76             : 
      77             :     std::vector< rtl::OUString > annotations;
      78             : };
      79             : 
      80             : class LO_DLLPUBLIC_UNOIDL Entity: public salhelper::SimpleReferenceObject {
      81             : public:
      82             :     enum Sort {
      83             :         SORT_MODULE, SORT_ENUM_TYPE, SORT_PLAIN_STRUCT_TYPE,
      84             :         SORT_POLYMORPHIC_STRUCT_TYPE_TEMPLATE, SORT_EXCEPTION_TYPE,
      85             :         SORT_INTERFACE_TYPE, SORT_TYPEDEF, SORT_CONSTANT_GROUP,
      86             :         SORT_SINGLE_INTERFACE_BASED_SERVICE, SORT_ACCUMULATION_BASED_SERVICE,
      87             :         SORT_INTERFACE_BASED_SINGLETON, SORT_SERVICE_BASED_SINGLETON
      88             :     };
      89             : 
      90      930170 :     Sort getSort() const { return sort_; }
      91             : 
      92             : protected:
      93      857619 :     explicit SAL_DLLPRIVATE Entity(Sort sort): sort_(sort) {}
      94             : 
      95             :     virtual SAL_DLLPRIVATE ~Entity() throw ();
      96             : 
      97             : private:
      98             :     Sort sort_;
      99             : };
     100             : 
     101             : class LO_DLLPUBLIC_UNOIDL MapCursor: public salhelper::SimpleReferenceObject {
     102             : public:
     103             :     // throws FileFormatException:
     104             :     virtual rtl::Reference< Entity > getNext(rtl::OUString * name) = 0;
     105             : 
     106             : protected:
     107        1510 :     SAL_DLLPRIVATE MapCursor() {}
     108             : 
     109             :     virtual SAL_DLLPRIVATE ~MapCursor() throw();
     110             : };
     111             : 
     112             : class LO_DLLPUBLIC_UNOIDL ModuleEntity: public Entity {
     113             : public:
     114             :     // throws FileFormatException:
     115             :     virtual std::vector< rtl::OUString > getMemberNames() const = 0;
     116             : 
     117             :     // throws FileFormatException:
     118             :     virtual rtl::Reference< MapCursor > createCursor() const = 0;
     119             : 
     120             : protected:
     121        3533 :     SAL_DLLPRIVATE ModuleEntity(): Entity(SORT_MODULE) {}
     122             : 
     123             :     virtual SAL_DLLPRIVATE ~ModuleEntity() throw ();
     124             : };
     125             : 
     126             : class LO_DLLPUBLIC_UNOIDL PublishableEntity: public Entity {
     127             : public:
     128      598636 :     bool isPublished() const { return published_; }
     129             : 
     130       15963 :     std::vector< rtl::OUString > const & getAnnotations() const
     131       15963 :     { return annotations_; }
     132             : 
     133             : protected:
     134      854086 :     SAL_DLLPRIVATE PublishableEntity(
     135             :         Sort sort, bool published,
     136             :         std::vector< rtl::OUString > const & annotations):
     137      854086 :         Entity(sort), published_(published), annotations_(annotations)
     138      854086 :     {}
     139             : 
     140             :     virtual SAL_DLLPRIVATE ~PublishableEntity() throw ();
     141             : 
     142             : private:
     143             :     bool published_;
     144             : 
     145             :     std::vector< rtl::OUString > annotations_;
     146             : };
     147             : 
     148             : class LO_DLLPUBLIC_UNOIDL EnumTypeEntity: public PublishableEntity {
     149             : public:
     150      827546 :     struct Member {
     151      111494 :         Member(
     152             :             rtl::OUString const & theName, sal_Int32 theValue,
     153             :             std::vector< rtl::OUString > const & theAnnotations):
     154      111494 :             name(theName), value(theValue), annotations(theAnnotations)
     155      111494 :         {}
     156             : 
     157             :         rtl::OUString name;
     158             : 
     159             :         sal_Int32 value;
     160             : 
     161             :         std::vector< rtl::OUString > annotations;
     162             :     };
     163             : 
     164       15055 :     SAL_DLLPRIVATE EnumTypeEntity(
     165             :         bool published, std::vector< Member > const & members,
     166             :         std::vector< rtl::OUString > const & annotations):
     167             :         PublishableEntity(SORT_ENUM_TYPE, published, annotations),
     168       15055 :         members_(members)
     169       15055 :     { assert(!members.empty()); }
     170             : 
     171       45097 :     std::vector< Member > const & getMembers() const { return members_; }
     172             : 
     173             : private:
     174             :     virtual SAL_DLLPRIVATE ~EnumTypeEntity() throw ();
     175             : 
     176             :     std::vector< Member > members_;
     177             : };
     178             : 
     179             : class LO_DLLPUBLIC_UNOIDL PlainStructTypeEntity: public PublishableEntity {
     180             : public:
     181     1149647 :     struct Member {
     182      168437 :         Member(rtl::OUString const & theName, rtl::OUString const & theType,
     183             :                std::vector< rtl::OUString > const & theAnnotations):
     184      168437 :             name(theName), type(theType), annotations(theAnnotations)
     185      168437 :         {}
     186             : 
     187             :         rtl::OUString name;
     188             : 
     189             :         rtl::OUString type;
     190             : 
     191             :         std::vector< rtl::OUString > annotations;
     192             :     };
     193             : 
     194       47645 :     SAL_DLLPRIVATE PlainStructTypeEntity(
     195             :         bool published, rtl::OUString const & directBase,
     196             :         std::vector< Member > const & directMembers,
     197             :         std::vector< rtl::OUString > const & annotations):
     198             :         PublishableEntity(SORT_PLAIN_STRUCT_TYPE, published, annotations),
     199       47645 :         directBase_(directBase), directMembers_(directMembers)
     200       47645 :     {}
     201             : 
     202       13430 :     rtl::OUString getDirectBase() const { return directBase_; }
     203             : 
     204      111002 :     std::vector< Member > const & getDirectMembers() const
     205      111002 :     { return directMembers_; }
     206             : 
     207             : private:
     208             :     virtual SAL_DLLPRIVATE ~PlainStructTypeEntity() throw ();
     209             : 
     210             :     rtl::OUString directBase_;
     211             :     std::vector< Member > directMembers_;
     212             : };
     213             : 
     214             : class LO_DLLPUBLIC_UNOIDL PolymorphicStructTypeTemplateEntity:
     215             :     public PublishableEntity
     216             : {
     217             : public:
     218       12874 :     struct Member {
     219        2216 :         Member(
     220             :             rtl::OUString const & theName, rtl::OUString const & theType,
     221             :             bool theParameterized,
     222             :             std::vector< rtl::OUString > const & theAnnotations):
     223             :             name(theName), type(theType), parameterized(theParameterized),
     224        2216 :             annotations(theAnnotations)
     225        2216 :         {}
     226             : 
     227             :         rtl::OUString name;
     228             : 
     229             :         rtl::OUString type;
     230             : 
     231             :         bool parameterized;
     232             : 
     233             :         std::vector< rtl::OUString > annotations;
     234             :     };
     235             : 
     236        1319 :     SAL_DLLPRIVATE PolymorphicStructTypeTemplateEntity(
     237             :         bool published, std::vector< rtl::OUString > const & typeParameters,
     238             :         std::vector< Member > const & members,
     239             :         std::vector< rtl::OUString > const & annotations):
     240             :         PublishableEntity(
     241             :             SORT_POLYMORPHIC_STRUCT_TYPE_TEMPLATE, published, annotations),
     242        1319 :         typeParameters_(typeParameters), members_(members)
     243        1319 :     {}
     244             : 
     245        2846 :     std::vector< rtl::OUString > const & getTypeParameters() const
     246        2846 :     { return typeParameters_; }
     247             : 
     248        3766 :     std::vector< Member > const & getMembers() const { return members_; }
     249             : 
     250             : private:
     251             :     virtual SAL_DLLPRIVATE ~PolymorphicStructTypeTemplateEntity() throw ();
     252             : 
     253             :     std::vector< rtl::OUString > typeParameters_;
     254             :     std::vector< Member > members_;
     255             : };
     256             : 
     257             : class LO_DLLPUBLIC_UNOIDL ExceptionTypeEntity: public PublishableEntity {
     258             : public:
     259      271452 :     struct Member {
     260       45498 :         Member(
     261             :             rtl::OUString const & theName, rtl::OUString const & theType,
     262             :             std::vector< rtl::OUString > const & theAnnotations):
     263       45498 :             name(theName), type(theType), annotations(theAnnotations)
     264       45498 :         {}
     265             : 
     266             :         rtl::OUString name;
     267             : 
     268             :         rtl::OUString type;
     269             : 
     270             :         std::vector< rtl::OUString > annotations;
     271             :     };
     272             : 
     273       67806 :     SAL_DLLPRIVATE ExceptionTypeEntity(
     274             :         bool published, rtl::OUString const & directBase,
     275             :         std::vector< Member > const & directMembers,
     276             :         std::vector< rtl::OUString > const & annotations):
     277             :         PublishableEntity(SORT_EXCEPTION_TYPE, published, annotations),
     278       67806 :         directBase_(directBase), directMembers_(directMembers)
     279       67806 :     {}
     280             : 
     281       12479 :     rtl::OUString getDirectBase() const { return directBase_; }
     282             : 
     283       46402 :     std::vector< Member > const & getDirectMembers() const
     284       46402 :     { return directMembers_; }
     285             : 
     286             : private:
     287             :     virtual SAL_DLLPRIVATE ~ExceptionTypeEntity() throw ();
     288             : 
     289             :     rtl::OUString directBase_;
     290             :     std::vector< Member > directMembers_;
     291             : };
     292             : 
     293             : class LO_DLLPUBLIC_UNOIDL InterfaceTypeEntity: public PublishableEntity {
     294             : public:
     295     1825047 :     struct Attribute {
     296      213635 :         Attribute(
     297             :             rtl::OUString const & theName, rtl::OUString const & theType,
     298             :             bool theBound, bool theReadOnly,
     299             :             std::vector< rtl::OUString > const & theGetExceptions,
     300             :             std::vector< rtl::OUString > const & theSetExceptions,
     301             :             std::vector< rtl::OUString > const & theAnnotations):
     302             :             name(theName), type(theType), bound(theBound),
     303             :             readOnly(theReadOnly), getExceptions(theGetExceptions),
     304      213635 :             setExceptions(theSetExceptions), annotations(theAnnotations)
     305      213635 :         { assert(!theReadOnly || theSetExceptions.empty()); }
     306             : 
     307             :         rtl::OUString name;
     308             : 
     309             :         rtl::OUString type;
     310             : 
     311             :         bool bound;
     312             : 
     313             :         bool readOnly;
     314             : 
     315             :         std::vector< rtl::OUString > getExceptions;
     316             : 
     317             :         std::vector< rtl::OUString > setExceptions;
     318             : 
     319             :         std::vector< rtl::OUString > annotations;
     320             :     };
     321             : 
     322    19788433 :     struct Method {
     323    16237176 :         struct Parameter {
     324             :             enum Direction { DIRECTION_IN, DIRECTION_OUT, DIRECTION_IN_OUT };
     325             : 
     326     1442576 :             Parameter(
     327             :                 rtl::OUString const & theName, rtl::OUString const & theType,
     328             :                 Direction theDirection):
     329     1442576 :                 name(theName), type(theType), direction(theDirection)
     330     1442576 :             {}
     331             : 
     332             :             rtl::OUString name;
     333             : 
     334             :             rtl::OUString type;
     335             : 
     336             :             Direction direction;
     337             :         };
     338             : 
     339     2327866 :         Method(
     340             :             rtl::OUString const & theName, rtl::OUString const & theReturnType,
     341             :             std::vector< Parameter > const & theParameters,
     342             :             std::vector< rtl::OUString > const & theExceptions,
     343             :             std::vector< rtl::OUString > const & theAnnotations):
     344             :             name(theName), returnType(theReturnType), parameters(theParameters),
     345     2327866 :             exceptions(theExceptions), annotations(theAnnotations)
     346     2327866 :         {}
     347             : 
     348             :         rtl::OUString name;
     349             : 
     350             :         rtl::OUString returnType;
     351             : 
     352             :         std::vector< Parameter > parameters;
     353             : 
     354             :         std::vector< rtl::OUString > exceptions;
     355             : 
     356             :         std::vector< rtl::OUString > annotations;
     357             :     };
     358             : 
     359      682450 :     SAL_DLLPRIVATE InterfaceTypeEntity(
     360             :         bool published,
     361             :         std::vector< AnnotatedReference > const & directMandatoryBases,
     362             :         std::vector< AnnotatedReference > const & directOptionalBases,
     363             :         std::vector< Attribute > const & directAttributes,
     364             :         std::vector< Method > const & directMethods,
     365             :         std::vector< rtl::OUString > const & annotations):
     366             :         PublishableEntity(SORT_INTERFACE_TYPE, published, annotations),
     367             :         directMandatoryBases_(directMandatoryBases),
     368             :         directOptionalBases_(directOptionalBases),
     369      682450 :         directAttributes_(directAttributes), directMethods_(directMethods)
     370      682450 :     {}
     371             : 
     372     1519954 :     std::vector< AnnotatedReference > const & getDirectMandatoryBases() const
     373     1519954 :     { return directMandatoryBases_; }
     374             : 
     375       37683 :     std::vector< AnnotatedReference > const & getDirectOptionalBases() const
     376       37683 :     { return directOptionalBases_; }
     377             : 
     378      862498 :     std::vector< Attribute > const & getDirectAttributes() const
     379      862498 :     { return directAttributes_; }
     380             : 
     381     3906372 :     std::vector< Method > const & getDirectMethods() const
     382     3906372 :     { return directMethods_; }
     383             : 
     384             : private:
     385             :     virtual SAL_DLLPRIVATE ~InterfaceTypeEntity() throw ();
     386             : 
     387             :     std::vector< AnnotatedReference > directMandatoryBases_;
     388             :     std::vector< AnnotatedReference > directOptionalBases_;
     389             :     std::vector< Attribute > directAttributes_;
     390             :     std::vector< Method > directMethods_;
     391             : };
     392             : 
     393             : class LO_DLLPUBLIC_UNOIDL TypedefEntity: public PublishableEntity {
     394             : public:
     395        4060 :     SAL_DLLPRIVATE TypedefEntity(
     396             :         bool published, rtl::OUString const & type,
     397             :         std::vector< rtl::OUString > const & annotations):
     398        4060 :         PublishableEntity(SORT_TYPEDEF, published, annotations), type_(type)
     399        4060 :     {}
     400             : 
     401        2923 :     rtl::OUString getType() const { return type_; }
     402             : 
     403             : private:
     404             :     virtual SAL_DLLPRIVATE ~TypedefEntity() throw ();
     405             : 
     406             :     rtl::OUString type_;
     407             : };
     408             : 
     409             : struct LO_DLLPUBLIC_UNOIDL ConstantValue {
     410             :     enum Type {
     411             :         TYPE_BOOLEAN, TYPE_BYTE, TYPE_SHORT, TYPE_UNSIGNED_SHORT, TYPE_LONG,
     412             :         TYPE_UNSIGNED_LONG, TYPE_HYPER, TYPE_UNSIGNED_HYPER, TYPE_FLOAT,
     413             :         TYPE_DOUBLE };
     414             : 
     415       13995 :     ConstantValue(bool value): type(TYPE_BOOLEAN), booleanValue(value) {}
     416             : 
     417        3718 :     ConstantValue(sal_Int8 value): type(TYPE_BYTE), byteValue(value) {}
     418             : 
     419       38024 :     ConstantValue(sal_Int16 value): type(TYPE_SHORT), shortValue(value) {}
     420             : 
     421          18 :     ConstantValue(sal_uInt16 value):
     422          18 :         type(TYPE_UNSIGNED_SHORT), unsignedShortValue(value)
     423          18 :     {}
     424             : 
     425      104837 :     ConstantValue(sal_Int32 value): type(TYPE_LONG), longValue(value) {}
     426             : 
     427          18 :     ConstantValue(sal_uInt32 value):
     428          18 :         type(TYPE_UNSIGNED_LONG), unsignedLongValue(value)
     429          18 :     {}
     430             : 
     431         512 :     ConstantValue(sal_Int64 value): type(TYPE_HYPER), hyperValue(value) {}
     432             : 
     433          18 :     ConstantValue(sal_uInt64 value):
     434          18 :         type(TYPE_UNSIGNED_HYPER), unsignedHyperValue(value)
     435          18 :     {}
     436             : 
     437         401 :     ConstantValue(float value): type(TYPE_FLOAT), floatValue(value) {}
     438             : 
     439           1 :     ConstantValue(double value): type(TYPE_DOUBLE), doubleValue(value) {}
     440             : 
     441             :     Type type;
     442             : 
     443             :     union {
     444             :         bool booleanValue;
     445             :         sal_Int8 byteValue;
     446             :         sal_Int16 shortValue;
     447             :         sal_uInt16 unsignedShortValue;
     448             :         sal_Int32 longValue;
     449             :         sal_uInt32 unsignedLongValue;
     450             :         sal_Int64 hyperValue;
     451             :         sal_uInt64 unsignedHyperValue;
     452             :         float floatValue;
     453             :         double doubleValue;
     454             :     };
     455             : };
     456             : 
     457             : class LO_DLLPUBLIC_UNOIDL ConstantGroupEntity: public PublishableEntity {
     458             : public:
     459     1115412 :     struct Member {
     460      147548 :         Member(
     461             :             rtl::OUString const & theName, ConstantValue const & theValue,
     462             :             std::vector< rtl::OUString > const & theAnnotations):
     463      147548 :             name(theName), value(theValue), annotations(theAnnotations)
     464      147548 :         {}
     465             : 
     466             :         rtl::OUString name;
     467             : 
     468             :         ConstantValue value;
     469             : 
     470             :         std::vector< rtl::OUString > annotations;
     471             :     };
     472             : 
     473       14549 :     SAL_DLLPRIVATE ConstantGroupEntity(
     474             :         bool published, std::vector< Member > const & members,
     475             :         std::vector< rtl::OUString > const & annotations):
     476             :         PublishableEntity(SORT_CONSTANT_GROUP, published, annotations),
     477       14549 :         members_(members)
     478       14549 :     {}
     479             : 
     480      152424 :     std::vector< Member > const & getMembers() const { return members_; }
     481             : 
     482             : private:
     483             :     virtual SAL_DLLPRIVATE ~ConstantGroupEntity() throw ();
     484             : 
     485             :     std::vector< Member > members_;
     486             : };
     487             : 
     488             : class LO_DLLPUBLIC_UNOIDL SingleInterfaceBasedServiceEntity:
     489             :     public PublishableEntity
     490             : {
     491             : public:
     492       35786 :     struct Constructor {
     493       42536 :         struct Parameter {
     494        4724 :             Parameter(
     495             :                 rtl::OUString const & theName, rtl::OUString const & theType,
     496             :                 bool theRest):
     497        4724 :                 name(theName), type(theType), rest(theRest)
     498        4724 :             {}
     499             : 
     500             :             rtl::OUString name;
     501             : 
     502             :             rtl::OUString type;
     503             : 
     504             :             bool rest;
     505             :         };
     506             : 
     507        3871 :         Constructor(): defaultConstructor(true) {}
     508             : 
     509        2835 :         Constructor(
     510             :             rtl::OUString const & theName,
     511             :             std::vector< Parameter > const & theParameters,
     512             :             std::vector< rtl::OUString > const & theExceptions,
     513             :             std::vector< rtl::OUString > const & theAnnotations):
     514             :             name(theName), parameters(theParameters), exceptions(theExceptions),
     515        2835 :             annotations(theAnnotations), defaultConstructor(false)
     516        2835 :         {}
     517             : 
     518             :         rtl::OUString name;
     519             : 
     520             :         std::vector< Parameter > parameters;
     521             : 
     522             :         std::vector< rtl::OUString > exceptions;
     523             : 
     524             :         std::vector< rtl::OUString > annotations;
     525             : 
     526             :         bool defaultConstructor;
     527             :     };
     528             : 
     529        6288 :     SAL_DLLPRIVATE SingleInterfaceBasedServiceEntity(
     530             :         bool published, rtl::OUString const & base,
     531             :         std::vector< Constructor > const & constructors,
     532             :         std::vector< rtl::OUString > const & annotations):
     533             :         PublishableEntity(
     534             :             SORT_SINGLE_INTERFACE_BASED_SERVICE, published, annotations),
     535        6288 :         base_(base), constructors_(constructors)
     536        6288 :     {}
     537             : 
     538        3430 :     rtl::OUString getBase() const { return base_; }
     539             : 
     540       17597 :     std::vector< Constructor > const & getConstructors() const
     541       17597 :     { return constructors_; }
     542             : 
     543             : private:
     544             :     virtual SAL_DLLPRIVATE ~SingleInterfaceBasedServiceEntity() throw ();
     545             : 
     546             :     rtl::OUString base_;
     547             :     std::vector< Constructor > constructors_;
     548             : };
     549             : 
     550             : class LO_DLLPUBLIC_UNOIDL AccumulationBasedServiceEntity:
     551             :     public PublishableEntity
     552             : {
     553             : public:
     554      314957 :     struct Property {
     555             :         enum Attributes {
     556             :             ATTRIBUTE_MAYBE_VOID = 0x001,
     557             :             ATTRIBUTE_BOUND = 0x002,
     558             :             ATTRIBUTE_CONSTRAINED = 0x004,
     559             :             ATTRIBUTE_TRANSIENT = 0x008,
     560             :             ATTRIBUTE_READ_ONLY = 0x010,
     561             :             ATTRIBUTE_MAYBE_AMBIGUOUS = 0x020,
     562             :             ATTRIBUTE_MAYBE_DEFAULT = 0x040,
     563             :             ATTRIBUTE_REMOVABLE = 0x080,
     564             :             ATTRIBUTE_OPTIONAL = 0x100
     565             :         };
     566             : 
     567       42943 :         Property(
     568             :             rtl::OUString const & theName, rtl::OUString const & theType,
     569             :             Attributes theAttributes,
     570             :             std::vector< rtl::OUString > const & theAnnotations):
     571             :             name(theName), type(theType), attributes(theAttributes),
     572       42943 :             annotations(theAnnotations)
     573       42943 :         {}
     574             : 
     575             :         rtl::OUString name;
     576             : 
     577             :         rtl::OUString type;
     578             : 
     579             :         Attributes attributes;
     580             : 
     581             :         std::vector< rtl::OUString > annotations;
     582             :     };
     583             : 
     584       13724 :     SAL_DLLPRIVATE AccumulationBasedServiceEntity(
     585             :         bool published,
     586             :         std::vector< AnnotatedReference > const & directMandatoryBaseServices,
     587             :         std::vector< AnnotatedReference > const & directOptionalBaseServices,
     588             :         std::vector< AnnotatedReference > const & directMandatoryBaseInterfaces,
     589             :         std::vector< AnnotatedReference > const & directOptionalBaseInterfaces,
     590             :         std::vector< Property > const & directProperties,
     591             :         std::vector< rtl::OUString > const & annotations):
     592             :         PublishableEntity(
     593             :             SORT_ACCUMULATION_BASED_SERVICE, published, annotations),
     594             :         directMandatoryBaseServices_(directMandatoryBaseServices),
     595             :         directOptionalBaseServices_(directOptionalBaseServices),
     596             :         directMandatoryBaseInterfaces_(directMandatoryBaseInterfaces),
     597             :         directOptionalBaseInterfaces_(directOptionalBaseInterfaces),
     598       13724 :         directProperties_(directProperties)
     599       13724 :         {}
     600             : 
     601       10930 :     std::vector< AnnotatedReference > const & getDirectMandatoryBaseServices()
     602             :         const
     603       10930 :     { return directMandatoryBaseServices_; }
     604             : 
     605        8510 :     std::vector< AnnotatedReference > const & getDirectOptionalBaseServices()
     606             :         const
     607        8510 :     { return directOptionalBaseServices_; }
     608             : 
     609       12936 :     std::vector< AnnotatedReference > const & getDirectMandatoryBaseInterfaces()
     610             :         const
     611       12936 :     { return directMandatoryBaseInterfaces_; }
     612             : 
     613        9707 :     std::vector< AnnotatedReference > const & getDirectOptionalBaseInterfaces()
     614             :         const
     615        9707 :     { return directOptionalBaseInterfaces_; }
     616             : 
     617       23147 :     std::vector< Property > const & getDirectProperties() const
     618       23147 :     { return directProperties_; }
     619             : 
     620             : private:
     621             :     virtual SAL_DLLPRIVATE ~AccumulationBasedServiceEntity() throw ();
     622             : 
     623             :     std::vector< AnnotatedReference > directMandatoryBaseServices_;
     624             :     std::vector< AnnotatedReference > directOptionalBaseServices_;
     625             :     std::vector< AnnotatedReference > directMandatoryBaseInterfaces_;
     626             :     std::vector< AnnotatedReference > directOptionalBaseInterfaces_;
     627             :     std::vector< Property > directProperties_;
     628             : };
     629             : 
     630             : class LO_DLLPUBLIC_UNOIDL InterfaceBasedSingletonEntity:
     631             :     public PublishableEntity
     632             : {
     633             : public:
     634        1181 :     SAL_DLLPRIVATE InterfaceBasedSingletonEntity(
     635             :         bool published, rtl::OUString const & base,
     636             :         std::vector< rtl::OUString > const & annotations):
     637             :         PublishableEntity(
     638             :             SORT_INTERFACE_BASED_SINGLETON, published, annotations),
     639        1181 :         base_(base)
     640        1181 :     {}
     641             : 
     642         716 :     rtl::OUString getBase() const { return base_; }
     643             : 
     644             : private:
     645             :     virtual SAL_DLLPRIVATE ~InterfaceBasedSingletonEntity() throw ();
     646             : 
     647             :     rtl::OUString base_;
     648             : };
     649             : 
     650             : class LO_DLLPUBLIC_UNOIDL ServiceBasedSingletonEntity: public PublishableEntity
     651             : {
     652             : public:
     653           9 :     SAL_DLLPRIVATE ServiceBasedSingletonEntity(
     654             :         bool published, rtl::OUString const & base,
     655             :         std::vector< rtl::OUString > const & annotations):
     656             :         PublishableEntity(SORT_SERVICE_BASED_SINGLETON, published, annotations),
     657           9 :         base_(base)
     658           9 :     {}
     659             : 
     660           6 :     rtl::OUString getBase() const { return base_; }
     661             : 
     662             : private:
     663             :     virtual SAL_DLLPRIVATE ~ServiceBasedSingletonEntity() throw ();
     664             : 
     665             :     rtl::OUString base_;
     666             : };
     667             : 
     668             : class LO_DLLPUBLIC_UNOIDL Provider: public salhelper::SimpleReferenceObject {
     669             : public:
     670             :     // throws FileFormatException:
     671             :     virtual rtl::Reference< MapCursor > createRootCursor() const = 0;
     672             : 
     673             :     // throws FileFormatException:
     674             :     virtual rtl::Reference< Entity > findEntity(rtl::OUString const & name)
     675             :         const = 0;
     676             : 
     677             : protected:
     678        1640 :     SAL_DLLPRIVATE Provider() {}
     679             : 
     680             :     virtual SAL_DLLPRIVATE ~Provider() throw ();
     681             : };
     682             : 
     683             : class LO_DLLPUBLIC_UNOIDL Manager: public salhelper::SimpleReferenceObject {
     684             : public:
     685         877 :     Manager() {}
     686             : 
     687             :     // throws FileFormatException, NoSuchFileException:
     688             :     rtl::Reference< Provider > addProvider(rtl::OUString const & uri);
     689             : 
     690             :     // throws FileFormatException:
     691             :     rtl::Reference< Entity > findEntity(rtl::OUString const & name) const;
     692             : 
     693             :     // throws FileFormatException:
     694             :     rtl::Reference< MapCursor > createCursor(rtl::OUString const & name) const;
     695             : 
     696             : private:
     697             :     virtual SAL_DLLPRIVATE ~Manager() throw ();
     698             : 
     699             :     SAL_DLLPRIVATE rtl::Reference< Provider > loadProvider(
     700             :         rtl::OUString const & uri);
     701             : 
     702             :     mutable osl::Mutex mutex_;
     703             :     std::vector< rtl::Reference< Provider > > providers_;
     704             : };
     705             : 
     706             : }
     707             : 
     708             : #endif
     709             : 
     710             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11