Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members

Composite Class Reference
[Miscellaneous]

Composite Class. More...

#include <composite.h>

Inheritance diagram for Composite:

PersistentObject Selectable Object AutoDeletable Atom AtomContainer Bond PDBAtom Chain Fragment Molecule SecondaryStructure System Nucleotide Residue NucleicAcid Protein List of all members.

Modifying and Accessing the Tree

void set (const Composite &composite, bool deep=true) throw ()
 Assignment.
Compositeoperator= (const Composite &composite) throw ()
 Assignment operator.
void get (Composite &composite, bool deep=true) const throw ()
 Assignment of a tree to another.
Size getDegree () const throw ()
 Return the degree of the node.
Size count (const KernelPredicateType &predicate) const throw ()
 Count the number of nodes fulfilling a predicate in this subtree.
Size countDescendants () const throw ()
 Count the number of descendants.
Size getPathLength (const Composite &composite) const throw ()
 Get the length of the path between two composite objects.
Size getDepth () const throw ()
 Get the depth of this item in its tree.
Size getHeight () const throw ()
 Get the height of this item in its tree.
CompositegetRoot () throw ()
 Get the root of this item.
const CompositegetRoot () const throw ()
 Get a const reference to the root of this item.
CompositegetLowestCommonAncestor (const Composite &composite) throw ()
 Get the lowest common ancestor of this item with an other.
const CompositegetLowestCommonAncestor (const Composite &composite) const throw ()
 Get a const reference to the lowest common ancestor of this item with an other.
template<typename T>
T * getAncestor (const T &) throw ()
 Find the first ancestor of type T.
template<typename T>
const T * getAncestor (const T &) const throw ()
 Find the first ancestor of type T (const method).
template<typename T>
T * getPrevious (const T &) throw ()
 Find the nearest previous composite of type T.
template<typename T>
const T * getPrevious (const T &dummy) const throw ()
 Find the nearest previous composite of type T (const method).
template<typename T>
T * getNext (const T &) throw ()
 Find the next composite of type T.
template<typename T>
const T * getNext (const T &dummy) const throw ()
 Find the next composite of type T (const method).
CompositegetParent () throw ()
 Return the composite's parent.
const CompositegetParent () const throw ()
 Return the composite's parent (const method).
CompositegetChild (Index index) throw ()
 Return the index th child of this composite.
const CompositegetChild (Index index) const throw ()
 Return a const pointer to the index th child of this composite.
CompositegetSibling (Index index) throw ()
 Return a pointer to the sibling index positions from this composite.
const CompositegetSibling (Index index) const throw ()
 Return a const pointer to the sibling index positions from this composite.
CompositegetFirstChild () throw ()
 Return a pointer to the first child.
const CompositegetFirstChild () const throw ()
 Return a const pointer to the first child.
CompositegetLastChild () throw ()
 Return a pointer to the last child.
const CompositegetLastChild () const throw ()
 Return a const pointer to the last child.
const PreciseTimegetModificationTime () const throw ()
 Return the time of last modification.
const PreciseTimegetSelectionTime () const throw ()
 Return the time of last change of selection.
void stamp (StampType stamp=BOTH) throw ()
 Modify a time stamp.
void prependChild (Composite &composite) throw ()
 Insert a composite as the first child of this composite.
void appendChild (Composite &composite) throw ()
 Insert a composite as the last child of this composite.
void insertBefore (Composite &composite) throw ()
 Insert a node before this node.
void insertAfter (Composite &composite) throw ()
 Insert a node after this node.
void spliceBefore (Composite &composite) throw ()
 Prepend all children of composite to the children of this composite.
void spliceAfter (Composite &composite) throw ()
 Append all children of composite to the children of this composite.
void splice (Composite &composite) throw ()
 Insert the children of composite into this composite.
bool removeChild (Composite &child) throw ()
 Remove a child from its parent.
Size removeSelected () throw ()
 Remove selected subcomposites.
void replace (Composite &composite) throw ()
 This instance and its subtree is removed form its tree and replaced by composite and its subtree.
