BALL::Composite Class Reference
[Miscellaneous]

#include <BALL/CONCEPT/composite.h>

Inheritance diagram for BALL::Composite:
Inheritance graph
[legend]

List of all members.

Classes

class  AncestorIteratorTraits
class  ChildCompositeIteratorTraits
class  CompositeIteratorTraits

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

enum  StampType { MODIFICATION = 1, SELECTION = 2, BOTH = 3 }
typedef UnaryPredicate< CompositeKernelPredicateType

Public Member Functions

AncestorIterator beginAncestor ()
AncestorIterator endAncestor ()
AncestorConstIterator beginAncestor () const
AncestorConstIterator endAncestor () const
ChildCompositeIterator beginChildComposite ()
ChildCompositeIterator endChildComposite ()
ChildCompositeConstIterator beginChildComposite () const
ChildCompositeConstIterator endChildComposite () const
ChildCompositeReverseIterator rbeginChildComposite ()
ChildCompositeReverseIterator rendChildComposite ()
ChildCompositeConstReverseIterator rbeginChildComposite () const
ChildCompositeConstReverseIterator rendChildComposite () const
CompositeIterator beginComposite ()
CompositeIterator endComposite ()
CompositeConstIterator beginComposite () const
CompositeConstIterator endComposite () const
CompositeReverseIterator rbeginComposite ()
CompositeReverseIterator rendComposite ()
CompositeConstReverseIterator rbeginComposite () const
CompositeConstReverseIterator rendComposite () const
void deleteChildrenList_ (std::list< Composite * > &composites)
Construction and Destruction

 Composite ()
 Composite (const Composite &composite, bool deep=true)
virtual ~Composite ()
virtual void clear ()
virtual void destroy ()
void destroy (bool virtual_destroy)
void * clone (Composite &root) const
Persistence

virtual void persistentWrite (PersistenceManager &pm, const char *name=0) const
virtual void persistentRead (PersistenceManager &pm)
Predicates

bool operator== (const Composite &composite) const
bool operator!= (const Composite &composite) const
bool isEmpty () const
bool isRoot () const
bool isRootOf (const Composite &composite) const
bool isInterior () const
bool hasChild () const
bool isChildOf (const Composite &composite) const
bool isFirstChild () const
bool isFirstChildOf (const Composite &composite) const
bool isLastChild () const
bool isLastChildOf (const Composite &composite) const
bool hasParent () const
bool isParentOf (const Composite &composite) const
bool hasSibling () const
bool isSiblingOf (const Composite &composite) const
bool hasPreviousSibling () const
bool isPreviousSiblingOf (const Composite &composite) const
bool hasNextSibling () const
bool isNextSiblingOf (const Composite &composite) const
bool isDescendantOf (const Composite &composite) const
template<typename T >
bool hasAncestor (const T &dummy) const
bool isAncestorOf (const Composite &composite) const
bool isRelatedWith (const Composite &composite) const
bool isHomomorph (const Composite &composite) const
bool containsSelection () const
Debugging and Diagnostics

virtual bool isValid () const
virtual void dump (std::ostream &s=std::cout, Size depth=0) const
Application and Hosting

void host (Visitor< Composite > &visitor)
template<typename T >
bool applyAncestor (UnaryProcessor< T > &processor)
template<typename T >
bool applyChild (UnaryProcessor< T > &processor)
template<typename T >
bool applyDescendantPreorder (UnaryProcessor< T > &processor)
template<typename T >
bool applyDescendantPostorder (UnaryProcessor< T > &processor)
template<typename T >
bool applyDescendant (UnaryProcessor< T > &processor)
template<typename T >
bool applyPreorder (UnaryProcessor< T > &processor)
template<typename T >
bool applyPostorder (UnaryProcessor< T > &processor)
template<typename T >
bool apply (UnaryProcessor< T > &processor)
template<typename T >
bool applyLevel (UnaryProcessor< T > &processor, long level)

Static Public Attributes

