blob: cabba7611d9c7cd4f8ffe8e66f21750c82752e14 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#include "unotools/unotoolsdllapi.h"
#ifndef UNOTOOLS_CONFIGPATHES_HXX_INCLUDED
#define UNOTOOLS_CONFIGPATHES_HXX_INCLUDED
#include <sal/types.h>
namespace rtl
{
class OUString;
}
//----------------------------------------------------------------------------
namespace utl
{
//----------------------------------------------------------------------------
/** extract the local nodename and the parent nodepath
from a configuration path.
@param _sInPath
A configuration path that is not an empty or root path.<BR/>
If this is not a valid configuration path, it is interpreted as
local name of a node.
@param _rsOutPath
On exit: The configuration path obtained by dropping
the last level off <var>_sInPath</var>.<BR/>
If <var>_sInPath</var> could not be parsed as a valid
configuration path, this is set to an empty string.
@param _rsLocalName
On exit: The plain (non-escaped) name of the node identified by
<var>_sInPath</var>. <BR/>
If <var>_sInPath</var> could not be parsed as a valid
configuration path, this is set to <var>_sInPath</var>.
@returns
<TRUE/>, if a parent path could be set
<FALSE/>, if the path was a one-level path or an invalid path
*/
UNOTOOLS_DLLPUBLIC sal_Bool splitLastFromConfigurationPath(::rtl::OUString const& _sInPath,
::rtl::OUString& _rsOutPath,
::rtl::OUString& _rsLocalName);
//----------------------------------------------------------------------------
/** extract the first nodename from a configuration path.
@param _sInPath
A relative configuration path that is not empty.<BR/>
If this is not a valid configuration path, it is interpreted as
a single name of a node.
@param _sOutPath
If non-null, contains the remainder of the path upon return.
@returns
The plain (non-escaped) name of the node that is the first step
when traversing <var>_sInPath</var>.<BR/>
If <var>_sInPath</var> could not be parsed as a valid
configuration path, it is returned unaltered.
*/
UNOTOOLS_DLLPUBLIC ::rtl::OUString extractFirstFromConfigurationPath(
::rtl::OUString const& _sInPath, ::rtl::OUString* _sOutPath = 0);
//----------------------------------------------------------------------------
/** check whether a path is to a nested node with respect to a parent path.
@param _sNestedPath
A configuration path that maybe points to a descendant of the node
identified by <var>_sPrefixPath</var>, with both pathes starting
from the same node (or both being absolute).
@param _sPrefixPath
A configuration path.<BR/>
If this path is absolute, <var>_sNestedPath</var> should be absolute;
If this path is relative, <var>_sNestedPath</var> should be relative;
If this path is empty, <var>_sNestedPath</var> may start with a '/',
which is disregarded.
@returns
<TRUE/>, if <var>_sPrefixPath</var> is a prefix of <var>_sNestedPath</var>;
<FALSE/> otherwise.<BR/>
If both pathes are equal <TRUE/> is returned.
*/
sal_Bool isPrefixOfConfigurationPath(::rtl::OUString const& _sNestedPath,
::rtl::OUString const& _sPrefixPath);
//----------------------------------------------------------------------------
/** get the relative path to a nested node with respect to a parent path.
@param _sNestedPath
A configuration path that points to a descendant of the node
identified by <var>_sPrefixPath</var>, with both pathes starting
from the same node (or both being absolute).
@param _sPrefixPath
A configuration path.<BR/>
If this path is absolute, <var>_sNestedPath</var> must be absolute;
If this path is relative, <var>_sNestedPath</var> must be relative;
If this path is empty, <var>_sNestedPath</var> may start with a '/',
which is stripped.
@returns
The remaining relative path from the target of <var>_sPrefixPath</var>
to the target of <var>_sNestedPath</var>.<BR/>
If <var>_sPrefixPath</var> is not a prefix of <var>_sNestedPath</var>,
<var>_sNestedPath</var> is returned unaltered.
*/
UNOTOOLS_DLLPUBLIC ::rtl::OUString dropPrefixFromConfigurationPath(::rtl::OUString const& _sNestedPath,
::rtl::OUString const& _sPrefixPath);
//----------------------------------------------------------------------------
/** Create a one-level relative configuration path from a set element name
without a known set element type.
@param _sElementName
An arbitrary string that is to be interpreted as
name of a configuration set element.
@returns
A one-level relative path to the element, of the form
"*['<Name>']", where <Name> is properly escaped.
*/
UNOTOOLS_DLLPUBLIC ::rtl::OUString wrapConfigurationElementName(::rtl::OUString const& _sElementName);
//----------------------------------------------------------------------------
/** Create a one-level relative configuration path from a set element name
and a known set element type.
@param _sElementName
An arbitrary string that is to be interpreted as
name of a configuration set element.
@param _sTypeName
An string identifying the type of the element. Usually this is be
the name of the element-template of the set.<BR/>
@returns
A one-level relative path to the element, of the form
"<Type>['<Name>']", where <Name> is properly escaped.
*/
::rtl::OUString wrapConfigurationElementName(::rtl::OUString const& _sElementName,
::rtl::OUString const& _sTypeName);
//----------------------------------------------------------------------------
} // namespace utl
//----------------------------------------------------------------------------
#endif // UNOTOOLS_CONFIGPATHES_HXX_INCLUDED