void swap (Composite &composite) throw ()
 Swap the contents of two composites.
virtual void select () throw ()
 Select a composite.
virtual void deselect () throw ()
 Deselect a composite.
bool insertParent (Composite &parent, Composite &first, Composite &last, bool destroy_parent=true) throw ()
 Insert a new parent node.

Public Types

typedef ForwardIterator< Composite,
Composite, Composite *, AncestorIteratorTraits > 
AncestorIterator
typedef ConstForwardIterator<
Composite, Composite, Composite *,
AncestorIteratorTraits > 
AncestorConstIterator
typedef BidirectionalIterator<
Composite, Composite, Composite *,
ChildCompositeIteratorTraits > 
ChildCompositeIterator
typedef ConstBidirectionalIterator<
Composite, Composite, Composite *,
ChildCompositeIteratorTraits > 
ChildCompositeConstIterator
typedef std::reverse_iterator<
ChildCompositeIterator
ChildCompositeReverseIterator
typedef std::reverse_iterator<
ChildCompositeConstIterator
ChildCompositeConstReverseIterator
typedef BidirectionalIterator<
Composite, Composite, Composite *,
CompositeIteratorTraits > 
CompositeIterator
typedef ConstBidirectionalIterator<
Composite, Composite, Composite *,
CompositeIteratorTraits > 
CompositeConstIterator
typedef std::reverse_iterator<
CompositeIterator
CompositeReverseIterator
typedef std::reverse_iterator<
CompositeConstIterator
CompositeConstReverseIterator
Type Definitions and Enums
typedef UnaryPredicate< CompositeKernelPredicateType
 Composite predicate type.
enum  StampType { MODIFICATION = 1, SELECTION = 2, BOTH = 3 }
 Time stamp type. More...

Public Member Functions

AncestorIterator beginAncestor () throw ()
AncestorIterator endAncestor () throw ()
AncestorConstIterator beginAncestor () const throw ()
AncestorConstIterator endAncestor () const throw ()
ChildCompositeIterator beginChildComposite () throw ()
ChildCompositeIterator endChildComposite () throw ()
ChildCompositeConstIterator beginChildComposite () const throw ()
ChildCompositeConstIterator endChildComposite () const throw ()
ChildCompositeReverseIterator rbeginChildComposite () throw ()
ChildCompositeReverseIterator rendChildComposite () throw ()
ChildCompositeConstReverseIterator rbeginChildComposite () const throw ()
ChildCompositeConstReverseIterator rendChildComposite () const throw ()
CompositeIterator beginComposite () throw ()
CompositeIterator endComposite () throw ()
CompositeConstIterator beginComposite () const throw ()
CompositeConstIterator endComposite () const throw ()
CompositeReverseIterator rbeginComposite () throw ()
CompositeReverseIterator rendComposite () throw ()
CompositeConstReverseIterator rbeginComposite () const throw ()
CompositeConstReverseIterator rendComposite () const throw ()
Construction and Destruction
 Composite () throw ()
 Default constructor.
 Composite (const Composite &composite, bool deep=true) throw ()
 Copy constructor.
virtual ~Composite () throw ()
 Destructor.
virtual void clear () throw ()
 Clear the composite properties.
virtual void destroy () throw ()
 Destroy the composite.
void destroy (bool virtual_destroy) throw ()
 Non-virtual destroy method.
void * clone (Composite &root) const throw ()
 Clone with a predicate.
Persistence
virtual void persistentWrite (PersistenceManager &pm, const char *name=0) const throw (Exception::GeneralException)
 Write a persistent copy of the object.
virtual void persistentRead (PersistenceManager &pm) throw (Exception::GeneralException)
 Read a persistent object.
Predicates
bool operator== (const Composite &composite) const throw ()
 Equality operator.
bool operator!= (const Composite &composite) const throw ()
 Inequality operator.
bool isEmpty () const throw ()
 Return true if the node does not contain children.
bool isRoot () const throw ()
 Return true if the node has no parent.
bool isRootOf (const Composite &composite) const throw ()
 Return true if the node is root of composite.
