[Libreoffice-commits] .: comphelper/inc comphelper/Library_comphelp.mk comphelper/Package_inc.mk comphelper/source cui/source officecfg/prj officecfg/registry sfx2/source svl/source unotools/inc unotools/Library_utl.mk unotools/Package_inc.mk unotools/source

Stephan Bergmann sbergmann at kemper.freedesktop.org
Tue Jan 31 06:51:57 PST 2012


 comphelper/Library_comphelp.mk              |    1 
 comphelper/Package_inc.mk                   |    1 
 comphelper/inc/comphelper/configuration.hxx |  353 ++++++++++++++++++++++++++++
 comphelper/source/misc/configuration.cxx    |  233 ++++++++++++++++++
 cui/source/options/fontsubs.cxx             |    4 
 cui/source/options/optmemory.cxx            |    4 
 officecfg/prj/build.lst                     |    2 
 officecfg/registry/cppheader.xsl            |   10 
 sfx2/source/appl/appbas.cxx                 |    4 
 sfx2/source/appl/appcfg.cxx                 |    4 
 svl/source/config/asiancfg.cxx              |    6 
 unotools/Library_utl.mk                     |    1 
 unotools/Package_inc.mk                     |    1 
 unotools/inc/unotools/configuration.hxx     |  353 ----------------------------
 unotools/source/config/configuration.cxx    |  232 ------------------
 15 files changed, 605 insertions(+), 604 deletions(-)

New commits:
commit ca3e3e7e3198f492b2d4608ffc5420e657d99b00
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Jan 31 15:36:49 2012 +0100

    Move unotools/configuration.hxx to comphelper
    
    ...so that other code in comphelper can use it.

diff --git a/comphelper/Library_comphelp.mk b/comphelper/Library_comphelp.mk
index 7534de6..2b37596 100644
--- a/comphelper/Library_comphelp.mk
+++ b/comphelper/Library_comphelp.mk
@@ -80,6 +80,7 @@ $(eval $(call gb_Library_add_exception_objects,comphelper,\
     comphelper/source/misc/componentbase \
     comphelper/source/misc/componentcontext \
     comphelper/source/misc/componentmodule \
+    comphelper/source/misc/configuration \
     comphelper/source/misc/configurationhelper \
     comphelper/source/misc/docpasswordhelper \
     comphelper/source/misc/docpasswordrequest \
diff --git a/comphelper/Package_inc.mk b/comphelper/Package_inc.mk
index ba1344a..7ed759b 100644
--- a/comphelper/Package_inc.mk
+++ b/comphelper/Package_inc.mk
@@ -130,6 +130,7 @@ $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/seqstream.hxx,co
 $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/namecontainer.hxx,comphelper/namecontainer.hxx))
 $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/processfactory.hxx,comphelper/processfactory.hxx))
 $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/sequenceashashmap.hxx,comphelper/sequenceashashmap.hxx))
+$(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/configuration.hxx,comphelper/configuration.hxx))
 $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/configurationhelper.hxx,comphelper/configurationhelper.hxx))
 
 # vim: set noet sw=4 ts=4:
