23#include <osl/diagnose.h>
24#include <rtl/string.hxx>
29 OString
const & type, sal_Int32 * rank,
30 std::vector< OString > * arguments)
32 sal_Int32 len =
type.getLength();
34 while (len - i > 1 && type[i + 1] ==
']') {
37 if (rank !=
nullptr) {
40 sal_Int32 j = arguments ==
nullptr ? -1 :
type.indexOf(
'<', i);
48 for (sal_Int32 level = 0; l != len; ++l) {
54 }
else if (c ==
'<') {
56 }
else if (c ==
'>') {
63 arguments->push_back(
type.copy(k, l - k));
65 }
while (k != len && type[k] !=
'>');
66 OSL_ASSERT(k == len - 1 && type[k] ==
'>');
67 return type.copy(i, j - i);
rtl::OString decompose(rtl::OString const &type, sal_Int32 *rank=nullptr, std::vector< rtl::OString > *arguments=nullptr)
Decomposes a UNO type name or UNO type registry name.