bool isInterior () const throw ()
 Return true if the node is not the root or a leaf.
bool hasChild () const throw ()
 Return true if the node has a child.
bool isChildOf (const Composite &composite) const throw ()
 Return true if the node has the parent composite.
bool isFirstChild () const throw ()
 Return true if the node is the first child of its parent.
bool isFirstChildOf (const Composite &composite) const throw ()
 Return true if the node is the first child of composite.
bool isLastChild () const throw ()
 Return true if the node is the last child of its parent.
bool isLastChildOf (const Composite &composite) const throw ()
 Return true if the node is the last child of composite.
bool hasParent () const throw ()
 Return true if the node has a parent.
bool isParentOf (const Composite &composite) const throw ()
 Return true if the node is the parent of composite.
bool hasSibling () const throw ()
 Return true if the node has a sibling.
bool isSiblingOf (const Composite &composite) const throw ()
 Return true if the node is a sibling of composite.
bool hasPreviousSibling () const throw ()
 Return true if the node has a previous sibling.
bool isPreviousSiblingOf (const Composite &composite) const throw ()
 Return true if the node is a previous sibling of composite.
bool hasNextSibling () const throw ()
 Return true if the node has a previous sibling.
bool isNextSiblingOf (const Composite &composite) const throw ()
 Return true if the node is a next sibling of composite.
bool isDescendantOf (const Composite &composite) const throw ()
 Return true if the node is a descendent of composite.
template<typename T>
bool hasAncestor (const T &dummy) const throw ()
 Return true if the node has a ancestor of the same type as dummy.
bool isAncestorOf (const Composite &composite) const throw ()
 Return true if the node has composite as descendent.
bool isRelatedWith (const Composite &composite) const throw ()
 Return true if the node has composite as ancestor or composite is ancestor of this node.
bool isHomomorph (const Composite &composite) const throw ()
 Return true if composite is homomorph to this node.
bool containsSelection () const throw ()
 Return true if any descendant is selected.
Debugging and Diagnostics
virtual bool isValid () const throw ()
 Test if the subtree with this node as root is valid.
virtual void dump (std::ostream &s=std::cout, Size depth=0) const throw ()
 Dump the constent of this instance to an ostream.
Application and Hosting
void host (Visitor< Composite > &visitor) throw (Exception::GeneralException)
 Visitor host method.
