Dillo
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
dw::core::DeepIterator Class Reference

A stack of iterators, to iterate recursively through a widget tree. More...

#include <iterator.hh>

Classes

class  Stack
 

Public Member Functions

 DeepIterator (Iterator *it)
 Create a new deep iterator from an existing dw::core::Iterator. More...
 
 ~DeepIterator ()
 
lout::object::Objectclone ()
 Return an exact copy of the object. More...
 
DeepIteratorcreateVariant (Iterator *it)
 
IteratorgetTopIterator ()
 
ContentgetContent ()
 
bool isEmpty ()
 
bool next ()
 Move iterator forward and store content it. More...
 
bool prev ()
 Move iterator backward and store content it. More...
 
DeepIteratorcloneDeepIterator ()
 
int compareTo (lout::object::Comparable *other)
 Compare two objects, this and other. More...
 
void highlight (int start, int end, HighlightLayer layer)
 Highlight a part of the current content. More...
 
void getAllocation (int start, int end, Allocation *allocation)
 Return the shape, which a part of the item, the iterator points on, allocates. More...
 
void unhighlight (int direction, HighlightLayer layer)
 
- Public Member Functions inherited from lout::object::Object
virtual ~Object ()
 The destructor is defined as virtual (but not abstract), so that destruction of Object's works properly. More...
 
virtual bool equals (Object *other)
 Returns, whether two objects are equal. More...
 
virtual int hashValue ()
 Return a hash value for the object. More...
 
virtual void intoStringBuffer (misc::StringBuffer *sb)
 Store a textual representation of the object in a misc::StringBuffer. More...
 
const char * toString ()
 Use object::Object::intoStringBuffer to return a textual representation of the object. More...
 
virtual size_t sizeOf ()
 Return the number of bytes, this object totally uses. More...
 

Static Public Member Functions

static void scrollTo (DeepIterator *it1, DeepIterator *it2, int start, int end, HPosition hpos, VPosition vpos)
 

Private Member Functions

 DeepIterator ()
 
WidgetgetRespectiveParent (Widget *widget)
 
int getRespectiveLevel (Widget *widget)
 

Static Private Member Functions

static IteratorsearchDownward (Iterator *it, Content::Type mask, bool fromEnd)
 
static IteratorsearchSideward (Iterator *it, Content::Type mask, bool fromEnd)
 
static WidgetgetRespectiveParent (Widget *widget, Content::Type mask)
 
static int getRespectiveLevel (Widget *widget, Content::Type mask)
 

Private Attributes

Stack stack
 
Content::Type mask
 
Content content
 
bool hasContents
 

Detailed Description

A stack of iterators, to iterate recursively through a widget tree.

This class is similar to dw::core::Iterator, but not created by a widget, but explicitly from another iterator. Deep iterators do not have the limitation, that iteration is only done within a widget, instead, child widgets are iterated through recursively.

Constructor & Destructor Documentation

dw::core::DeepIterator::DeepIterator ( )
inlineprivate
dw::core::DeepIterator::DeepIterator ( Iterator it)
dw::core::DeepIterator::~DeepIterator ( )

Member Function Documentation

object::Object * dw::core::DeepIterator::clone ( )
virtual
DeepIterator* dw::core::DeepIterator::cloneDeepIterator ( )
inline
int dw::core::DeepIterator::compareTo ( lout::object::Comparable other)
virtual

Compare two objects, this and other.

Return a value < 0, when this is less than other, a value > 0, when this is greater than other, or 0, when this and other are equal.

If c1.equals(c2) (as defined in Object), c1.compareTo(c2) must be 0, but, unlike you may expect, the reversed is not necessarily true. This method returns 0, if, according to the rules for sorting, there is no difference, but there may still be differences (not relevant for sorting), which "equals" will care about.

Implements lout::object::Comparable.

References lout::container::typed::Vector< T >::get(), lout::container::typed::Collection< T >::size(), and stack.

Referenced by dw::core::SelectionState::adjustSelection(), dw::core::SelectionState::copy(), dw::core::CharIterator::highlight(), dw::core::SelectionState::highlight0(), dw::core::Iterator::scrollTo(), and dw::core::CharIterator::unhighlight().

DeepIterator * dw::core::DeepIterator::createVariant ( Iterator it)
Todo:
Not yet implemented, and actually not yet needed very much.

References DeepIterator().

Referenced by dw::core::SelectionState::adjustSelection().

void dw::core::DeepIterator::getAllocation ( int  start,
int  end,
Allocation allocation 
)
inline

Return the shape, which a part of the item, the iterator points on, allocates.

The parameters start and end have the same meaning as in DwIterator::highlight().

References dw::core::Iterator::getAllocation(), and dw::core::DeepIterator::Stack::getTop().

Referenced by dw::core::Iterator::scrollTo().

Content* dw::core::DeepIterator::getContent ( )
inline
int dw::core::DeepIterator::getRespectiveLevel ( Widget widget,
Content::Type  mask 
)
staticprivate
int dw::core::DeepIterator::getRespectiveLevel ( Widget widget)
inlineprivate

References getRespectiveLevel().

Widget * dw::core::DeepIterator::getRespectiveParent ( Widget widget,
Content::Type  mask 
)
staticprivate
Widget* dw::core::DeepIterator::getRespectiveParent ( Widget widget)
inlineprivate

References getRespectiveParent().

Iterator* dw::core::DeepIterator::getTopIterator ( )
inline
void dw::core::DeepIterator::highlight ( int  start,
int  end,
HighlightLayer  layer 
)
inline

Highlight a part of the current content.

Unhighlight the current content by passing -1 as start (see also (dw::core::Iterator::unhighlight). For text, start and end define the characters, otherwise, the shape is defined as [0, 1], i.e. for highlighting a whole dw::core::Content, pass 0 and >= 1.

References dw::core::DeepIterator::Stack::getTop(), and dw::core::Iterator::highlight().

Referenced by dw::core::SelectionState::adjustSelection(), dw::core::CharIterator::highlight(), and dw::core::SelectionState::highlight0().

bool dw::core::DeepIterator::isEmpty ( )
bool dw::core::DeepIterator::next ( )
bool dw::core::DeepIterator::prev ( )
static void dw::core::DeepIterator::scrollTo ( DeepIterator it1,
DeepIterator it2,
int  start,
int  end,
HPosition  hpos,
VPosition  vpos 
)
inlinestatic
Iterator * dw::core::DeepIterator::searchDownward ( Iterator it,
Content::Type  mask,
bool  fromEnd 
)
staticprivate
Iterator * dw::core::DeepIterator::searchSideward ( Iterator it,
Content::Type  mask,
bool  fromEnd 
)
staticprivate
void dw::core::DeepIterator::unhighlight ( int  direction,
HighlightLayer  layer 
)
inline

Member Data Documentation

Content dw::core::DeepIterator::content
private
bool dw::core::DeepIterator::hasContents
private

Referenced by clone(), DeepIterator(), and isEmpty().

Content::Type dw::core::DeepIterator::mask
private

Referenced by clone(), DeepIterator(), next(), and prev().

Stack dw::core::DeepIterator::stack
private

The documentation for this class was generated from the following files: