10#ifndef INCLUDED_UNOIDL_UNOIDL_HXX
11#define INCLUDED_UNOIDL_UNOIDL_HXX
19#include <osl/mutex.hxx>
21#include <rtl/ustring.hxx>
37 const OUString& getUri()
const {
return uri_; }
48 OUString uri, OUString
detail):
53 uri_(other.
uri_), detail_(other.detail_)
58 const OUString& getUri()
const {
return uri_; }
60 const OUString&
getDetail()
const {
return detail_; }
72 std::vector< OUString > && theAnnotations):
94 explicit SAL_DLLPRIVATE
Entity(
Sort sort): sort_(sort) {}
96 virtual SAL_DLLPRIVATE
~Entity() noexcept override;
110 virtual SAL_DLLPRIVATE
~MapCursor() noexcept override;
132 {
return annotations_; }
136 Sort sort,
bool published,
137 std::vector< OUString >&& annotations):
138 Entity(sort), published_(published), annotations_(
std::move(annotations))
146 std::vector< OUString > annotations_;
153 OUString theName, sal_Int32 theValue,
154 std::vector< OUString >&& theAnnotations):
155 name(
std::move(theName)),
value(theValue), annotations(
std::move(theAnnotations))
166 bool published, std::vector< Member >&& members,
167 std::vector< OUString >&& annotations):
170 { assert(!members_.empty()); }
172 std::vector< Member >
const &
getMembers()
const {
return members_; }
183 Member(OUString theName, OUString theType,
184 std::vector< OUString >&& theAnnotations):
185 name(
std::move(theName)),
type(
std::move(theType)), annotations(
std::move(theAnnotations))
196 bool published, OUString directBase,
197 std::vector< Member >&& directMembers,
198 std::vector< OUString > && annotations):
200 directBase_(
std::move(directBase)), directMembers_(
std::move(directMembers))
206 {
return directMembers_; }
211 OUString directBase_;
221 OUString theName, OUString theType,
222 bool theParameterized,
223 std::vector< OUString >&& theAnnotations):
224 name(
std::move(theName)),
type(
std::move(theType)), parameterized(theParameterized),
225 annotations(
std::move(theAnnotations))
238 bool published, std::vector< OUString >&& typeParameters,
239 std::vector< Member >&& members,
240 std::vector< OUString >&& annotations):
242 SORT_POLYMORPHIC_STRUCT_TYPE_TEMPLATE, published,
std::move(annotations)),
243 typeParameters_(
std::move(typeParameters)), members_(
std::move(
members))
247 {
return typeParameters_; }
249 std::vector< Member >
const &
getMembers()
const {
return members_; }
254 std::vector< OUString > typeParameters_;
262 OUString theName, OUString theType,
263 std::vector< OUString >&& theAnnotations):
264 name(
std::move(theName)),
type(
std::move(theType)), annotations(
std::move(theAnnotations))
275 bool published, OUString directBase,
276 std::vector< Member >&& directMembers,
277 std::vector< OUString >&& annotations):
279 directBase_(
std::move(directBase)), directMembers_(
std::move(directMembers))
285 {
return directMembers_; }
290 OUString directBase_;
298 OUString theName, OUString theType,
299 bool theBound,
bool theReadOnly,
300 std::vector< OUString >&& theGetExceptions,
301 std::vector< OUString >&& theSetExceptions,
302 std::vector< OUString >&& theAnnotations):
303 name(
std::move(theName)),
type(
std::move(theType)), bound(theBound),
304 readOnly(theReadOnly), getExceptions(
std::move(theGetExceptions)),
305 setExceptions(
std::move(theSetExceptions)), annotations(
std::move(theAnnotations))
306 { assert(!theReadOnly || setExceptions.empty()); }
325 enum Direction { DIRECTION_IN, DIRECTION_OUT, DIRECTION_IN_OUT };
328 OUString theName, OUString theType,
330 name(
std::move(theName)),
type(
std::move(theType)), direction(theDirection)
341 OUString theName, OUString theReturnType,
342 std::vector< Parameter >&& theParameters,
343 std::vector< OUString >&& theExceptions,
344 std::vector< OUString >&& theAnnotations):
345 name(
std::move(theName)), returnType(
std::move(theReturnType)), parameters(
std::move(theParameters)),
346 exceptions(
std::move(theExceptions)), annotations(
std::move(theAnnotations))
362 std::vector< AnnotatedReference >&& directMandatoryBases,
363 std::vector< AnnotatedReference >&& directOptionalBases,
364 std::vector< Attribute >&& directAttributes,
365 std::vector< Method >&& directMethods,
366 std::vector< OUString >&& annotations):
368 directMandatoryBases_(
std::move(directMandatoryBases)),
369 directOptionalBases_(
std::move(directOptionalBases)),
370 directAttributes_(
std::move(directAttributes)),
371 directMethods_(
std::move(directMethods))
375 {
return directMandatoryBases_; }
378 {
return directOptionalBases_; }
381 {
return directAttributes_; }
384 {
return directMethods_; }
398 bool published, OUString type,
399 std::vector< OUString >&& annotations):
414 TYPE_UNSIGNED_LONG, TYPE_HYPER, TYPE_UNSIGNED_HYPER,
TYPE_FLOAT,
424 type(TYPE_UNSIGNED_SHORT), unsignedShortValue(
value)
430 type(TYPE_UNSIGNED_LONG), unsignedLongValue(
value)
436 type(TYPE_UNSIGNED_HYPER), unsignedHyperValue(
value)
464 std::vector< OUString >&& theAnnotations):
465 name(
std::move(theName)),
value(theValue), annotations(
std::move(theAnnotations))
476 bool published, std::vector< Member >&& members,
477 std::vector< OUString >&& annotations):
482 std::vector< Member >
const &
getMembers()
const {
return members_; }
497 OUString theName, OUString theType,
510 defaultConstructor(true) {}
514 std::vector< Parameter >&& theParameters,
515 std::vector< OUString >&& theExceptions,
516 std::vector< OUString >&& theAnnotations):
517 name(
std::move(theName)), parameters(
std::move(theParameters)),
518 exceptions(
std::move(theExceptions)),
519 annotations(
std::move(theAnnotations)),
520 defaultConstructor(false)
535 bool published, OUString base,
536 std::vector< Constructor >&& constructors,
537 std::vector< OUString >&& annotations):
539 SORT_SINGLE_INTERFACE_BASED_SERVICE, published,
std::move(annotations)),
540 base_(
std::move(
base)), constructors_(
std::move(constructors))
543 const OUString&
getBase()
const {
return base_; }
546 {
return constructors_; }
561 ATTRIBUTE_MAYBE_VOID = 0x001,
562 ATTRIBUTE_BOUND = 0x002,
563 ATTRIBUTE_CONSTRAINED = 0x004,
564 ATTRIBUTE_TRANSIENT = 0x008,
565 ATTRIBUTE_READ_ONLY = 0x010,
566 ATTRIBUTE_MAYBE_AMBIGUOUS = 0x020,
567 ATTRIBUTE_MAYBE_DEFAULT = 0x040,
568 ATTRIBUTE_REMOVABLE = 0x080,
569 ATTRIBUTE_OPTIONAL = 0x100
573 OUString theName, OUString theType,
575 std::vector< OUString >&& theAnnotations):
576 name(
std::move(theName)),
type(
std::move(theType)), attributes(theAttributes),
577 annotations(
std::move(theAnnotations))
591 std::vector< AnnotatedReference >&& directMandatoryBaseServices,
592 std::vector< AnnotatedReference >&& directOptionalBaseServices,
593 std::vector< AnnotatedReference >&& directMandatoryBaseInterfaces,
594 std::vector< AnnotatedReference >&& directOptionalBaseInterfaces,
595 std::vector< Property >&& directProperties,
596 std::vector< OUString >&& annotations):
598 SORT_ACCUMULATION_BASED_SERVICE, published,
std::move(annotations)),
599 directMandatoryBaseServices_(
std::move(directMandatoryBaseServices)),
600 directOptionalBaseServices_(
std::move(directOptionalBaseServices)),
601 directMandatoryBaseInterfaces_(
std::move(directMandatoryBaseInterfaces)),
602 directOptionalBaseInterfaces_(
std::move(directOptionalBaseInterfaces)),
603 directProperties_(
std::move(directProperties))
608 {
return directMandatoryBaseServices_; }
612 {
return directOptionalBaseServices_; }
616 {
return directMandatoryBaseInterfaces_; }
620 {
return directOptionalBaseInterfaces_; }
623 {
return directProperties_; }
640 bool published, OUString base,
641 std::vector< OUString >&& annotations):
643 SORT_INTERFACE_BASED_SINGLETON, published,
std::move(annotations)),
647 const OUString&
getBase()
const {
return base_; }
659 bool published, OUString base,
660 std::vector< OUString >&& annotations):
665 const OUString&
getBase()
const {
return base_; }
685 virtual SAL_DLLPRIVATE
~Provider() noexcept override;
702 virtual SAL_DLLPRIVATE
~Manager() noexcept override;
704 SAL_DLLPRIVATE
rtl::Reference<
Provider > loadProvider(
705 OUString const & uri);
707 mutable
osl::Mutex mutex_;
std::vector< AnnotatedReference > const & getDirectOptionalBaseServices() const
std::vector< AnnotatedReference > const & getDirectMandatoryBaseInterfaces() const
SAL_DLLPRIVATE AccumulationBasedServiceEntity(bool published, std::vector< AnnotatedReference > &&directMandatoryBaseServices, std::vector< AnnotatedReference > &&directOptionalBaseServices, std::vector< AnnotatedReference > &&directMandatoryBaseInterfaces, std::vector< AnnotatedReference > &&directOptionalBaseInterfaces, std::vector< Property > &&directProperties, std::vector< OUString > &&annotations)
std::vector< AnnotatedReference > const & getDirectMandatoryBaseServices() const
std::vector< AnnotatedReference > const & getDirectOptionalBaseInterfaces() const
std::vector< Property > const & getDirectProperties() const
std::vector< Member > const & getMembers() const
SAL_DLLPRIVATE ConstantGroupEntity(bool published, std::vector< Member > &&members, std::vector< OUString > &&annotations)
@ SORT_ACCUMULATION_BASED_SERVICE
@ SORT_INTERFACE_BASED_SINGLETON
SAL_DLLPRIVATE Entity(Sort sort)
SAL_DLLPRIVATE EnumTypeEntity(bool published, std::vector< Member > &&members, std::vector< OUString > &&annotations)
std::vector< Member > const & getMembers() const
const OUString & getDirectBase() const
std::vector< Member > const & getDirectMembers() const
SAL_DLLPRIVATE ExceptionTypeEntity(bool published, OUString directBase, std::vector< Member > &&directMembers, std::vector< OUString > &&annotations)
SAL_DLLPRIVATE InterfaceBasedSingletonEntity(bool published, OUString base, std::vector< OUString > &&annotations)
const OUString & getBase() const
std::vector< AnnotatedReference > const & getDirectMandatoryBases() const
std::vector< Attribute > const & getDirectAttributes() const
std::vector< AnnotatedReference > const & getDirectOptionalBases() const
SAL_DLLPRIVATE InterfaceTypeEntity(bool published, std::vector< AnnotatedReference > &&directMandatoryBases, std::vector< AnnotatedReference > &&directOptionalBases, std::vector< Attribute > &&directAttributes, std::vector< Method > &&directMethods, std::vector< OUString > &&annotations)
std::vector< Method > const & getDirectMethods() const
virtual rtl::Reference< Entity > getNext(OUString *name)=0
SAL_DLLPRIVATE MapCursor()
virtual rtl::Reference< MapCursor > createCursor() const =0
virtual std::vector< OUString > getMemberNames() const =0
SAL_DLLPRIVATE ModuleEntity()
SAL_DLLPRIVATE NoSuchFileException(OUString uri)
SAL_DLLPRIVATE NoSuchFileException(NoSuchFileException const &other)
SAL_DLLPRIVATE PlainStructTypeEntity(bool published, OUString directBase, std::vector< Member > &&directMembers, std::vector< OUString > &&annotations)
const OUString & getDirectBase() const
std::vector< Member > const & getDirectMembers() const
SAL_DLLPRIVATE PolymorphicStructTypeTemplateEntity(bool published, std::vector< OUString > &&typeParameters, std::vector< Member > &&members, std::vector< OUString > &&annotations)
std::vector< Member > const & getMembers() const
std::vector< OUString > const & getTypeParameters() const
SAL_DLLPRIVATE Provider()
virtual rtl::Reference< Entity > findEntity(OUString const &name) const =0
virtual rtl::Reference< MapCursor > createRootCursor() const =0
std::vector< OUString > const & getAnnotations() const
SAL_DLLPRIVATE PublishableEntity(Sort sort, bool published, std::vector< OUString > &&annotations)
SAL_DLLPRIVATE ServiceBasedSingletonEntity(bool published, OUString base, std::vector< OUString > &&annotations)
const OUString & getBase() const
const OUString & getBase() const
SAL_DLLPRIVATE SingleInterfaceBasedServiceEntity(bool published, OUString base, std::vector< Constructor > &&constructors, std::vector< OUString > &&annotations)
std::vector< Constructor > const & getConstructors() const
const OUString & getType() const
SAL_DLLPRIVATE TypedefEntity(bool published, OUString type, std::vector< OUString > &&annotations)
#define LO_DLLPUBLIC_UNOIDL
const sal_uInt16 TYPE_FLOAT
const sal_uInt16 TYPE_DOUBLE
PyObject_HEAD PyUNO_callable_Internals * members
Property(OUString theName, OUString theType, Attributes theAttributes, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
std::vector< OUString > annotations
AnnotatedReference(OUString theName, std::vector< OUString > &&theAnnotations)
Member(OUString theName, ConstantValue const &theValue, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
ConstantValue(bool value)
ConstantValue(sal_uInt16 value)
ConstantValue(sal_Int64 value)
sal_uInt16 unsignedShortValue
ConstantValue(sal_Int8 value)
ConstantValue(double value)
sal_uInt64 unsignedHyperValue
ConstantValue(sal_Int16 value)
ConstantValue(sal_uInt32 value)
sal_uInt32 unsignedLongValue
ConstantValue(float value)
ConstantValue(sal_uInt64 value)
ConstantValue(sal_Int32 value)
Member(OUString theName, sal_Int32 theValue, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
Member(OUString theName, OUString theType, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
std::vector< OUString > getExceptions
std::vector< OUString > setExceptions
Attribute(OUString theName, OUString theType, bool theBound, bool theReadOnly, std::vector< OUString > &&theGetExceptions, std::vector< OUString > &&theSetExceptions, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
Parameter(OUString theName, OUString theType, Direction theDirection)
std::vector< Parameter > parameters
std::vector< OUString > exceptions
Method(OUString theName, OUString theReturnType, std::vector< Parameter > &&theParameters, std::vector< OUString > &&theExceptions, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
std::vector< OUString > annotations
Member(OUString theName, OUString theType, std::vector< OUString > &&theAnnotations)
std::vector< OUString > annotations
Member(OUString theName, OUString theType, bool theParameterized, std::vector< OUString > &&theAnnotations)
Parameter(OUString theName, OUString theType, bool theRest)
std::vector< Parameter > parameters
std::vector< OUString > annotations
std::vector< OUString > exceptions
Constructor(OUString theName, std::vector< Parameter > &&theParameters, std::vector< OUString > &&theExceptions, std::vector< OUString > &&theAnnotations)
std::vector< rtl::Reference< Provider > > providers_