/*
*
* REFERENCES:
*
* NOTES:
*
* REVISIONS:
*  sja05Nov92: Added a new constructor which allows the use of #defines's 
*              for the value parameter
*  ane11Nov92: Removed !=, == members.  They're in object now.
*
*  ker20Nov92: Added SetValue function
*  pcy26Nov92: object.h changed to apcobj.h
*  pcy27Jan93: HashValue is no longer const
*  ane08Feb93: Added copy constructor
*  cad28Sep93: Made sure destructor(s) virtual
*  ntf03Jan96: added printMeOut and operator<< functions for Attribute class
*/
#ifndef __ATTRIB_H
#define __ATTRIB_H

#if !defined( __APCOBJ_H )
#include "apcobj.h"
#endif

_CLASSDEF(Attribute)

#ifdef APCDEBUG
class ostream;
#endif

class Attribute : public Obj {
   
private:
   PCHAR theValue;
   INT   theAttributeCode;
   
protected:
#ifdef APCDEBUG
   virtual ostream& printMeOut(ostream& os);
#endif
   
public:
   
#ifdef APCDEBUG
   friend ostream& operator<< (ostream& os, Attribute &);
#endif
   
   Attribute(INT, PCHAR);
   Attribute(INT, LONG);
   Attribute(const Attribute &anAttr);
   virtual ~Attribute();
   INT                  GetCode() const { return theAttributeCode; };
   const PCHAR          GetValue();
   VOID SetCode(INT aCode);
   INT                  SetValue(const PCHAR);
   INT                  SetValue(LONG);        
   virtual INT          Equal( RObj ) const;
   virtual INT        IsA() const { return ATTRIBUTE; };
};
#endif