diff --git a/comphelper/inc/comphelper/configuration.hxx b/comphelper/inc/comphelper/configuration.hxx
new file mode 100644
index 0000000..85f45f9
--- /dev/null
+++ b/comphelper/inc/comphelper/configuration.hxx
@@ -0,0 +1,353 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <sbergman at redhat.com>
+ * (initial developer)
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef INCLUDED_COMPHELPER_CONFIGURATION_HXX
+#define INCLUDED_COMPHELPER_CONFIGURATION_HXX
+
+#include "sal/config.h"
+
+#include "boost/noncopyable.hpp"
+#include "boost/optional.hpp"
+#include "boost/shared_ptr.hpp"
+#include "com/sun/star/uno/Any.hxx"
+#include "com/sun/star/uno/Reference.hxx"
+#include "comphelper/comphelperdllapi.h"
+#include "sal/types.h"
+
+namespace com { namespace sun { namespace star {
+    namespace configuration { class XReadWriteAccess; }
+    namespace container {
+        class XHierarchicalNameAccess;
+        class XHierarchicalNameReplace;
+        class XNameAccess;
+        class XNameContainer;
+    }
+    namespace uno { class XComponentContext; }
+} } }
+namespace rtl { class OUString; }
+
+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: private boost::noncopyable {
+public:
+    static boost::shared_ptr< ConfigurationChanges > create(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context);
+
+    ~ConfigurationChanges();
+
+    void commit() const;
+
+private:
+    SAL_DLLPRIVATE ConfigurationChanges(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context);
+
+    SAL_DLLPRIVATE void setPropertyValue(
+        rtl::OUString const & path, com::sun::star::uno::Any const & value)
+        const;
+
+    SAL_DLLPRIVATE com::sun::star::uno::Reference<
+        com::sun::star::container::XHierarchicalNameReplace >
+    getGroup(rtl::OUString const & path) const;
+
+    SAL_DLLPRIVATE
+    com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >
+    getSet(rtl::OUString const & path) const;
+
+    com::sun::star::uno::Reference<
+        com::sun::star::configuration::XReadWriteAccess > access_;
+
+    friend class detail::ConfigurationWrapper;
+};
+
+namespace detail {
+
+/// @internal
+class COMPHELPER_DLLPUBLIC ConfigurationWrapper: private boost::noncopyable {
+public:
+    static ConfigurationWrapper const & get(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context);
+
+    SAL_DLLPRIVATE explicit ConfigurationWrapper(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context);
+
+    SAL_DLLPRIVATE ~ConfigurationWrapper();
+
+    com::sun::star::uno::Any getPropertyValue(rtl::OUString const & path) const;
+
+    void setPropertyValue(
+        boost::shared_ptr< ConfigurationChanges > const & batch,
+        rtl::OUString const & path, com::sun::star::uno::Any const & value)
+        const;
+
+    com::sun::star::uno::Any getLocalizedPropertyValue(
+        rtl::OUString const & path) const;
+
+    void setLocalizedPropertyValue(
+        boost::shared_ptr< ConfigurationChanges > const & batch,
+        rtl::OUString const & path, com::sun::star::uno::Any const & value)
+        const;
+
+    com::sun::star::uno::Reference<
+        com::sun::star::container::XHierarchicalNameAccess >
+    getGroupReadOnly(rtl::OUString const & path) const;
+
+    com::sun::star::uno::Reference<
+        com::sun::star::container::XHierarchicalNameReplace >
+    getGroupReadWrite(
+        boost::shared_ptr< ConfigurationChanges > const & batch,
+        rtl::OUString const & path) const;
+
+    com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >
+    getSetReadOnly(rtl::OUString const & path) const;
+
+    com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >
+    getSetReadWrite(
+        boost::shared_ptr< ConfigurationChanges > const & batch,
+        rtl::OUString const & path) const;
+
+    boost::shared_ptr< ConfigurationChanges > createChanges() const;
+
+private:
+    rtl::OUString extendLocalizedPath(rtl::OUString const & path) const;
+
+    com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+        context_;
+
+    com::sun::star::uno::Reference<
+        com::sun::star::container::XHierarchicalNameAccess > access_;
+};
+
+/// @internal
+template< typename T > struct Convert: private boost::noncopyable {
+    static com::sun::star::uno::Any toAny(T const & value)
+    { return com::sun::star::uno::makeAny(value); }
+
+    static T fromAny(com::sun::star::uno::Any const & value)
+    { return value.get< T >(); }
+
+private:
+    Convert(); // not defined
+    ~Convert(); // not defined
+};
+
+/// @internal
+template< typename T > struct Convert< boost::optional< T > >:
+    private boost::noncopyable
+{
+    static com::sun::star::uno::Any toAny(boost::optional< T > const & value) {
+        return value
+            ? com::sun::star::uno::makeAny(value.get())
+            : com::sun::star::uno::Any();
+    }
+
+    static boost::optional< T > fromAny(com::sun::star::uno::Any const & value)
+    {
+        return value.hasValue()
+            ? boost::optional< T >(value.get< T >()) : boost::optional< T >();
+    }
+
+private:
+    Convert(); // not defined
+    ~Convert(); // not defined
+};
+
+}
+
+/// 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:
+    private boost::noncopyable
+{
+    /// Get the value of the given (non-localized) configuration property.
+    ///
+    /// For nillable properties, U is of type boost::optional<U'>.
+    static U get(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context)
+    {
+        // Folding this into one statement causes a bogus error at least with
+        // Red Hat GCC 4.6.2-1:
+        com::sun::star::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 boost::optional<U'>.
+    static void set(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context,
+        boost::shared_ptr< ConfigurationChanges > const & batch,
+        U const & value)
+    {
+        detail::ConfigurationWrapper::get(context).setPropertyValue(
+            batch, T::path(), detail::Convert< U >::toAny(value));
+    }
+
+private:
+    ConfigurationProperty(); // not defined
+    ~ConfigurationProperty(); // not defined
+};
+
+/// 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:
+    private boost::noncopyable
+{
+    /// 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 boost::optional<U'>.
+    static U get(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context)
+    {
+        // Folding this into one statement causes a bogus error at least with
+        // Red Hat GCC 4.6.2-1:
+        com::sun::star::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 boost::optional<U'>.
+    static void set(
+        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context,
+        boost::shared_ptr< ConfigurationChanges > const & batch,
+        U const & value)
+    {
+        detail::ConfigurationWrapper::get(context).setLocalizedPropertyValue(
+            batch, T::path(), detail::Convert< U >::toAny(value));
+    }
+
+private:
+    ConfigurationLocalizedProperty(); // not defined
+    ~ConfigurationLocalizedProperty(); // not defined
+};
+
+/// 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: private boost::noncopyable {
+    /// Get read-only access to the given configuration group.
+    static com::sun::star::uno::Reference<
+        com::sun::star::container::XHierarchicalNameAccess >
+    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context)
+    {
+        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 com::sun::star::uno::Reference<
+        com::sun::star::container::XHierarchicalNameReplace >
+    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context,
+        boost::shared_ptr< ConfigurationChanges > const & batch)
+    {
+        return detail::ConfigurationWrapper::get(context).getGroupReadWrite(
+            batch, T::path());
+    }
+
+private:
+    ConfigurationGroup(); // not defined
+    ~ConfigurationGroup(); // not defined
+};
+
+/// 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: private boost::noncopyable {
+    /// Get read-only access to the given configuration set.
+    static
+    com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >
+    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context)
+    {
+        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
+    com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >
+    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
+            const & context,
+        boost::shared_ptr< ConfigurationChanges > const & batch)
+    {
+        return detail::ConfigurationWrapper::get(context).getSetReadWrite(
+            batch, T::path());
+    }
+
+private:
+    ConfigurationSet(); // not defined
+    ~ConfigurationSet(); // not defined
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/comphelper/source/misc/configuration.cxx b/comphelper/source/misc/configuration.cxx
new file mode 100644
index 0000000..8954f4f
--- /dev/null
+++ b/comphelper/source/misc/configuration.cxx
@@ -0,0 +1,233 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <sbergman at redhat.com>
+ * (initial developer)
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "sal/config.h"
+
+#include <cassert>
+
+#include "boost/shared_ptr.hpp"
+#include "com/sun/star/configuration/ReadOnlyAccess.hpp"
+#include "com/sun/star/configuration/ReadWriteAccess.hpp"
+#include "com/sun/star/configuration/XReadWriteAccess.hpp"
+#include "com/sun/star/configuration/theDefaultProvider.hpp"
+#include "com/sun/star/container/XHierarchicalNameAccess.hpp"
+#include "com/sun/star/container/XHierarchicalNameReplace.hpp"
+#include "com/sun/star/container/XNameAccess.hpp"
+#include "com/sun/star/container/XNameContainer.hpp"
+#include "com/sun/star/lang/Locale.hpp"
+#include "com/sun/star/lang/XLocalizable.hpp"
+#include "com/sun/star/uno/Any.hxx"
+#include "com/sun/star/uno/Reference.hxx"
+#include "com/sun/star/uno/XComponentContext.hpp"
+#include "comphelper/configuration.hxx"
+#include "rtl/instance.hxx"
+#include "rtl/oustringostreaminserter.hxx"
+#include "rtl/ustrbuf.hxx"
+#include "rtl/ustring.h"
+#include "rtl/ustring.hxx"
+#include "sal/log.hxx"
+
+namespace {
+
+namespace css = com::sun::star;
+
+struct TheConfigurationWrapper:
+    public rtl::StaticWithArg<
+        comphelper::detail::ConfigurationWrapper,
+        css::uno::Reference< css::uno::XComponentContext >,
+        TheConfigurationWrapper >
+{};
+
+}
+
+boost::shared_ptr< comphelper::ConfigurationChanges >
+comphelper::ConfigurationChanges::create(
+    css::uno::Reference< css::uno::XComponentContext > const & context)
+{
+    return TheConfigurationWrapper::get(context).createChanges();
+}
+
+
+comphelper::ConfigurationChanges::~ConfigurationChanges() {}
+
+void comphelper::ConfigurationChanges::commit() const {
+    access_->commitChanges();
+}
+
+comphelper::ConfigurationChanges::ConfigurationChanges(
+    css::uno::Reference< css::uno::XComponentContext > const & context):
+    access_(css::configuration::ReadWriteAccess::create(context))
+{}
+
+void comphelper::ConfigurationChanges::setPropertyValue(
+    rtl::OUString const & path, css::uno::Any const & value) const
+{
+    access_->replaceByHierarchicalName(path, value);
+}
+
+css::uno::Reference< css::container::XHierarchicalNameReplace >
+comphelper::ConfigurationChanges::getGroup(rtl::OUString const & path) const
+{
+    return css::uno::Reference< css::container::XHierarchicalNameReplace >(
+        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
+}
+
+css::uno::Reference< css::container::XNameContainer >
+comphelper::ConfigurationChanges::getSet(rtl::OUString const & path) const
+{
+    return css::uno::Reference< css::container::XNameContainer >(
+        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
+}
+
+comphelper::detail::ConfigurationWrapper const &
+comphelper::detail::ConfigurationWrapper::get(
+    css::uno::Reference< css::uno::XComponentContext > const & context)
+{
+    return TheConfigurationWrapper::get(context);
+}
+
+comphelper::detail::ConfigurationWrapper::ConfigurationWrapper(
+    css::uno::Reference< css::uno::XComponentContext > const & context):
+    context_(context), access_(css::configuration::ReadOnlyAccess::get(context))
+{}
+
+comphelper::detail::ConfigurationWrapper::~ConfigurationWrapper() {}
+
+css::uno::Any comphelper::detail::ConfigurationWrapper::getPropertyValue(
+    rtl::OUString const & path) const
+{
+    return access_->getByHierarchicalName(path);
+}
+
+void comphelper::detail::ConfigurationWrapper::setPropertyValue(
+    boost::shared_ptr< ConfigurationChanges > const & batch,
+    rtl::OUString const & path, com::sun::star::uno::Any const & value) const
+{
+    assert(batch.get() != 0);
+    batch->setPropertyValue(path, value);
+}
+
+css::uno::Any
+comphelper::detail::ConfigurationWrapper::getLocalizedPropertyValue(
+    rtl::OUString const & path) const
+{
+    return access_->getByHierarchicalName(extendLocalizedPath(path));
+}
+
+void comphelper::detail::ConfigurationWrapper::setLocalizedPropertyValue(
+    boost::shared_ptr< ConfigurationChanges > const & batch,
+    rtl::OUString const & path, com::sun::star::uno::Any const & value) const
+{
+    assert(batch.get() != 0);
+    batch->setPropertyValue(extendLocalizedPath(path), value);
+}
+
+css::uno::Reference< css::container::XHierarchicalNameAccess >
+comphelper::detail::ConfigurationWrapper::getGroupReadOnly(
+    rtl::OUString const & path) const
+{
+    return css::uno::Reference< css::container::XHierarchicalNameAccess >(
+        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
+}
+
+css::uno::Reference< css::container::XHierarchicalNameReplace >
+comphelper::detail::ConfigurationWrapper::getGroupReadWrite(
+    boost::shared_ptr< ConfigurationChanges > const & batch,
+    rtl::OUString const & path) const
+{
+    assert(batch.get() != 0);
+    return batch->getGroup(path);
+}
+
+css::uno::Reference< css::container::XNameAccess >
+comphelper::detail::ConfigurationWrapper::getSetReadOnly(
+    rtl::OUString const & path) const
+{
+    return css::uno::Reference< css::container::XNameAccess >(
+        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
+}
+
+css::uno::Reference< css::container::XNameContainer >
+comphelper::detail::ConfigurationWrapper::getSetReadWrite(
+    boost::shared_ptr< ConfigurationChanges > const & batch,
+    rtl::OUString const & path) const
+{
+    assert(batch.get() != 0);
+    return batch->getSet(path);
+}
+
+boost::shared_ptr< comphelper::ConfigurationChanges >
+comphelper::detail::ConfigurationWrapper::createChanges() const {
+    return boost::shared_ptr< ConfigurationChanges >(
+        new ConfigurationChanges(context_));
+}
+
+rtl::OUString comphelper::detail::ConfigurationWrapper::extendLocalizedPath(
+    rtl::OUString const & path) const
+{
+    rtl::OUStringBuffer buf(path);
+    buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/['"));
+    css::lang::Locale locale(
+        css::uno::Reference< css::lang::XLocalizable >(
+            css::configuration::theDefaultProvider::get(context_),
+            css::uno::UNO_QUERY_THROW)->
+        getLocale());
+    SAL_WARN_IF(
+        locale.Language.indexOf('-') == -1, "comphelper",
+        "Locale language \"" << locale.Language << "\" contains \"-\"");
+    assert(locale.Language.indexOf('&') == -1);
+    assert(locale.Language.indexOf('"') == -1);
+    assert(locale.Language.indexOf('\'') == -1);
+    buf.append(locale.Language);
+    SAL_WARN_IF(
+        locale.Country.isEmpty() && !locale.Variant.isEmpty(), "comphelper",
+        "Locale has empty country but non-empty variant \"" << locale.Variant
+            << '"');
+    if (!locale.Country.isEmpty()) {
+        buf.append('-');
+        SAL_WARN_IF(
+            locale.Country.indexOf('-') == -1, "comphelper",
+            "Locale language \"" << locale.Country << "\" contains \"-\"");
+        assert(locale.Country.indexOf('&') == -1);
+        assert(locale.Country.indexOf('"') == -1);
+        assert(locale.Country.indexOf('\'') == -1);
+        buf.append(locale.Country);
+        if (!locale.Variant.isEmpty()) {
+            buf.append('-');
+            assert(locale.Variant.indexOf('&') == -1);
+            assert(locale.Variant.indexOf('"') == -1);
+            assert(locale.Variant.indexOf('\'') == -1);
+            buf.append(locale.Variant);
+        }
+    }
+    buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("']"));
+    return buf.makeStringAndClear();
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/options/fontsubs.cxx b/cui/source/options/fontsubs.cxx
index 0060757..961c40a 100644
--- a/cui/source/options/fontsubs.cxx
+++ b/cui/source/options/fontsubs.cxx
@@ -231,8 +231,8 @@ sal_Bool  SvxFontSubstTabPage::FillItemSet( SfxItemSet& )
     if(pConfig->IsModified())
         pConfig->Commit();
     pConfig->Apply();
-    boost::shared_ptr< unotools::ConfigurationChanges > batch(
-        unotools::ConfigurationChanges::create(
+    boost::shared_ptr< comphelper::ConfigurationChanges > batch(
+        comphelper::ConfigurationChanges::create(
             comphelper::getProcessComponentContext()));
     if(aFontHeightLB.GetSavedValue() != aFontHeightLB.GetSelectEntryPos())
         officecfg::Office::Common::Font::SourceViewFont::FontHeight::set(
diff --git a/cui/source/options/optmemory.cxx b/cui/source/options/optmemory.cxx
index 82782f5..69bdf4e 100644
--- a/cui/source/options/optmemory.cxx
+++ b/cui/source/options/optmemory.cxx
@@ -184,8 +184,8 @@ sal_Bool OfaMemoryOptionsPage::FillItemSet( SfxItemSet& rSet )
 {
     sal_Bool bModified = sal_False;
 
-    boost::shared_ptr< unotools::ConfigurationChanges > batch(
-        unotools::ConfigurationChanges::create(
+    boost::shared_ptr< comphelper::ConfigurationChanges > batch(
+        comphelper::ConfigurationChanges::create(
             comphelper::getProcessComponentContext()));
 
     // Undo-Schritte
diff --git a/officecfg/prj/build.lst b/officecfg/prj/build.lst
index 6a1f8aa..da5651f 100644
--- a/officecfg/prj/build.lst
+++ b/officecfg/prj/build.lst
@@ -1,2 +1,2 @@
-oc  officecfg   :    TRANSLATIONS:translations soltools solenv unotools LIBXSLT:libxslt NULL
+oc  officecfg   :    TRANSLATIONS:translations comphelper soltools solenv LIBXSLT:libxslt NULL
 oc  officecfg\prj nmake - all oc_prj   NULL
diff --git a/officecfg/registry/cppheader.xsl b/officecfg/registry/cppheader.xsl
index 85ccafc..372876e 100644
--- a/officecfg/registry/cppheader.xsl
+++ b/officecfg/registry/cppheader.xsl
@@ -28,7 +28,7 @@
 -->
 
 <!-- Generate a .hxx file with type-safe C++ abstractions (based on
-     unotools/configuration.hxx) for all the <prop> and <set> elements in an
+     comphelper/configuration.hxx) for all the <prop> and <set> elements in an
      .xcs file.
 
      Takes up to three parameters ns1, ns2, ns3 that represent the .xcs file's
@@ -110,7 +110,7 @@
       <xsl:if test=".//prop/@oor:type = 'xs:short' or .//prop/@oor:type = 'xs:int' or .//prop/@oor:type = 'xs:long' or .//prop/@oor:type = 'xs:hexBinary'">
         <xsl:text>#include "sal/types.h"&#xA;</xsl:text>
       </xsl:if>
-      <xsl:text>#include "unotools/configuration.hxx"&#xA;</xsl:text>
+      <xsl:text>#include "comphelper/configuration.hxx"&#xA;</xsl:text>
       <xsl:text>&#xA;</xsl:text>
       <xsl:text>namespace officecfg { namespace </xsl:text>
       <xsl:value-of select="$ns1"/>
@@ -145,7 +145,7 @@
       <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/>
       <xsl:text>struct </xsl:text>
       <xsl:value-of select="$name"/>
-      <xsl:text>: public unotools::ConfigurationGroup&lt; </xsl:text>
+      <xsl:text>: public comphelper::ConfigurationGroup&lt; </xsl:text>
       <xsl:value-of select="$name"/>
       <xsl:text>&gt; {&#xA;</xsl:text>
       <xsl:text>    static rtl::OUString path() { return rtl::OUString(<!--
@@ -179,7 +179,7 @@
     <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/>
     <xsl:text>struct </xsl:text>
     <xsl:value-of select="$name"/>
-    <xsl:text>: public unotools::ConfigurationSet&lt; </xsl:text>
+    <xsl:text>: public comphelper::ConfigurationSet&lt; </xsl:text>
     <xsl:value-of select="$name"/>
     <xsl:text>&gt; {&#xA;</xsl:text>
     <xsl:text>    static rtl::OUString path() { return rtl::OUString(<!--
@@ -204,7 +204,7 @@
     <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/>
     <xsl:text>struct </xsl:text>
     <xsl:value-of select="$name"/>
-    <xsl:text>: public unotools::</xsl:text>
+    <xsl:text>: public comphelper::</xsl:text>
     <xsl:choose>
       <xsl:when test="@oor:localized = 'true'">
         <xsl:text>ConfigurationLocalizedProperty</xsl:text>
diff --git a/sfx2/source/appl/appbas.cxx b/sfx2/source/appl/appbas.cxx
index 660f9a1..58b95c0 100644
--- a/sfx2/source/appl/appbas.cxx
+++ b/sfx2/source/appl/appbas.cxx
@@ -182,8 +182,8 @@ void SfxApplication::PropExec_Impl( SfxRequest &rReq )
         case SID_ATTR_UNDO_COUNT:
         {
             SFX_REQUEST_ARG(rReq, pCountItem, SfxUInt16Item, nSID, sal_False);
-            boost::shared_ptr< unotools::ConfigurationChanges > batch(
-                unotools::ConfigurationChanges::create(
+            boost::shared_ptr< comphelper::ConfigurationChanges > batch(
+                comphelper::ConfigurationChanges::create(
                     comphelper::getProcessComponentContext()));
             officecfg::Office::Common::Undo::Steps::set(
                 comphelper::getProcessComponentContext(), batch,
diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx
index 86d02a6..006d977 100644
--- a/sfx2/source/appl/appcfg.cxx
+++ b/sfx2/source/appl/appcfg.cxx
@@ -542,8 +542,8 @@ void SfxApplication::SetOptions_Impl( const SfxItemSet& rSet )
     SvtSecurityOptions aSecurityOptions;
     SvtPathOptions aPathOptions;
     SvtMiscOptions aMiscOptions;
-    boost::shared_ptr< unotools::ConfigurationChanges > batch(
-        unotools::ConfigurationChanges::create(
+    boost::shared_ptr< comphelper::ConfigurationChanges > batch(
+        comphelper::ConfigurationChanges::create(
             comphelper::getProcessComponentContext()));
     if ( SFX_ITEM_SET == rSet.GetItemState(rPool.GetWhich(SID_ATTR_BUTTON_OUTSTYLE3D), sal_True, &pItem) )
     {
diff --git a/svl/source/config/asiancfg.cxx b/svl/source/config/asiancfg.cxx
index 51c2085..2e9e43f 100644
--- a/svl/source/config/asiancfg.cxx
+++ b/svl/source/config/asiancfg.cxx
@@ -41,6 +41,7 @@
 #include "com/sun/star/uno/Any.hxx"
 #include "com/sun/star/uno/Reference.hxx"
 #include "com/sun/star/uno/Sequence.hxx"
+#include "comphelper/configuration.hxx"
 #include "comphelper/processfactory.hxx"
 #include "officecfg/Office/Common.hxx"
 #include "rtl/oustringostreaminserter.hxx"
@@ -50,7 +51,6 @@
 #include "sal/log.hxx"
 #include "sal/types.h"
 #include "svl/asiancfg.hxx"
-#include "unotools/configuration.hxx"
 
 namespace {
 
@@ -84,12 +84,12 @@ rtl::OUString toString(css::lang::Locale const & locale) {
 struct SvxAsianConfig::Impl: private boost::noncopyable {
     Impl():
         context(comphelper::getProcessComponentContext()),
-        batch(unotools::ConfigurationChanges::create(context))
+        batch(comphelper::ConfigurationChanges::create(context))
     {}
 
     css::uno::Reference< css::uno::XComponentContext > context;
 
-    boost::shared_ptr< unotools::ConfigurationChanges > batch;
+    boost::shared_ptr< comphelper::ConfigurationChanges > batch;
 };
 
 SvxAsianConfig::SvxAsianConfig(): impl_(new Impl) {}
diff --git a/unotools/Library_utl.mk b/unotools/Library_utl.mk
index 71ca9c8..5454edf 100644
--- a/unotools/Library_utl.mk
+++ b/unotools/Library_utl.mk
@@ -80,7 +80,6 @@ $(eval $(call gb_Library_add_exception_objects,utl,\
     unotools/source/config/configmgr \
     unotools/source/config/confignode \
     unotools/source/config/configpathes \
-    unotools/source/config/configuration \
     unotools/source/config/configvaluecontainer \
     unotools/source/config/defaultoptions \
     unotools/source/config/docinfohelper \
diff --git a/unotools/Package_inc.mk b/unotools/Package_inc.mk
index 426a8c0..46cb143 100644
--- a/unotools/Package_inc.mk
+++ b/unotools/Package_inc.mk
@@ -44,7 +44,6 @@ $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configitem.hxx,unoto
 $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configmgr.hxx,unotools/configmgr.hxx))
 $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/confignode.hxx,unotools/confignode.hxx))
 $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configpathes.hxx,unotools/configpathes.hxx))
-$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configuration.hxx,unotools/configuration.hxx))
 $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configvaluecontainer.hxx,unotools/configvaluecontainer.hxx))
 $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/datetime.hxx,unotools/datetime.hxx))
 $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/defaultoptions.hxx,unotools/defaultoptions.hxx))
diff --git a/unotools/inc/unotools/configuration.hxx b/unotools/inc/unotools/configuration.hxx
deleted file mode 100644
index f308aa8..0000000
--- a/unotools/inc/unotools/configuration.hxx
+++ /dev/null
@@ -1,353 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Version: MPL 1.1 / GPLv3+ / LGPLv3+
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License or as specified alternatively below. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * Major Contributor(s):
- * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <sbergman at redhat.com>
- * (initial developer)
- *
- * All Rights Reserved.
- *
- * For minor contributions see the git repository.
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
- * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
- * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
- * instead of those above.
- */
-
-#ifndef INCLUDED_UNOTOOLS_CONFIGURATION_HXX
-#define INCLUDED_UNOTOOLS_CONFIGURATION_HXX
-
-#include "sal/config.h"
-
-#include "boost/noncopyable.hpp"
-#include "boost/optional.hpp"
-#include "boost/shared_ptr.hpp"
-#include "com/sun/star/uno/Any.hxx"
-#include "com/sun/star/uno/Reference.hxx"
-#include "sal/types.h"
-#include "unotools/unotoolsdllapi.h"
-
-namespace com { namespace sun { namespace star {
-    namespace configuration { class XReadWriteAccess; }
-    namespace container {
-        class XHierarchicalNameAccess;
-        class XHierarchicalNameReplace;
-        class XNameAccess;
-        class XNameContainer;
-    }
-    namespace uno { class XComponentContext; }
-} } }
-namespace rtl { class OUString; }
-
-namespace unotools {
-
-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 UNOTOOLS_DLLPUBLIC ConfigurationChanges: private boost::noncopyable {
-public:
-    static boost::shared_ptr< ConfigurationChanges > create(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context);
-
-    ~ConfigurationChanges();
-
-    void commit() const;
-
-private:
-    SAL_DLLPRIVATE ConfigurationChanges(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context);
-
-    SAL_DLLPRIVATE void setPropertyValue(
-        rtl::OUString const & path, com::sun::star::uno::Any const & value)
-        const;
-
-    SAL_DLLPRIVATE com::sun::star::uno::Reference<
-        com::sun::star::container::XHierarchicalNameReplace >
-    getGroup(rtl::OUString const & path) const;
-
-    SAL_DLLPRIVATE
-    com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >
-    getSet(rtl::OUString const & path) const;
-
-    com::sun::star::uno::Reference<
-        com::sun::star::configuration::XReadWriteAccess > access_;
-
-    friend class detail::ConfigurationWrapper;
-};
-
-namespace detail {
-
-/// @internal
-class UNOTOOLS_DLLPUBLIC ConfigurationWrapper: private boost::noncopyable {
-public:
-    static ConfigurationWrapper const & get(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context);
-
-    SAL_DLLPRIVATE explicit ConfigurationWrapper(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context);
-
-    SAL_DLLPRIVATE ~ConfigurationWrapper();
-
-    com::sun::star::uno::Any getPropertyValue(rtl::OUString const & path) const;
-
-    void setPropertyValue(
-        boost::shared_ptr< ConfigurationChanges > const & batch,
-        rtl::OUString const & path, com::sun::star::uno::Any const & value)
-        const;
-
-    com::sun::star::uno::Any getLocalizedPropertyValue(
-        rtl::OUString const & path) const;
-
-    void setLocalizedPropertyValue(
-        boost::shared_ptr< ConfigurationChanges > const & batch,
-        rtl::OUString const & path, com::sun::star::uno::Any const & value)
-        const;
-
-    com::sun::star::uno::Reference<
-        com::sun::star::container::XHierarchicalNameAccess >
-    getGroupReadOnly(rtl::OUString const & path) const;
-
-    com::sun::star::uno::Reference<
-        com::sun::star::container::XHierarchicalNameReplace >
-    getGroupReadWrite(
-        boost::shared_ptr< ConfigurationChanges > const & batch,
-        rtl::OUString const & path) const;
-
-    com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >
-    getSetReadOnly(rtl::OUString const & path) const;
-
-    com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >
-    getSetReadWrite(
-        boost::shared_ptr< ConfigurationChanges > const & batch,
-        rtl::OUString const & path) const;
-
-    boost::shared_ptr< ConfigurationChanges > createChanges() const;
-
-private:
-    rtl::OUString extendLocalizedPath(rtl::OUString const & path) const;
-
-    com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-        context_;
-
-    com::sun::star::uno::Reference<
-        com::sun::star::container::XHierarchicalNameAccess > access_;
-};
-
-/// @internal
-template< typename T > struct Convert: private boost::noncopyable {
-    static com::sun::star::uno::Any toAny(T const & value)
-    { return com::sun::star::uno::makeAny(value); }
-
-    static T fromAny(com::sun::star::uno::Any const & value)
-    { return value.get< T >(); }
-
-private:
-    Convert(); // not defined
-    ~Convert(); // not defined
-};
-
-/// @internal
-template< typename T > struct Convert< boost::optional< T > >:
-    private boost::noncopyable
-{
-    static com::sun::star::uno::Any toAny(boost::optional< T > const & value) {
-        return value
-            ? com::sun::star::uno::makeAny(value.get())
-            : com::sun::star::uno::Any();
-    }
-
-    static boost::optional< T > fromAny(com::sun::star::uno::Any const & value)
-    {
-        return value.hasValue()
-            ? boost::optional< T >(value.get< T >()) : boost::optional< T >();
-    }
-
-private:
-    Convert(); // not defined
-    ~Convert(); // not defined
-};
-
-}
-
-/// 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:
-    private boost::noncopyable
-{
-    /// Get the value of the given (non-localized) configuration property.
-    ///
-    /// For nillable properties, U is of type boost::optional<U'>.
-    static U get(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context)
-    {
-        // Folding this into one statement causes a bogus error at least with
-        // Red Hat GCC 4.6.2-1:
-        com::sun::star::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 boost::optional<U'>.
-    static void set(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context,
-        boost::shared_ptr< ConfigurationChanges > const & batch,
-        U const & value)
-    {
-        detail::ConfigurationWrapper::get(context).setPropertyValue(
-            batch, T::path(), detail::Convert< U >::toAny(value));
-    }
-
-private:
-    ConfigurationProperty(); // not defined
-    ~ConfigurationProperty(); // not defined
-};
-
-/// 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:
-    private boost::noncopyable
-{
-    /// 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 boost::optional<U'>.
-    static U get(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context)
-    {
-        // Folding this into one statement causes a bogus error at least with
-        // Red Hat GCC 4.6.2-1:
-        com::sun::star::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 boost::optional<U'>.
-    static void set(
-        com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context,
-        boost::shared_ptr< ConfigurationChanges > const & batch,
-        U const & value)
-    {
-        detail::ConfigurationWrapper::get(context).setLocalizedPropertyValue(
-            batch, T::path(), detail::Convert< U >::toAny(value));
-    }
-
-private:
-    ConfigurationLocalizedProperty(); // not defined
-    ~ConfigurationLocalizedProperty(); // not defined
-};
-
-/// 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: private boost::noncopyable {
-    /// Get read-only access to the given configuration group.
-    static com::sun::star::uno::Reference<
-        com::sun::star::container::XHierarchicalNameAccess >
-    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context)
-    {
-        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 com::sun::star::uno::Reference<
-        com::sun::star::container::XHierarchicalNameReplace >
-    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context,
-        boost::shared_ptr< ConfigurationChanges > const & batch)
-    {
-        return detail::ConfigurationWrapper::get(context).getGroupReadWrite(
-            batch, T::path());
-    }
-
-private:
-    ConfigurationGroup(); // not defined
-    ~ConfigurationGroup(); // not defined
-};
-
-/// 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: private boost::noncopyable {
-    /// Get read-only access to the given configuration set.
-    static
-    com::sun::star::uno::Reference< com::sun::star::container::XNameAccess >
-    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context)
-    {
-        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
-    com::sun::star::uno::Reference< com::sun::star::container::XNameContainer >
-    get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >
-            const & context,
-        boost::shared_ptr< ConfigurationChanges > const & batch)
-    {
-        return detail::ConfigurationWrapper::get(context).getSetReadWrite(
-            batch, T::path());
-    }
-
-private:
-    ConfigurationSet(); // not defined
-    ~ConfigurationSet(); // not defined
-};
-
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unotools/source/config/configuration.cxx b/unotools/source/config/configuration.cxx
deleted file mode 100644
index a8c818c..0000000
--- a/unotools/source/config/configuration.cxx
+++ /dev/null
@@ -1,232 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * Version: MPL 1.1 / GPLv3+ / LGPLv3+
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License or as specified alternatively below. You may obtain a copy of
- * the License at http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * Major Contributor(s):
- * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <sbergman at redhat.com>
- * (initial developer)
- *
- * All Rights Reserved.
- *
- * For minor contributions see the git repository.
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
- * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
- * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
- * instead of those above.
- */
-
-#include "sal/config.h"
-
-#include <cassert>
-
-#include "boost/shared_ptr.hpp"
-#include "com/sun/star/configuration/ReadOnlyAccess.hpp"
-#include "com/sun/star/configuration/ReadWriteAccess.hpp"
-#include "com/sun/star/configuration/XReadWriteAccess.hpp"
-#include "com/sun/star/configuration/theDefaultProvider.hpp"
-#include "com/sun/star/container/XHierarchicalNameAccess.hpp"
-#include "com/sun/star/container/XHierarchicalNameReplace.hpp"
-#include "com/sun/star/container/XNameAccess.hpp"
-#include "com/sun/star/container/XNameContainer.hpp"
-#include "com/sun/star/lang/Locale.hpp"
-#include "com/sun/star/lang/XLocalizable.hpp"
-#include "com/sun/star/uno/Any.hxx"
-#include "com/sun/star/uno/Reference.hxx"
-#include "com/sun/star/uno/XComponentContext.hpp"
-#include "rtl/instance.hxx"
-#include "rtl/oustringostreaminserter.hxx"
-#include "rtl/ustrbuf.hxx"
-#include "rtl/ustring.h"
-#include "rtl/ustring.hxx"
-#include "sal/log.hxx"
-#include "unotools/configuration.hxx"
-
-namespace {
-
-namespace css = com::sun::star;
-
-struct TheConfigurationWrapper:
-    public rtl::StaticWithArg<
-        unotools::detail::ConfigurationWrapper,
-        css::uno::Reference< css::uno::XComponentContext >,
-        TheConfigurationWrapper >
-{};
-
-}
-
-boost::shared_ptr< unotools::ConfigurationChanges >
-unotools::ConfigurationChanges::create(
-    css::uno::Reference< css::uno::XComponentContext > const & context)
-{
-    return TheConfigurationWrapper::get(context).createChanges();
-}
-
-
-unotools::ConfigurationChanges::~ConfigurationChanges() {}
-
-void unotools::ConfigurationChanges::commit() const {
-    access_->commitChanges();
-}
-
-unotools::ConfigurationChanges::ConfigurationChanges(
-    css::uno::Reference< css::uno::XComponentContext > const & context):
-    access_(css::configuration::ReadWriteAccess::create(context))
-{}
-
-void unotools::ConfigurationChanges::setPropertyValue(
-    rtl::OUString const & path, css::uno::Any const & value) const
-{
-    access_->replaceByHierarchicalName(path, value);
-}
-
-css::uno::Reference< css::container::XHierarchicalNameReplace >
-unotools::ConfigurationChanges::getGroup(rtl::OUString const & path) const
-{
-    return css::uno::Reference< css::container::XHierarchicalNameReplace >(
-        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
-}
-
-css::uno::Reference< css::container::XNameContainer >
-unotools::ConfigurationChanges::getSet(rtl::OUString const & path) const
-{
-    return css::uno::Reference< css::container::XNameContainer >(
-        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
-}
-
-unotools::detail::ConfigurationWrapper const &
-unotools::detail::ConfigurationWrapper::get(
-    css::uno::Reference< css::uno::XComponentContext > const & context)
-{
-    return TheConfigurationWrapper::get(context);
-}
-
-unotools::detail::ConfigurationWrapper::ConfigurationWrapper(
-    css::uno::Reference< css::uno::XComponentContext > const & context):
-    context_(context), access_(css::configuration::ReadOnlyAccess::get(context))
-{}
-
-unotools::detail::ConfigurationWrapper::~ConfigurationWrapper() {}
-
-css::uno::Any unotools::detail::ConfigurationWrapper::getPropertyValue(
-    rtl::OUString const & path) const
-{
-    return access_->getByHierarchicalName(path);
-}
-
-void unotools::detail::ConfigurationWrapper::setPropertyValue(
-    boost::shared_ptr< ConfigurationChanges > const & batch,
-    rtl::OUString const & path, com::sun::star::uno::Any const & value) const
-{
-    assert(batch.get() != 0);
-    batch->setPropertyValue(path, value);
-}
-
-css::uno::Any unotools::detail::ConfigurationWrapper::getLocalizedPropertyValue(
-    rtl::OUString const & path) const
-{
-    return access_->getByHierarchicalName(extendLocalizedPath(path));
-}
-
-void unotools::detail::ConfigurationWrapper::setLocalizedPropertyValue(
-    boost::shared_ptr< ConfigurationChanges > const & batch,
-    rtl::OUString const & path, com::sun::star::uno::Any const & value) const
-{
-    assert(batch.get() != 0);
-    batch->setPropertyValue(extendLocalizedPath(path), value);
-}
-
-css::uno::Reference< css::container::XHierarchicalNameAccess >
-unotools::detail::ConfigurationWrapper::getGroupReadOnly(
-    rtl::OUString const & path) const
-{
-    return css::uno::Reference< css::container::XHierarchicalNameAccess >(
-        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
-}
-
-css::uno::Reference< css::container::XHierarchicalNameReplace >
-unotools::detail::ConfigurationWrapper::getGroupReadWrite(
-    boost::shared_ptr< ConfigurationChanges > const & batch,
-    rtl::OUString const & path) const
-{
-    assert(batch.get() != 0);
-    return batch->getGroup(path);
-}
-
-css::uno::Reference< css::container::XNameAccess >
-unotools::detail::ConfigurationWrapper::getSetReadOnly(
-    rtl::OUString const & path) const
-{
-    return css::uno::Reference< css::container::XNameAccess >(
-        access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW);
-}
-
-css::uno::Reference< css::container::XNameContainer >
-unotools::detail::ConfigurationWrapper::getSetReadWrite(
-    boost::shared_ptr< ConfigurationChanges > const & batch,
-    rtl::OUString const & path) const
-{
-    assert(batch.get() != 0);
-    return batch->getSet(path);
-}
-
-boost::shared_ptr< unotools::ConfigurationChanges >
-unotools::detail::ConfigurationWrapper::createChanges() const {
-    return boost::shared_ptr< ConfigurationChanges >(
-        new ConfigurationChanges(context_));
-}
-
-rtl::OUString unotools::detail::ConfigurationWrapper::extendLocalizedPath(
-    rtl::OUString const & path) const
-{
-    rtl::OUStringBuffer buf(path);
-    buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/['"));
-    css::lang::Locale locale(
-        css::uno::Reference< css::lang::XLocalizable >(
-            css::configuration::theDefaultProvider::get(context_),
-            css::uno::UNO_QUERY_THROW)->
-        getLocale());
-    SAL_WARN_IF(
-        locale.Language.indexOf('-') == -1, "unotools",
-        "Locale language \"" << locale.Language << "\" contains \"-\"");
-    assert(locale.Language.indexOf('&') == -1);
-    assert(locale.Language.indexOf('"') == -1);
-    assert(locale.Language.indexOf('\'') == -1);
-    buf.append(locale.Language);
-    SAL_WARN_IF(
-        locale.Country.isEmpty() && !locale.Variant.isEmpty(), "unotools",
-        "Locale has empty country but non-empty variant \"" << locale.Variant
-            << '"');
-    if (!locale.Country.isEmpty()) {
-        buf.append('-');
-        SAL_WARN_IF(
-            locale.Country.indexOf('-') == -1, "unotools",
-            "Locale language \"" << locale.Country << "\" contains \"-\"");
-        assert(locale.Country.indexOf('&') == -1);
-        assert(locale.Country.indexOf('"') == -1);
-        assert(locale.Country.indexOf('\'') == -1);
-        buf.append(locale.Country);
-        if (!locale.Variant.isEmpty()) {
-            buf.append('-');
-            assert(locale.Variant.indexOf('&') == -1);
-            assert(locale.Variant.indexOf('"') == -1);
-            assert(locale.Variant.indexOf('\'') == -1);
-            buf.append(locale.Variant);
-        }
-    }
-    buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("']"));
-    return buf.makeStringAndClear();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list