#ifndef THIS_CLASS_H
#define THIS_CLASS_H

/*$Header: Template_h,v 2.204 89/10/07 23:22:05 keith Stab $*/

/* Template.h -- example header file for an NIH Library class

	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 2.204  89/10/07  23:22:05  keith
# Pre-release
# 
# Revision 2.203  89/08/10  09:52:32  keith
# Pre-release.
# 
# Revision 2.202.1.3  89/08/08  11:39:01  keith
# Fix up comments for Appendix A.
# 
# Revision 2.202.1.2  89/07/07  14:00:31  keith
# Add support for MI option
# 
# Revision 2.202.1.1  89/07/01  21:56:30  keith
# Base revision for R2.00 MI version
# 
# Revision 2.202  89/06/22  20:56:33  keith
# Base revision for AT&T C++ R2.0 release (Cycle 20)
# 
# Revision 2.201.1.2  89/06/21  12:59:40  keith
# Declare readFrom() constructors in DECLARE_MEMBERS.
# Remove unnecessary copy constructor.
# 
# Revision 2.201.1.1  89/06/01  23:57:32  keith
# Add Header RCS identification string.
# 
# Revision 2.201  89/05/12  11:20:53  keith
# Release for R2.0 Beta test.
# 
# Revision 2.200.1.2  89/05/12  11:02:44  keith
# Revised Object I/O.
# 
# Revision 2.200.1.1  89/04/24  17:19:28  keith
# Working revision for R2.0 Beta 6++
# 
# Revision 2.200  89/04/17  23:31:57  keith
# Base revision for R2.0 Beta 6.
# 
# Revision 2.121  89/02/16  11:10:16  keith
# Base revision for C++ R1.2.1 compatible version.

*/

// Define "MI" if this class uses multiple inheritance:
//#ifndef MI
//#define MI
//#endif

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

// If BASE_CLASS is Object:
// class THIS_CLASS: public VIRTUAL Object {

class THIS_CLASS: public BASE_CLASS {
	DECLARE_MEMBERS(THIS_CLASS);
// member variables here
protected:		// storer() functions for object I/O
	virtual void storer(OIOofd&) const;
	virtual void storer(OIOout&) const;
public:
	bool operator==(const THIS_CLASS&) const;
	bool operator!=(const THIS_CLASS& a) const { return !(*this==a); }
	virtual	int compare(const Object&) const;
	virtual Object* copy() const;		// shallowCopy() default if not defined
	virtual void deepenShallowCopy();
	virtual unsigned hash() const;
	virtual bool isEqual(const Object&) const;
	virtual void printOn(ostream& strm =cout) const;
	virtual const Class* species() const;
};

#endif