static UnaryProcessor< CompositeDEFAULT_PROCESSOR
static KernelPredicateType DEFAULT_UNARY_PREDICATE

Private Member Functions

Size getHeight_ (Size size, Size &max_height) const
Size countDescendants_ () const
void clone_ (Composite &parent, Composite &stack) const
template<typename T >
bool applyLevelNostart_ (UnaryProcessor< T > &processor, long level)
template<typename T >
bool applyChildNostart_ (UnaryProcessor< T > &processor)
template<typename T >
bool applyPreorderNostart_ (UnaryProcessor< T > &processor)
template<typename T >
bool applyDescendantPreorderNostart_ (UnaryProcessor< T > &processor)
template<typename T >
bool applyDescendantPostorderNostart_ (UnaryProcessor< T > &processor)
void updateSelection_ ()
void determineSelection_ ()
void select_ (bool update_parent=true)
void deselect_ (bool update_parent=true)

Private Attributes

Size number_of_children_
Compositeparent_
Compositeprevious_
Compositenext_
Compositefirst_child_
Compositelast_child_
unsigned char properties_
bool contains_selection_
Size number_of_selected_children_
Size number_of_children_containing_selection_
TimeStamp selection_stamp_
TimeStamp modification_stamp_

Friends

class AncestorIteratorTraits
class ChildCompositeIteratorTraits
class CompositeIteratorTraits

Modifying and Accessing the Tree



void set (const Composite &composite, bool deep=true)
Compositeoperator= (const Composite &composite)
void get (Composite &composite, bool deep=true) const
Size getDegree () const
Size count (const KernelPredicateType &predicate) const
Size countDescendants () const
Size getPathLength (const Composite &composite) const
Size getDepth () const
Size getHeight () const
CompositegetRoot ()
const CompositegetRoot () const
CompositegetLowestCommonAncestor (const Composite &composite)
const CompositegetLowestCommonAncestor (const Composite &composite) const
template<typename T >
T * getAncestor (const T &)
template<typename T >
const T * getAncestor (const T &) const
template<typename T >
T * getPrevious (const T &)
template<typename T >
const T * getPrevious (const T &dummy) const
template<typename T >
T * getNext (const T &)
template<typename T >
const T * getNext (const T &dummy) const
CompositegetParent ()
const CompositegetParent () const
CompositegetChild (Index index)
const CompositegetChild (Index index) const
CompositegetSibling (Index index)
const CompositegetSibling (Index index) const
CompositegetFirstChild ()
const CompositegetFirstChild () const
CompositegetLastChild ()
const CompositegetLastChild () const
const PreciseTimegetModificationTime () const
const PreciseTimegetSelectionTime () const
void stamp (StampType stamp=BOTH)
void prependChild (Composite &composite)
void appendChild (Composite &composite)
void insertBefore (Composite &composite)
void insertAfter (Composite &composite)
void spliceBefore (Composite &composite)
void spliceAfter (Composite &composite)
void splice (Composite &composite)
bool removeChild (Composite &child)
Size removeSelected ()
Size removeUnselected ()
void replace (Composite &composite)
void swap (Composite &composite)
virtual void select ()
virtual void deselect ()
static bool insertParent (Composite &parent, Composite &first, Composite &last, bool destroy_parent=true)

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.

Definition at line 69 of file composite.h.


Member Typedef Documentation

Definition at line 944 of file composite.h.

Definition at line 931 of file composite.h.

Definition at line 1068 of file composite.h.

Definition at line 1098 of file composite.h.

Definition at line 1051 of file composite.h.

Definition at line 1084 of file composite.h.

Definition at line 1355 of file composite.h.

Definition at line 1381 of file composite.h.

Definition at line 1348 of file composite.h.

Definition at line 1368 of file composite.h.

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.

Definition at line 86 of file composite.h.


Member Enumeration Documentation

Time stamp type.

Enumerator:
MODIFICATION 
SELECTION 
BOTH 

Definition at line 91 of file composite.h.