template<typename T>
bool applyAncestor (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to all ancestors of this node.
template<typename T>
bool applyChild (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to all children of this node.
template<typename T>
bool applyDescendantPreorder (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to all descendents of this node.
template<typename T>
bool applyDescendantPostorder (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to all descendents of this node.
template<typename T>
bool applyDescendant (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to all descendents of this node.
template<typename T>
bool applyPreorder (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to the node and its subtree.
template<typename T>
bool applyPostorder (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to the node and its subtree.
template<typename T>
bool apply (UnaryProcessor< T > &processor) throw (Exception::GeneralException)
 Apply a processor to the node and its subtree.
template<typename T>
bool applyLevel (UnaryProcessor< T > &processor, long level) throw (Exception::GeneralException)
 Apply a processor to the node and its siblings.

Static Public Attributes

UnaryProcessor< CompositeDEFAULT_PROCESSOR
KernelPredicateType DEFAULT_UNARY_PREDICATE

Friends

class AncestorIteratorTraits
class ChildCompositeIteratorTraits
class CompositeIteratorTraits

Detailed Description

Composite Class.

This class implements a variant of the composite design pattern. A Composite may contain an arbitrary number of other composites, thus forming a tree. All BALL kernel classes are derived from Composite. This provides a unique interface for all kernel classes.

The composite class provides a selection mechanism that allows hierarchical selection and deselection of arbitrary subtrees. The time of the last selection/deselection operation is stored as well as the time of the last modification operation in time stamps that can be accessed via getModificationTime and getSelectionTime . Selecting or deselecting a Composite automatically selects or deselects all its children (recursively!). Selecting or deselecting all children of a node deselects their parent as well. Selection information is propagated upwards in the tree.
Composites are persistent objects.


Member Typedef Documentation

typedef UnaryPredicate<Composite> Composite::KernelPredicateType
 

Composite predicate type.

This type declares a predicate operating on composites. As it is used as a predicate for all kernel classes, it is named KernelPredicateType.


Member Enumeration Documentation

enum Composite::StampType
 

Time stamp type.


Constructor & Destructor Documentation

Composite::Composite  )  throw ()
 

Default constructor.

This constructor creates an empty composite object.

Composite::Composite const Composite composite,
bool  deep = true
throw ()
 

Copy constructor.

Creates a copy of a composite. Deep copies include the whole composite tree, shallow copies contain anly a single composite.

Parameters:
composite the composite to be cloned (the root of the tree in the case of a deep copy)
deep make a deep copy (true) or shallow copy (false)

virtual Composite::~Composite  )  throw () [virtual]
 

Destructor.

The destructor calls destroy to remove the composite from potential tree structures. It also recursively destructs all children of the composite.


Member Function Documentation

void Composite::appendChild Composite composite  )  throw ()
 

Insert a composite as the last child of this composite.

Updates the modification time stamp. Note that this method alters the composite tree from which composite is taken, if there is such a tree.

See also:
stamp
Parameters:
composite the composite to be inserted

template<typename T>
bool Composite::apply UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to the node and its subtree.

applyPreorder is used.

See also:
applyPreorder
Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyAncestor UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to all ancestors of this node.

Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyChild UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to all children of this node.

Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyDescendant UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to all descendents of this node.

The node itself is not processed. applyDescendantPreorder is used.

See also:
applyDescendantPreorder
Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyDescendantPostorder UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to all descendents of this node.

The node itself is not processed. The root of a subtree is accessed after the nodes in its left and right subtree.

Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyDescendantPreorder UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to all descendents of this node.

The node itself is not processed. The root of a subtree is accessed before the nodes in its left and right subtree.

Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyLevel UnaryProcessor< T > &  processor,
long  level
throw (Exception::GeneralException)
 

Apply a processor to the node and its siblings.

Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyPostorder UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to the node and its subtree.

The root of a subtree is accessed after the nodes in its left and right subtree.

Returns:
true if the processor could be applied.

template<typename T>
bool Composite::applyPreorder UnaryProcessor< T > &  processor  )  throw (Exception::GeneralException)
 

Apply a processor to the node and its subtree.

The root of a subtree is accessed before the nodes in its left and right subtree.

Returns:
true if the processor could be applied.

virtual void Composite::clear  )  throw () [virtual]
 

Clear the composite properties.

This method removes the composite's children and destructs them if they are auto-deletable.

It does not remove the composite from any parental structure.
This method updates the modification time stamp of this.
See also:
stamp

AutoDeletable

destroy

Reimplemented from Selectable.

Reimplemented in Atom, AtomContainer, Bond, NucleicAcid, Nucleotide, PDBAtom, Protein, Residue, and SecondaryStructure.

void* Composite::clone Composite root  )  const throw ()
 

Clone with a predicate.

This method copies the attributes of this composite to root (shallow copy) and then adds recursively each of its children.

Parameters:
root the cloning target root is destroyed prior to any copying
Returns:
a pointer to the root composite (&root)

bool Composite::containsSelection  )  const throw ()
 

Return true if any descendant is selected.

This method does not check all nodes recursively. Instead, on each modification of the tree, internal flags are updated and the information is propagated upwards in the tree.

Complexity: O(1)
Returns:
bool true if any node in the subtree is selected

Size Composite::count const KernelPredicateType predicate  )  const throw ()
 

Count the number of nodes fulfilling a predicate in this subtree.

Parameters:
predicate the predicate
Returns:
Size the number of nodes in the subtree satisfying the predicate

Size Composite::countDescendants  )  const throw ()
 

Count the number of descendants.

Returns:
Size the number of descendants of this node

virtual void Composite::deselect  )  throw () [virtual]
 

Deselect a composite.

This method deselects the composite and all the composites therein.

