// This may look like C code, but it is really -*- C++ -*-
//
//  ${project}  --  Copyright (c) University of Aizu 1994
//
// [# Edit 1, Date 4-Dec-95, User c-goetze, Module Pointer.h #]
//

// Wrappers protect against including this file more than once

#ifndef Pointer_h
#define Pointer_h 1

//
//  >>> Insert short module description here <<<
//

#include <Index.h>

//  >>> Insert interface definitions here
class Pointer : public Listable {
public:
  // constructors (using "new"? Do not forget copy constructor!!!)
  Pointer(Index& index, char* key = 0);
  Pointer(Pointer& pointer);
  virtual Listable* duplicate(void);

  // assignment and comparison operators
  Pointer& operator=(Pointer& pointer);
  int operator==(Pointer& pointer);

  // action member functions
  Indexable* lookup();

  // IO
  virtual char* classname(void);
  virtual IOstatus readContents(void);
  virtual IOstatus writeContents(void);

private:
  Index* index_;
  Key key_;
};

// End of wrapper
#endif
// End of file
