Kaydet (Commit) 36ff5677 authored tarafından Jan Holesovsky's avatar Jan Holesovsky

comphelper: Allow initializer lists for Sequences of NamedValues.

This is particularly useful for creation of sequences that are later
unwrapped using comphelper::SequenceAsHashMap.

Eg.

    uno::Sequence<uno::Any> aArguments(comphelper::InitAnySequence(
    {
        {"SomethingNamed", uno::makeAny(true)},
    }));

    Reference<XExporter> xExporter(aFactory->createInstanceWithArguments(..., aArguments), UNO_QUERY);

and in the implementation where the arguments are consumed:

    comphelper::SequenceAsHashMap aArgumentsMap(rArguments);
    mbSomething = aArgumentsMap.getUnpackedValueOrDefault("SomethingNamed", false);

Change-Id: Ib1135078a99ca08f50bf51184f2ec7d13f5e6b4d
Reviewed-on: https://gerrit.libreoffice.org/40201Reviewed-by: 's avatarJan Holesovsky <kendy@collabora.com>
Tested-by: 's avatarJan Holesovsky <kendy@collabora.com>
üst 236305f5
......@@ -14,10 +14,12 @@
#include <initializer_list>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/beans/NamedValue.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
namespace comphelper
{
/// Init list for property sequences.
inline css::uno::Sequence< css::beans::PropertyValue > InitPropertySequence(
::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
{
......@@ -33,6 +35,23 @@ namespace comphelper
}
return vResult;
}
/// Init list for property sequences that wrap the NamedValues in Anys.
///
/// This is particularly useful for creation of sequences that are later
/// unwrapped using comphelper::SequenceAsHashMap.
inline css::uno::Sequence< css::uno::Any > InitAnySequence(
::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
{
css::uno::Sequence<css::uno::Any> vResult{static_cast<sal_Int32>(vInit.size())};
size_t nCount{0};
for(const auto& aEntry : vInit)
{
vResult[nCount] <<= css::beans::NamedValue(aEntry.first, aEntry.second);
++nCount;
}
return vResult;
}
} // namespace comphelper
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment