/*========================================================================= * * Copyright NumFOCUS * * Licensed 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 * * https://www.apache.org/licenses/LICENSE-2.0.txt * * 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. * *=========================================================================*/ #ifndef itkTreeContainerBase_h #define itkTreeContainerBase_h #include "itkMacro.h" #include #include "itkTreeNode.h" namespace itk { /** \class TreeContainerBase * \brief A base class for tree containers. * * \ingroup DataRepresentation * \ingroup ITKDeprecated */ template class TreeContainerBase : public Object { public: using Superclass = Object; using Self = TreeContainerBase; using Pointer = SmartPointer; using ConstPointer = SmartPointer; using ValueType = TValue; /** \see LightObject::GetNameOfClass() */ itkOverrideGetNameOfClassMacro(TreeContainerBase); /** Set the root element. * A new node is created and the element is added to the node */ virtual bool SetRoot(const TValue element) = 0; /** Set the root has a node */ virtual bool SetRoot(TreeNode * node) = 0; /** Return true if the tree contains the element */ virtual bool Contains(const TValue element) = 0; /** Return the number of nodes in the tree */ virtual int Count() const = 0; /** Return if the element is a leaf */ virtual bool IsLeaf(const TValue element) = 0; /** Return if the element is root */ virtual bool IsRoot(const TValue element) = 0; /** Clear the tree */ virtual bool Clear() = 0; /** Get the root as a node */ virtual const TreeNode * GetRoot() const = 0; /** Set if the tree is a subtree */ void SetSubtree(bool val) { m_SubTree = val; } protected: TreeContainerBase() = default; ~TreeContainerBase() override = default; bool m_SubTree{ false }; }; } // namespace itk #endif