#ifndef THIS_CLASS_H
#define THIS_CLASS_H

/* Template.h -- example header file for OOPS classes

	THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
	"UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
	AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
	CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
	PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
	RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.

Author:
	K. E. Gorlen
	Computer Systems Laboratory, DCRT
	National Institutes of Health
	Bethesda, MD 20892

Modification History:

$Log:	Template_h,v $
# Revision 1.2  88/02/04  13:43:31  keith
# Make extern Class class_CLASSNAME const.
# 
# Revision 1.1  88/01/14  23:50:36  keith
# Modify for RCS maintenance
# 

*/

#include "BASE_CLASS.h"
// #include .h files for other classes used
// insert class declarations for classes accessed by pointer and reference ONLY

extern const Class class_THIS_CLASS;
overload THIS_CLASS_reader;

class THIS_CLASS: public BASE_CLASS {
// member variables here
protected:
	THIS_CLASS(fileDescTy&,THIS_CLASS&);
	THIS_CLASS(istream&,THIS_CLASS&);
	friend	void THIS_CLASS_reader(fileDescTy& fd, Object& where);
	friend	void THIS_CLASS_reader(istream& strm, Object& where);
	virtual void storer(fileDescTy&);
	virtual void storer(ostream&);
public:
	bool operator==(const THIS_CLASS&);
	bool operator!=(const THIS_CLASS& a)	{ return !(*this==a); }
	virtual	int	compare(const Object&);
	virtual Object*	copy();		// do not define to default deepCopy()
	virtual void	deepenShallowCopy();
	virtual unsigned hash();
	virtual const Class* isA();
	virtual bool	isEqual(const Object&);
	virtual void	printOn(ostream& strm);
	virtual const Class* species();
};

#endif
