Qt API | Qtopia API | Qtopia Documentation |

# QDawg Class Reference

The QDawg class provides an implementation of a Directed Acyclic Word Graph. More...

`#include <qtopia/qdawg.h>`

List of all member functions.

## Public Members

- QDawg ()
- ~QDawg ()
- bool readFile ( const QString & filename )
- bool read ( QIODevice * dev )
- bool write ( QIODevice * dev ) const
- bool createFromWords ( QIODevice * dev )
- void createFromWords ( const QStringList & list )
- QStringList allWords () const
- bool contains ( const QString & s ) const
- int countWords () const
- class Node { }
- const Node * root () const

## Detailed Description

The QDawg class provides an implementation of a Directed Acyclic Word Graph.

A DAWG provides very fast look-up of words in a word list.

The word list is created using readFile(), read() or createFromWords(). A list of all the DAWG's words is returned by allWords(), and the total number of words is returned by countWords(). Use contains() to see if a particular word is in the DAWG. The root node is returned by root().

A global DAWG is maintained for the current locale. See the Global class for details.

The structure of a DAWG is a graph of Nodes. There are no cycles in the graph (since there are no inifinitely repeating words). Each Node is a member of a list of Nodes called a child list. Each Node in the child list has a letter, an isWord flag, at most one jump arc, and at most one arc to the next child in the list.

If you traverse the Nodes in a DAWG, starting from the root(), and you concatenate all the letters from the single child in each child list that you visit, at every Node which has the isWord flag set your concatenation will be a word in the list represented by the DAWG.

For example, the DAWG below represents the word list: ban, band, can, cane, cans, pan, pane, pans.

This structuring not only provides O(1) lookup of words in the word list, but also produces a smaller storage file than a plain text file word list.

## Member Function Documentation

### QDawg::QDawg ()

Constructs a new empty DAWG.

### QDawg::~QDawg ()

Deletes the DAWG.

### QStringList QDawg::allWords () const

Returns a list of all the words in the DAWG.

### bool QDawg::contains ( const QString & s ) const

Returns TRUE if the DAWG contains the word s; otherwise returns FALSE.

### int QDawg::countWords () const

Returns the number of words in the DAWG.

### void QDawg::createFromWords ( const QStringList & list )

Replaces all the DAWG's words with the words in the list.

### bool QDawg::createFromWords ( QIODevice * dev )

This is an overloaded member function, provided for convenience. It behaves essentially like the above function.

Replaces all the DAWG's words with words read from dev.

### bool QDawg::read ( QIODevice * dev )

Replaces the DAWG with the DAWG in dev. The file is memory-mapped.

See also write().

### bool QDawg::readFile ( const QString & filename )

Replaces the DAWG with the DAWG in filename. The file is memory-mapped.

See also write().

### const Node * QDawg::root () const

Returns the root Node of the DAWG.

### bool QDawg::write ( QIODevice * dev ) const

Writes the DAWG to dev, in a custom QDAWG format.

Warning: QDawg memory maps DAWG files. The safe method for writing to DAWG files is to write the data to a new file and move the new file to the old file name. QDawgs using the old file will continue using that file.

This file is part of the Qtopia , copyright © 1995-2002 Trolltech, all rights reserved.