diff options
Diffstat (limited to 'configmgr/source/data.cxx')
-rw-r--r-- | configmgr/source/data.cxx | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/configmgr/source/data.cxx b/configmgr/source/data.cxx index 0fdc1e5eba92..fcc42e97cecc 100644 --- a/configmgr/source/data.cxx +++ b/configmgr/source/data.cxx @@ -48,6 +48,7 @@ #include "groupnode.hxx" #include "node.hxx" #include "nodemap.hxx" +#include "rootnode.hxx" #include "setnode.hxx" namespace configmgr { @@ -207,6 +208,8 @@ rtl::Reference< Node > Data::findNode( ? rtl::Reference< Node >() : i->second; } +Data::Data(): root_(new RootNode(components)) {} + rtl::Reference< Node > Data::resolvePathRepresentation( rtl::OUString const & pathRepresentation, rtl::OUString * canonicRepresentation, Path * path, int * finalizedLayer) @@ -218,6 +221,18 @@ rtl::Reference< Node > Data::resolvePathRepresentation( pathRepresentation), css::uno::Reference< css::uno::XInterface >()); } + if (path != 0) { + path->clear(); + } + if (pathRepresentation.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("/"))) { + if (canonicRepresentation != 0) { + *canonicRepresentation = pathRepresentation; + } + if (finalizedLayer != 0) { + *finalizedLayer = NO_LAYER; + } + return root_; + } rtl::OUString seg; bool setElement; rtl::OUString templateName; @@ -231,9 +246,6 @@ rtl::Reference< Node > Data::resolvePathRepresentation( } NodeMap::const_iterator i(components.find(seg)); rtl::OUStringBuffer canonic; - if (path != 0) { - path->clear(); - } rtl::Reference< Node > parent; int finalized = NO_LAYER; for (rtl::Reference< Node > p(i == components.end() ? 0 : i->second);;) { |