// This may look like C code, but it is really -*- C++ -*-
//
//  ${project}  --  Copyright (c) University of Aizu 1994
//
//

// 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(const Pointer& pointer);
  virtual Listable* duplicate(void) const;

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

  // action member functions
  Indexable* lookup() const;

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

private:
  Index* index_;
  Key key_;
};

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