If the state of this composite is modified, its selection time stamp is updated and that of its ancestors (up to and including the root composite) as well. The time stamps of descendants that changed their selection state are update, too.

Reimplemented from Selectable.

void Composite::destroy bool  virtual_destroy  )  throw ()
 

Non-virtual destroy method.

This method behaves exactly like destroy except for a small difference: when called with true, it calls the virtual clear function. If called with false it calls the original clear function of Composite. This is useful when implementing the behaviour of derived classes.

This method updates the modification time stamp of this.
See also:
stamp
Parameters:
virtual_destroy call the virtual clear method (true) or Composite::clear() (false)

virtual void Composite::destroy  )  throw () [virtual]
 

Destroy the composite.

This method removes the composite from potential parental structures and then calls clear to destruct all children.

This method updates the modification time stamp of this.
See also:
stamp

~Composite

clear

Reimplemented in Atom, AtomContainer, Bond, NucleicAcid, Nucleotide, PDBAtom, Protein, Residue, and SecondaryStructure.

virtual void Composite::dump std::ostream &  s = std::cout,
Size  depth = 0
const throw () [virtual]
 

Dump the constent of this instance to an ostream.

Parameters:
s the stream to which we will dump
depth the indentation depth of the output

Reimplemented in Atom, AtomContainer, Bond, Chain, Fragment, Molecule, NucleicAcid, Nucleotide, PDBAtom, Protein, Residue, and SecondaryStructure.

void Composite::get Composite composite,
bool  deep = true
const throw ()
 

Assignment of a tree to another.

Create a deep (deep = true) or shallow copy of a composite and assign it to composite. composite is destroyed first.

Parameters:
composite the composite to assign the copy to
deep true for a deep copy

template<typename T>
const T * Composite::getAncestor const T &   )  const throw ()
 

Find the first ancestor of type T (const method).

This method operates also on constant trees.

Returns:
a pointer to the first composite found that is a kind of T or 0 if no matching composite was found to the root of the tree

template<typename T>
T * Composite::getAncestor const T &   )  throw ()
 

Find the first ancestor of type T.

This method walks up the tree from parent to parent and checks whether the composite object is a kind of T. This method is useful to identify special container classes.

Returns:
a pointer to the first composite found that is a kind of T or 0 if no matching composite was found up to the root of the tree

const Composite* Composite::getChild Index  index  )  const throw ()
 

Return a const pointer to the index th child of this composite.

If no such child exists, 0 is returned. The index of the first child is 0.

Parameters:
index the index of the child to return
Returns:
a const pointer to the child or 0 if there is no such child.

Composite* Composite::getChild Index  index  )  throw ()
 

Return the index th child of this composite.

If no such child exists, 0 is returned. The index of the first child is 0.

Parameters:
index the index of the child to return
Returns:
a pointer to the child or 0 if there is no such child.

Size Composite::getDegree  )  const throw ()
 

Return the degree of the node.

This method returns the number of children of a composite object.

Returns:
Size the number of children

Size Composite::getDepth  )  const throw ()
 

Get the depth of this item in its tree.

The depth of a root item is 0.

Returns:
Size the depth

const Composite* Composite::getFirstChild  )  const throw ()
 

Return a const pointer to the first child.

Returns:
a const pointer to the first child or 0 if there is no child.

Composite* Composite::getFirstChild  )  throw ()
 

Return a pointer to the first child.

Returns:
a pointer to the first child or 0 if there is no child.

Size Composite::getHeight  )  const throw ()
 

Get the height of this item in its tree.

The hight of a leaf is 0.

Returns:
Size the height

const Composite* Composite::getLastChild  )  const throw ()
 

Return a const pointer to the last child.

Returns:
a const pointer to the last child or 0 if there is no child.

Composite* Composite::getLastChild  )  throw ()
 

Return a pointer to the last child.

Returns:
a pointer to the last child or 0 if there is no child.

const Composite* Composite::getLowestCommonAncestor const Composite composite  )  const throw ()
 

Get a const reference to the lowest common ancestor of this item with an other.

If no common ancestor exists, 0 is returned.