Constructor & Destructor Documentation

BALL::Composite::Composite (  ) 

Default constructor. This constructor creates an empty composite object.

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

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 BALL::Composite::~Composite (  )  [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 BALL::Composite::appendChild ( Composite composite  ) 

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 >
BALL_INLINE bool BALL::Composite::apply ( UnaryProcessor< T > &  processor  )  [inline]

Apply a processor to the node and its subtree. applyPreorder is used.

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

Definition at line 1677 of file composite.h.

template<typename T >
bool BALL::Composite::applyAncestor ( UnaryProcessor< T > &  processor  )  [inline]

Apply a processor to all ancestors of this node.

Returns:
true if the processor could be applied.
Exceptions:
Exception::GeneralException 

Definition at line 1453 of file composite.h.

template<typename T >
bool BALL::Composite::applyChild ( UnaryProcessor< T > &  processor  )  [inline]

Apply a processor to all children of this node.

Returns:
true if the processor could be applied.
Exceptions:
Exception::GeneralException 

Definition at line 1479 of file composite.h.

template<typename T >
bool BALL::Composite::applyChildNostart_ ( UnaryProcessor< T > &  processor  )  [inline, private]

Definition at line 1485 of file composite.h.

template<typename T >
bool BALL::Composite::applyDescendant ( UnaryProcessor< T > &  processor  )  [inline]

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.
Exceptions:
Exception::GeneralException 

Definition at line 1664 of file composite.h.

template<typename T >
bool BALL::Composite::applyDescendantPostorder ( UnaryProcessor< T > &  processor  )  [inline]

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.
Exceptions:
Exception::GeneralException 

Definition at line 1541 of file composite.h.

template<typename T >
bool BALL::Composite::applyDescendantPostorderNostart_ ( UnaryProcessor< T > &  processor  )  [inline, private]

Definition at line 1547 of file composite.h.

template<typename T >
bool BALL::Composite::applyDescendantPreorder ( UnaryProcessor< T > &  processor  )  [inline]

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.
Exceptions:
Exception::GeneralException 

Definition at line 1507 of file composite.h.

template<typename T >
bool BALL::Composite::applyDescendantPreorderNostart_ ( UnaryProcessor< T > &  processor  )  [inline, private]

Definition at line 1513 of file composite.h.

template<typename T >
bool BALL::Composite::applyLevel ( UnaryProcessor< T > &  processor,
long  level 
) [inline]

Apply a processor to the node and its siblings.

Returns:
true if the processor could be applied.
Exceptions:
Exception::GeneralException 

Definition at line 1591 of file composite.h.

template<typename T >
bool BALL::Composite::applyLevelNostart_ ( UnaryProcessor< T > &  processor,
long  level 
) [inline, private]

Definition at line 1597 of file composite.h.

template<typename T >
bool BALL::Composite::applyPostorder ( UnaryProcessor< T > &  processor  )  [inline]

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.
Exceptions:
Exception::GeneralException 

Definition at line 1576 of file composite.h.

template<typename T >
bool BALL::Composite::applyPreorder ( UnaryProcessor< T > &  processor  )  [inline]

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.
Exceptions:
Exception::GeneralException 

Definition at line 1670 of file composite.h.

template<typename T >
bool BALL::Composite::applyPreorderNostart_ ( UnaryProcessor< T > &  processor  )  [inline, private]

Definition at line 1637 of file composite.h.

AncestorConstIterator BALL::Composite::beginAncestor (  )  const [inline]

Definition at line 946 of file composite.h.

AncestorIterator BALL::Composite::beginAncestor (  )  [inline]

Definition at line 933 of file composite.h.

ChildCompositeConstIterator BALL::Composite::beginChildComposite (  )  const [inline]

Definition at line 1070 of file composite.h.

ChildCompositeIterator BALL::Composite::beginChildComposite (  )  [inline]

Definition at line 1053 of file composite.h.

CompositeConstIterator BALL::Composite::beginComposite (  )  const [inline]

Definition at line 1357 of file composite.h.

CompositeIterator BALL::Composite::beginComposite (  )  [inline]

Definition at line 1350 of file composite.h.

virtual void BALL::Composite::clear (  )  [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 BALL::Selectable.

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

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

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)
void BALL::Composite::clone_ ( Composite parent,
Composite stack 
) const [private]
bool BALL::Composite::containsSelection (  )  const

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 BALL::Composite::count ( const KernelPredicateType predicate  )  const

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 BALL::Composite::countDescendants (  )  const

Count the number of descendants.

Returns:
Size the number of descendants of this node
Size BALL::Composite::countDescendants_ (  )  const [private]
void BALL::Composite::deleteChildrenList_ ( std::list< Composite * > &  composites  ) 
virtual void BALL::Composite::deselect (  )  [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 BALL::Selectable.

void BALL::Composite::deselect_ ( bool  update_parent = true  )  [private]
void BALL::Composite::destroy ( bool  virtual_destroy  ) 

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 BALL::Composite::destroy (  )  [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 BALL::Atom, BALL::AtomContainer, BALL::Bond, BALL::NucleicAcid, BALL::Nucleotide, BALL::PDBAtom, BALL::Protein, BALL::Residue, and BALL::SecondaryStructure.

void BALL::Composite::determineSelection_ (  )  [private]
virtual void BALL::Composite::dump ( std::ostream &  s = std::cout,
Size  depth = 0 
) const [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 BALL::Atom, BALL::AtomContainer, BALL::Bond, BALL::Chain, BALL::Fragment, BALL::Molecule, BALL::NucleicAcid, BALL::Nucleotide, BALL::PDBAtom, BALL::Protein, BALL::Residue, and BALL::SecondaryStructure.

AncestorConstIterator BALL::Composite::endAncestor (  )  const [inline]

Definition at line 951 of file composite.h.

AncestorIterator BALL::Composite::endAncestor (  )  [inline]

Definition at line 938 of file composite.h.

ChildCompositeConstIterator BALL::Composite::endChildComposite (  )  const [inline]

Definition at line 1076 of file composite.h.

ChildCompositeIterator BALL::Composite::endChildComposite (  )  [inline]

Definition at line 1059 of file composite.h.

CompositeConstIterator BALL::Composite::endComposite (  )  const [inline]

Definition at line 1362 of file composite.h.

CompositeIterator BALL::Composite::endComposite (  )  [inline]

Definition at line 1352 of file composite.h.

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

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 >
BALL_INLINE const T * BALL::Composite::getAncestor ( const T &   )  const [inline]

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

Definition at line 1704 of file composite.h.

template<typename T >
BALL_INLINE T * BALL::Composite::getAncestor ( const T &   )  [inline]

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

Definition at line 1684 of file composite.h.

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

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* BALL::Composite::getChild ( Index  index  ) 

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 BALL::Composite::getDegree (  )  const

Return the degree of the node. This method returns the number of children of a composite object.

Returns:
Size the number of children
Size BALL::Composite::getDepth (  )  const

Get the depth of this item in its tree. The depth of a root item is 0.

Returns:
Size the depth
const Composite* BALL::Composite::getFirstChild (  )  const

Return a const pointer to the first child.

Returns:
a const pointer to the first child or 0 if there is no child.
Composite* BALL::Composite::getFirstChild (  ) 

Return a pointer to the first child.

Returns:
a pointer to the first child or 0 if there is no child.
Size BALL::Composite::getHeight (  )  const

Get the height of this item in its tree. The hight of a leaf is 0.

Returns:
Size the height
Size BALL::Composite::getHeight_ ( Size  size,
Size max_height 
) const [private]
const Composite* BALL::Composite::getLastChild (  )  const

Return a const pointer to the last child.

Returns:
a const pointer to the last child or 0 if there is no child.
Composite* BALL::Composite::getLastChild (  ) 

Return a pointer to the last child.

Returns:
a pointer to the last child or 0 if there is no child.
const Composite* BALL::Composite::getLowestCommonAncestor ( const Composite composite  )  const

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* BALL::Composite::getLowestCommonAncestor ( const Composite composite  ) 

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& BALL::Composite::getModificationTime (  )  const

Return the time of last modification

Returns:
the last modification time
template<typename T >
BALL_INLINE const T * BALL::Composite::getNext ( const T &  dummy  )  const [inline]

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

Definition at line 1795 of file composite.h.

template<typename T >
BALL_INLINE T * BALL::Composite::getNext ( const T &   )  [inline]

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

Definition at line 1765 of file composite.h.

const Composite* BALL::Composite::getParent (  )  const

Return the composite's parent (const method).

Returns:
a pointer to the parent composite or 0 if no parent exists
Composite* BALL::Composite::getParent (  ) 

Return the composite's parent.

Returns:
a pointer to the parent composite or 0 if no parent exists
Size BALL::Composite::getPathLength ( const Composite composite  )  const

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 >
BALL_INLINE const T * BALL::Composite::getPrevious ( const T &  dummy  )  const [inline]

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

Definition at line 1754 of file composite.h.

template<typename T >
BALL_INLINE T * BALL::Composite::getPrevious ( const T &   )  [inline]

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

Definition at line 1722 of file composite.h.

const Composite& BALL::Composite::getRoot (  )  const

Get a const reference to the root of this item.

Returns:
Composite& the root
Composite& BALL::Composite::getRoot (  ) 

Get the root of this item.

Returns:
Composite& the root
const PreciseTime& BALL::Composite::getSelectionTime (  )  const

Return the time of last change of selection.

Returns:
the last time of change of selection
const Composite* BALL::Composite::getSibling ( Index  index  )  const

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* BALL::Composite::getSibling ( Index  index  ) 

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 >
BALL_INLINE bool BALL::Composite::hasAncestor ( const T &  dummy  )  const [inline]

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

Definition at line 1806 of file composite.h.

bool BALL::Composite::hasChild (  )  const

Return true if the node has a child.

bool BALL::Composite::hasNextSibling (  )  const

Return true if the node has a previous sibling. (Its parent has a child after this.)

bool BALL::Composite::hasParent (  )  const

Return true if the node has a parent.

bool BALL::Composite::hasPreviousSibling (  )  const

Return true if the node has a previous sibling. (Its parent has a child before this.)

bool BALL::Composite::hasSibling (  )  const

Return true if the node has a sibling. (Its parent has other childs.)

void BALL::Composite::host ( Visitor< Composite > &  visitor  ) 

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

Parameters:
visitor the visitor
Exceptions:
Exception::GeneralException 
void BALL::Composite::insertAfter ( Composite composite  ) 

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 BALL::Composite::insertBefore ( Composite composite  ) 

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
static bool BALL::Composite::insertParent ( Composite parent,
Composite first,
Composite last,
bool  destroy_parent = true 
) [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 BALL::Composite::isAncestorOf ( const Composite composite  )  const

Return true if the node has composite as descendent.

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

Return true if the node has the parent composite.

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

Return true if the node is a descendent of composite.

bool BALL::Composite::isEmpty (  )  const

Return true if the node does not contain children.

Returns:
bool true if number_of_children_ == 0
bool BALL::Composite::isFirstChild (  )  const

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

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

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

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

Return true if composite is homomorph to this node. (The subtrees of the two instances have to be of the same form.)

bool BALL::Composite::isInterior (  )  const

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

bool BALL::Composite::isLastChild (  )  const

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

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

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

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

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

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

Return true if the node is the parent of composite.

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

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

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

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

bool BALL::Composite::isRoot (  )  const

Return true if the node has no parent.

Returns:
bool true if parent_ == 0
bool BALL::Composite::isRootOf ( const Composite composite  )  const

Return true if the node is root of composite.

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

Return true if the node is a sibling of composite.

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

Test if the subtree with this node as root is valid. (The structure of the subtree has to be valid.)

Reimplemented from BALL::Object.

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

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

Inequality operator.

See also:
operator == B
Composite& BALL::Composite::operator= ( const Composite composite  ) 

Assignment operator.

Parameters:
composite the Composite tree to assign from
Returns:
a const reference to this
bool BALL::Composite::operator== ( const Composite composite  )  const

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 BALL::Composite::persistentRead ( PersistenceManager pm  )  [virtual]
virtual void BALL::Composite::persistentWrite ( PersistenceManager pm,
const char *  name = 0 
) const [virtual]

Write a persistent copy of the object.

Parameters:
pm the persistence manager
name the object name
Exceptions:
Exception::GeneralException 

Reimplemented from BALL::PersistentObject.

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

void BALL::Composite::prependChild ( Composite composite  ) 

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
ChildCompositeConstReverseIterator BALL::Composite::rbeginChildComposite (  )  const [inline]

Definition at line 1100 of file composite.h.

ChildCompositeReverseIterator BALL::Composite::rbeginChildComposite (  )  [inline]

Definition at line 1086 of file composite.h.

CompositeConstReverseIterator BALL::Composite::rbeginComposite (  )  const [inline]

Definition at line 1383 of file composite.h.

CompositeReverseIterator BALL::Composite::rbeginComposite (  )  [inline]

Definition at line 1370 of file composite.h.

bool BALL::Composite::removeChild ( Composite child  ) 

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 BALL::Composite::removeSelected (  ) 

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 AutoDeletable, they are just remove d from the hierarchy, but not deleted.

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

Returns:
the number of composites deleted.
Size BALL::Composite::removeUnselected (  ) 

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

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

Returns:
the number of composites deleted.
ChildCompositeConstReverseIterator BALL::Composite::rendChildComposite (  )  const [inline]

Definition at line 1105 of file composite.h.

ChildCompositeReverseIterator BALL::Composite::rendChildComposite (  )  [inline]

Definition at line 1091 of file composite.h.

CompositeConstReverseIterator BALL::Composite::rendComposite (  )  const [inline]

Definition at line 1388 of file composite.h.

CompositeReverseIterator BALL::Composite::rendComposite (  )  [inline]

Definition at line 1375 of file composite.h.

void BALL::Composite::replace ( Composite composite  ) 

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 BALL::Composite::select (  )  [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 BALL::Selectable.

void BALL::Composite::select_ ( bool  update_parent = true  )  [private]
void BALL::Composite::set ( const Composite composite,
bool  deep = true 
)

Assignment.

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

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 BALL::Composite::spliceAfter ( Composite composite  ) 

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 BALL::Composite::spliceBefore ( Composite composite  ) 

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 BALL::Composite::stamp ( StampType  stamp = BOTH  ) 

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 BALL::Composite::swap ( Composite composite  ) 

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
void BALL::Composite::updateSelection_ (  )  [private]

Friends And Related Function Documentation

friend class AncestorIteratorTraits [friend]

Definition at line 928 of file composite.h.

friend class ChildCompositeIteratorTraits [friend]

Definition at line 1048 of file composite.h.

friend class CompositeIteratorTraits [friend]

Definition at line 1345 of file composite.h.


Member Data Documentation

Definition at line 1445 of file composite.h.

Definition at line 107 of file composite.h.

Definition at line 108 of file composite.h.

Definition at line 1442 of file composite.h.

Definition at line 1443 of file composite.h.

Definition at line 1449 of file composite.h.

Definition at line 1441 of file composite.h.

Definition at line 1438 of file composite.h.

Definition at line 1447 of file composite.h.

Definition at line 1446 of file composite.h.

Definition at line 1439 of file composite.h.

Definition at line 1440 of file composite.h.

unsigned char BALL::Composite::properties_ [private]

Definition at line 1444 of file composite.h.

Definition at line 1448 of file composite.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Generated by  doxygen 1.6.3