/*
  crossword -- a crossword game
  Copyright (C) 2000 Falk Hueffner

  This program is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2 of the License, or (at your option)
  any later version.
  
  This program is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  more details.
  
  You should have received a copy of the GNU General Public License along with
  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  Place, Suite 330, Boston, MA 02111-1307 USA

  $Id: Trie.hh,v 1.7 2000/11/30 21:43:41 falk Exp $
*/

#ifndef TRIE_HH
#define TRIE_HH

#include <string>
#include <iostream>

#include "TrieNode.hh"

class Trie {
public:
    Trie(const std::string& file);
    ~Trie();

    const TrieNode* root() const { return &nodes[0]; }
    void print(std::ostream& out);

private:
    void printNode(std::ostream& out, std::string start, const TrieNode* node);

    const TrieNode* nodes;
    size_t mapLength;
};

#endif