Returns:
Composite& the lowest common ancestor

Composite* Composite::getLowestCommonAncestor const Composite composite  )  throw ()
 

Get the lowest common ancestor of this item with an other.

If no common ancestor exists 0 is returned.

Returns:
Composite& the lowest common ancestor

const PreciseTime& Composite::getModificationTime  )  const throw ()
 

Return the time of last modification.

Returns:
the last modification time

template<typename T>
const T * Composite::getNext const T &  dummy  )  const throw ()
 

Find the next composite of type T (const method).

This method walks backward in the tree from composite to composite and checks whether the composite object is a kind of T.

Returns:
a pointer to the first composite found that is a kind of T or 0 if no matching composite was found up to the root of the tree

template<typename T>
T * Composite::getNext const T &   )  throw ()
 

Find the next composite of type T.

This method walks backward in the tree from composite to composite and checks whether the composite object is a kind of T.

Returns:
a pointer to the first composite found that is a kind of T or 0 if no matching composite was found up to the root of the tree

const Composite* Composite::getParent  )  const throw ()
 

Return the composite's parent (const method).

Returns:
a pointer to the parent composite or 0 if no parent exists

Composite* Composite::getParent  )  throw ()
 

Return the composite's parent.

Returns:
a pointer to the parent composite or 0 if no parent exists

Size Composite::getPathLength const Composite composite  )  const throw ()
 

Get the length of the path between two composite objects.

If no path exists INVALID_SIZE is returned.

Parameters:
composite the second object
Returns:
Size the size of the path

template<typename T>
const T * Composite::getPrevious const T &  dummy  )  const throw ()
 

Find the nearest previous composite of type T (const method).

This method walks backward in the tree from composite to composite and checks whether the composite object is a kind of T.

Returns:
a pointer to the first composite found that is a kind of T or 0 if no matching composite was found up to the root of the tree

template<typename T>
T * Composite::getPrevious const T &   )  throw ()
 

Find the nearest previous composite of type T.

This method walks backward in the tree from composite to composite and checks whether the composite object is a kind of T.

Returns:
a pointer to the first composite found that is a kind of T or 0 if no matching composite was found up to the root of the tree

const Composite& Composite::getRoot  )  const throw ()
 

Get a const reference to the root of this item.

Returns:
Composite& the root

Composite& Composite::getRoot  )  throw ()
 

Get the root of this item.

Returns:
Composite& the root

const PreciseTime& Composite::getSelectionTime  )  const throw ()
 

Return the time of last change of selection.

Returns:
the last time of change of selection

const Composite* Composite::getSibling Index  index  )  const throw ()
 

Return a const pointer to the sibling index positions from this composite.

A pointer to the sibling index positions to the right (for positive values of index) or -index positions to the left (for negative values of index) is returned. For Index = 0 the this-pointer is returned.

Parameters:
index the index of the sibling
Returns:
a const pointer to the child or 0 if there is no such sibling.

Composite* Composite::getSibling Index  index  )  throw ()
 

Return a pointer to the sibling index positions from this composite.

A pointer to the sibling index positions to the right (for positive values of index) or -index positions to the left (for negative values of index) is returned. For Index = 0 the this-pointer is returned.

Parameters:
index the index of the sibling
Returns:
a pointer to the child or 0 if there is no such sibling.

template<typename T>
bool Composite::hasAncestor const T &  dummy  )  const throw ()
 

Return true if the node has a ancestor of the same type as dummy.

bool Composite::hasChild  )  const throw ()
 

Return true if the node has a child.

bool Composite::hasNextSibling  )  const throw ()
 

Return true if the node has a previous sibling.

(Its parent has a child after this.)

bool Composite::hasParent  )  const throw ()
 

Return true if the node has a parent.

bool Composite::hasPreviousSibling  )  const throw ()
 

Return true if the node has a previous sibling.

(Its parent has a child before this.)

bool Composite::hasSibling  )  const throw ()
 

Return true if the node has a sibling.

(Its parent has other childs.)

void Composite::host Visitor< Composite > &  visitor  )  throw (Exception::GeneralException)
 

