summaryrefslogtreecommitdiff
path: root/configmgr/source/inc/node.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'configmgr/source/inc/node.hxx')
-rw-r--r--configmgr/source/inc/node.hxx232
1 files changed, 0 insertions, 232 deletions
diff --git a/configmgr/source/inc/node.hxx b/configmgr/source/inc/node.hxx
deleted file mode 100644
index 604bc7390619..000000000000
--- a/configmgr/source/inc/node.hxx
+++ /dev/null
@@ -1,232 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: node.hxx,v $
- * $Revision: 1.9 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_SHARABLE_NODE_HXX
-#define INCLUDED_SHARABLE_NODE_HXX
-
-#include "rtl/ustring.hxx"
-
-#include "flags.hxx"
-#include "anydata.hxx"
-
-namespace configmgr
-{
-//-----------------------------------------------------------------------------
- namespace node { struct Attributes; }
-//-----------------------------------------------------------------------------
- namespace sharable
- {
- struct TreeFragment;
- union Node;
- //-----------------------------------------------------------------------------
- struct NodeInfo
- {
- rtl_uString * name;
- sal_uInt16 parent; // always counts backwards
- sal_uInt8 flags;
- sal_uInt8 type; // contains discriminator for union
-
- rtl::OUString getName() const;
- node::Attributes getNodeInfoAttributes() const;
- bool isDefault() const;
- bool isLocalized() const;
-
- void markAsDefault(bool bDefault = true);
- };
- //-----------------------------------------------------------------------------
- struct GroupNode
- {
- NodeInfo info;
- sal_uInt16 numDescendants; // = number of descendants
-
- bool hasDefaultsAvailable() const;
-
- Node * getFirstChild() const;
- Node * getNextChild(Node * child) const;
- Node * getChild(rtl::OUString const & name) const;
-
- static inline GroupNode * from(Node * node);
- };
- //-----------------------------------------------------------------------------
- struct SetNode
- {
-
- NodeInfo info;
- sal_uInt8 * elementType; // points to template [MM:SetNode *?]
- TreeFragment * elements; // points to first element (TreeFragmentHeader)
-
- rtl::OUString getElementTemplateName() const;
- rtl::OUString getElementTemplateModule() const;
-
- TreeFragment * getFirstElement() const;
- TreeFragment * getNextElement(TreeFragment * _pElement) const;
- TreeFragment * getElement(rtl::OUString const & name) const;
-
- void addElement(TreeFragment * newElement);
- TreeFragment * removeElement(rtl::OUString const & name);
-
- static inline SetNode * from(Node * node);
-
- // low-level helper for template data abstraction
- static
- sal_uInt8 * allocTemplateData(const rtl::OUString &rName,
- const rtl::OUString &rModule);
- static
- sal_uInt8 * copyTemplateData(sal_uInt8 * _aTemplateData);
- static
- void releaseTemplateData(sal_uInt8 * _aTemplateData);
- };
- //-----------------------------------------------------------------------------
- struct ValueNode
- {
- NodeInfo info;
- AnyData value;
- AnyData defaultValue;
-
- bool isNull() const;
- bool hasUsableDefault() const;
-
- com::sun::star::uno::Any getValue() const;
- com::sun::star::uno::Type getValueType() const;
- com::sun::star::uno::Any getUserValue() const;
- com::sun::star::uno::Any getDefaultValue() const;
-
- void setValue(com::sun::star::uno::Any const & newValue);
- void setToDefault();
- void changeDefault(com::sun::star::uno::Any const & newDefault);
-
- static inline ValueNode * from(Node * node);
-
- private:
- void releaseValue();
- sal_uInt8 adaptType(com::sun::star::uno::Any const & newValue);
- };
- //-----------------------------------------------------------------------------
- // TODO: optimized representation of localized values (now as set; mapping locale->element-name)
- // TODO (?): better representation of sets of values
- //-----------------------------------------------------------------------------
- union Node
- {
- NodeInfo info;
- GroupNode group;
- SetNode set;
- ValueNode value;
-
- // info access
- bool isNamed(rtl::OUString const & _aName) const;
- rtl::OUString getName() const;
- node::Attributes getAttributes() const;
- bool isDefault() const;
-
- // type checks
- bool isGroup() const { return typeIs (data::Type::nodetype_group); }
- bool isSet() const { return typeIs (data::Type::nodetype_set); }
- bool isValue() const { return typeIs (data::Type::nodetype_value); }
-
- // checked access
- inline GroupNode * groupData();
- inline GroupNode const * groupData() const;
- inline SetNode * setData();
- inline SetNode const * setData() const;
- inline ValueNode * valueData();
- inline ValueNode const * valueData() const;
-
- // navigation
- bool isFragmentRoot() const;
-#if OSL_DEBUG_LEVEL > 0
- Node * getParentNode();
- Node const * getParentNode() const;
-#endif
- TreeFragment * getTreeFragment();
- TreeFragment const * getTreeFragment() const;
-
- Node * getSubnode(rtl::OUString const & name);
-
- private:
- bool typeIs(data::Type::Type eType) const
- { return (info.type & data::Type::mask_nodetype) == eType; }
- };
-
- //-----------------------------------------------------------------------------
- inline GroupNode * GroupNode::from(Node * node)
- { return node == 0 ? 0 : node->groupData(); }
-
- inline SetNode * SetNode::from(Node * node)
- { return node == 0 ? 0 : node->setData(); }
-
- inline ValueNode * ValueNode::from(Node * node)
- { return node == 0 ? 0 : node->valueData(); }
-
- inline GroupNode * Node::groupData()
- { return isGroup() ? &this->group : NULL; }
- inline GroupNode const * Node::groupData() const
- { return isGroup() ? &this->group : NULL; }
- inline SetNode * Node::setData()
- { return isSet() ? &this->set : NULL; }
- inline SetNode const * Node::setData() const
- { return isSet() ? &this->set : NULL; }
- inline ValueNode * Node::valueData()
- { return isValue() ? &this->value : NULL; }
- inline ValueNode const * Node::valueData() const
- { return isValue() ? &this->value : NULL; }
-
- inline Node * node(ValueNode * pNode)
- { return reinterpret_cast<Node*>(pNode); }
- inline Node * node(GroupNode * pNode)
- { return reinterpret_cast<Node*>(pNode); }
- inline Node * node(SetNode * pNode)
- { return reinterpret_cast<Node*>(pNode); }
-
- inline Node const * node(ValueNode const* pNode)
- { return reinterpret_cast<Node const*>(pNode); }
- inline Node const * node(GroupNode const* pNode)
- { return reinterpret_cast<Node const*>(pNode); }
- inline Node const * node(SetNode const* pNode)
- { return reinterpret_cast<Node const*>(pNode); }
- //-----------------------------------------------------------------------------
- inline Node & node(ValueNode & pNode)
- { return reinterpret_cast<Node&>(pNode); }
- inline Node & node(GroupNode & pNode)
- { return reinterpret_cast<Node&>(pNode); }
- inline Node & node(SetNode & pNode)
- { return reinterpret_cast<Node&>(pNode); }
-
- inline Node const & node(ValueNode const& pNode)
- { return reinterpret_cast<Node const&>(pNode); }
- inline Node const & node(GroupNode const& pNode)
- { return reinterpret_cast<Node const&>(pNode); }
- inline Node const & node(SetNode const& pNode)
- { return reinterpret_cast<Node const&>(pNode); }
- //-----------------------------------------------------------------------------
- }
-//-----------------------------------------------------------------------------
-}
-
-#endif // INCLUDED_SHARABLE_NODE_HXX