namespace com::sun::star { namespace configuration { class XReadWriteAccess; } namespace container { class XHierarchicalNameAccess; class XHierarchicalNameReplace; class XNameAccess; class XNameContainer;
} namespace uno { class XComponentContext; }
}
namespace comphelper {
namespace detail { class ConfigurationWrapper; }
/// A batch of configuration changes that is committed as a whole. /// /// Client code needs to call commit explicitly; otherwise the changes are lost /// when the instance is destroyed. /// /// This is the only class from this header file that client code should use /// directly. class COMPHELPER_DLLPUBLIC ConfigurationChanges { public: static std::shared_ptr<ConfigurationChanges> create(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>());
css::uno::Reference< css::configuration::XReadWriteAccess > access_; // should really be a css.configuration.ReadOnlyAccess (with added // css.beans.XHierarchicalPropertySetInfo), but then // configmgr::Access::asProperty() would report all properties as // READONLY, so isReadOnly() would not work
};
// Avoid using the config layer and rely on defaults which is only useful // for special test tool targets (typically fuzzing) where start-up speed // is of the essence #ifdefined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
constexpr bool IsFuzzing() { returntrue; } #else
COMPHELPER_DLLPUBLIC bool IsFuzzing(); #endif
COMPHELPER_DLLPUBLIC void EnableFuzzing();
/// A type-safe wrapper around a (non-localized) configuration property. /// /// Automatically generated headers for the various configuration properties /// derive from this template and make available its member functions to access /// each given configuration property. template< typename T, typename U > struct ConfigurationProperty
{ /// Get the read-only status of the given (non-localized) configuration /// property. staticbool isReadOnly(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ return detail::ConfigurationWrapper::get(context).isReadOnly(T::path());
}
/// Get the value of the given (non-localized) configuration property. /// /// For nillable properties, U is of type std::optional<U'>. static U get(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ if (comphelper::IsFuzzing()) return U(); // Folding this into one statement causes a bogus error at least with // Red Hat GCC 4.6.2-1:
css::uno::Any a(
detail::ConfigurationWrapper::get(context).getPropertyValue(
T::path())); return detail::Convert< U >::fromAny(a);
}
/// Set the value of the given (non-localized) configuration property, via a /// given changes batch. /// /// For nillable properties, U is of type std::optional<U'>. staticvoid set(
U const & value,
std::shared_ptr< ConfigurationChanges > const & batch)
{
comphelper::detail::ConfigurationWrapper::setPropertyValue(
batch, T::path(), detail::Convert< U >::toAny(value));
}
/// A type-safe wrapper around a localized configuration property. /// /// Automatically generated headers for the various localized configuration /// properties derive from this template and make available its member functions /// to access each given localized configuration property. template< typename T, typename U > struct ConfigurationLocalizedProperty
{ /// Get the read-only status of the given (localized) configuration /// property. staticbool isReadOnly(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ return detail::ConfigurationWrapper::get(context).isReadOnly(T::path());
}
/// Get the value of the given localized configuration property, for the /// locale currently set at the /// com.sun.star.configuration.theDefaultProvider. /// /// For nillable properties, U is of type std::optional<U'>. static U get(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ // Folding this into one statement causes a bogus error at least with // Red Hat GCC 4.6.2-1:
css::uno::Any a(
detail::ConfigurationWrapper::get(context).
getLocalizedPropertyValue(T::path())); return detail::Convert< U >::fromAny(a);
}
/// Set the value of the given localized configuration property, for the /// locale currently set at the /// com.sun.star.configuration.theDefaultProvider, via a given changes /// batch. /// /// For nillable properties, U is of type std::optional<U'>. staticvoid set(
U const & value,
std::shared_ptr< ConfigurationChanges > const & batch)
{
comphelper::detail::ConfigurationWrapper::setLocalizedPropertyValue(
batch, T::path(), detail::Convert< U >::toAny(value));
}
/// A type-safe wrapper around a configuration group. /// /// Automatically generated headers for the various configuration groups derive /// from this template and make available its member functions to access each /// given configuration group. template< typename T > struct ConfigurationGroup { /// Get the read-only status of the given configuration group. staticbool isReadOnly(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ return detail::ConfigurationWrapper::get(context).isReadOnly(T::path());
}
/// Get read-only access to the given configuration group. static css::uno::Reference<
css::container::XHierarchicalNameAccess >
get(css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ return detail::ConfigurationWrapper::get(context).getGroupReadOnly(
T::path());
}
/// Get read/write access to the given configuration group, storing any /// modifications via the given changes batch. static css::uno::Reference<
css::container::XHierarchicalNameReplace >
get(std::shared_ptr< ConfigurationChanges > const & batch)
{ return comphelper::detail::ConfigurationWrapper::getGroupReadWrite(
batch, T::path());
}
/// A type-safe wrapper around a configuration set. /// /// Automatically generated headers for the various configuration sets derive /// from this template and make available its member functions to access each /// given configuration set. template< typename T > struct ConfigurationSet { /// Get the read-only status of the given configuration set. staticbool isReadOnly(
css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ return detail::ConfigurationWrapper::get(context).isReadOnly(T::path());
}
/// Get read-only access to the given configuration set. static
css::uno::Reference< css::container::XNameAccess >
get(css::uno::Reference<css::uno::XComponentContext> const & context
= css::uno::Reference<css::uno::XComponentContext>())
{ return detail::ConfigurationWrapper::get(context).getSetReadOnly(
T::path());
}
/// Get read/write access to the given configuration set, storing any /// modifications via the given changes batch. static
css::uno::Reference< css::container::XNameContainer >
get(std::shared_ptr< ConfigurationChanges > const & batch)
{ return comphelper::detail::ConfigurationWrapper::getSetReadWrite(
batch, T::path());
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.