Visitor host method.

Composites may be visited. For an example look into Composite_test.C

Parameters:
visitor the visitor

void Composite::insertAfter Composite composite  )  throw ()
 

Insert a node after this node.

This method inserts composite after this node, if this node has a parent and is not a descendant of composite. Self-insertion is recognized and ignored (nothing is done).

This method updates the modification time stamp.
See also:
stamp
Parameters:
composite the node to be inserted in the tree after of this

void Composite::insertBefore Composite composite  )  throw ()
 

Insert a node before this node.

This method inserts composite before this node, if this node has a parent and is not a descendant of composite. Self-insertion is recognized and ignored (nothing is done).

This method updates the modification time stamp.
See also:
stamp
Parameters:
composite the node to be inserted in the tree before this

bool Composite::insertParent Composite parent,
Composite first,
Composite last,
bool  destroy_parent = true
throw () [static]
 

Insert a new parent node.

This method is used to combine a range of nodes into a single parent. First, the parent composite is destroyed. Then, all nodes from first through last are inserted into parent and parent is inserted in the former position of first. The method returns false, if { first} or last have differing parents, if parent is identical with either first or last, or if first is already a descendant of parent.

This method updates the modification time stamp.
See also:
stamp
Parameters:
parent the new parent of the nodes from first through last
first the first of the nodes to be inserted into parent
last the last of the nodes to be inserted into parent
destroy_parent keeps the current contents of parent if set to true

bool Composite::isAncestorOf const Composite composite  )  const throw ()
 

Return true if the node has composite as descendent.

bool Composite::isChildOf const Composite composite  )  const throw ()
 

Return true if the node has the parent composite.

bool Composite::isDescendantOf const Composite composite  )  const throw ()
 

Return true if the node is a descendent of composite.

bool Composite::isEmpty  )  const throw ()
 

Return true if the node does not contain children.

Returns:
bool true if number_of_children_ == 0

bool Composite::isFirstChild  )  const throw ()
 

Return true if the node is the first child of its parent.

bool Composite::isFirstChildOf const Composite composite  )  const throw ()
 

Return true if the node is the first child of composite.

bool Composite::isHomomorph const Composite composite  )  const throw ()
 

Return true if composite is homomorph to this node.

(The subtrees of the two instances have to be of the same form.)

bool Composite::isInterior  )  const throw ()
 

Return true if the node is not the root or a leaf.

bool Composite::isLastChild  )  const throw ()
 

Return true if the node is the last child of its parent.

bool Composite::isLastChildOf const Composite composite  )  const throw ()
 

Return true if the node is the last child of composite.

bool Composite::isNextSiblingOf const Composite composite  )  const throw ()
 

Return true if the node is a next sibling of composite.

bool Composite::isParentOf const Composite composite  )  const throw ()
 

Return true if the node is the parent of composite.

bool Composite::isPreviousSiblingOf const Composite composite  )  const throw ()
 

Return true if the node is a previous sibling of composite.

bool Composite::isRelatedWith const Composite composite  )  const throw ()
 

Return true if the node has composite as ancestor or composite is ancestor of this node.

bool Composite::isRoot  )  const throw ()
 

Return true if the node has no parent.

Returns:
bool true if parent_ == 0

bool Composite::isRootOf const Composite composite  )  const throw ()
 

Return true if the node is root of composite.

bool Composite::isSiblingOf const Composite composite  )  const throw ()
 

Return true if the node is a sibling of composite.

virtual bool Composite::isValid  )  const throw () [virtual]
 

Test if the subtree with this node as root is valid.

(The structure of the subtree has to be valid.)

Reimplemented from Object.

Reimplemented in Atom, AtomContainer, Bond, NucleicAcid, Nucleotide, Protein, Residue, and SecondaryStructure.

bool Composite::operator!= const Composite composite  )  const throw ()
 

Inequality operator.

See also:
operator == B

Composite& Composite::operator= const Composite composite  )  throw ()
 

Assignment operator.

Parameters:
composite the Composite tree to assign from
Returns:
a const reference to this

bool Composite::operator== const Composite composite  )  const throw ()
 

Equality operator.

Compares the handles of two Composite objects, therefore two Composite objects can never be equal.

See also:
Object::operator ==
Parameters:
composite the composite against which equality will be tested

virtual void Composite::persistentRead PersistenceManager pm  )  throw (Exception::GeneralException) [virtual]
 

Read a persistent object.

Parameters:
pm the persistence manager

Reimplemented from PersistentObject.

Reimplemented in Atom, AtomContainer, Bond, Chain, Fragment, Molecule, NucleicAcid, Nucleotide, PDBAtom, Protein, Residue, SecondaryStructure, and System.

virtual void Composite::persistentWrite PersistenceManager pm,
const char *  name = 0
const throw (Exception::GeneralException) [virtual]
 

Write a persistent copy of the object.

Parameters:
pm the persistence manager
name the object name

Reimplemented from PersistentObject.

Reimplemented in Atom, AtomContainer, Bond, Chain, Fragment, Molecule, NucleicAcid, Nucleotide, PDBAtom, Protein, Residue, SecondaryStructure, and System.

void Composite::prependChild Composite composite  )  throw ()
 

Insert a composite as the first child of this composite.

Updates the modification time stamp.

See also:
stamp
Parameters:
composite the composite to be inserted

bool Composite::removeChild Composite child  )  throw ()
 

Remove a child from its parent.

child is only removed, if it is a true child of this.

This method updates the modification time stamp of this.
See also:
stamp
Parameters:
child the child to remove
Returns:
false if child could not be removed

Size Composite::removeSelected  )  throw ()
 

Remove selected subcomposites.

This method iterates over all children of the current composite and removes all selected composites by deleteing them. If the respective Composite are not , they are just d from the hierarchy, but not deleted.

This method is useful in combination with the class in order to remove unwanted partitions of kernel data structures.

Returns:
the number of composites deleted.

void Composite::replace Composite composite  )  throw ()
 

This instance and its subtree is removed form its tree and replaced by composite and its subtree.

This method updates the modification time stamp of this and composite.
See also:
stamp
Parameters:
composite the composite which will be inserted

virtual void Composite::select  )  throw () [virtual]
 

Select a composite.

This method selects the composite and all the composites therein.

If the state of this composite is modified, its selection time stamp is updated and that of its ancestors (up to and including the root composite) as well. The time stamps of descendants that changed their selection state are update, too.

Reimplemented from Selectable.

void Composite::set const Composite composite,
bool  deep = true
throw ()
 

Assignment.

Parameters:
composite the Composite tree to assign from
deep a bool deciding whether the assignment will be deep or shallow.

void Composite::splice Composite composite  )  throw ()
 

Insert the children of composite into this composite.

The children of composite are inserted at the position of composite if composite is a child of this. Otherwise the children are inserted using spliceBefore .

This method updates the modification time stamp.
See also:
stamp
Parameters:
composite the composite to be spliced

void Composite::spliceAfter Composite composite  )  throw ()
 

Append all children of composite to the children of this composite.

The method does nothing, if composite is identical to this or is a descendent of this.

This method updates the modification time stamp.
See also:
stamp
Parameters:
composite the composite to be spliced

void Composite::spliceBefore Composite composite  )  throw ()
 

Prepend all children of composite to the children of this composite.

The method does nothing, if composite is identical to this or is a descendent of this.

This method updates the modification time stamp.
See also:
stamp
Parameters:
the composite to be spliced

void Composite::stamp StampType  stamp = BOTH  )  throw ()
 

Modify a time stamp.

Update one or both of the two time stamps with the current time. The time stamp is then propagated up to the root of the composite tree. Each composite contains two stamps. the modification stamp is updated each time the tree structure changes, while the selection stamp is updated each time the selection status changes.

Parameters:
stamp the time stamp type

void Composite::swap Composite composite  )  throw ()
 

Swap the contents of two composites.

This method updates the modification time stamp of this and composite.
See also:
stamp
Parameters:
composite the composite with which the contents will be swapped