home *** CD-ROM | disk | FTP | other *** search
- /*
- File: HandleObject.h
-
- Copyright: © 1991-1994 by Apple Computer, Inc.
- All rights reserved.
-
- Part of the AOCE Sample SMSAM Package. Consult the license
- which came with this software for your specific legal rights.
-
- */
-
-
-
- #ifndef __HANDLEOBJECT__
- #define __HANDLEOBJECT__
-
- #ifndef __MEMORY__
- #include <Memory.h>
- #endif
-
- #if THINK_CPLUS
- // #error ha ha ha
- #endif
-
- #if !defined ( THINK_CPLUS ) && !defined ( __SC__ )
- #define ENABLE_HANDLE_OBJECTS
- #endif
-
- #pragma push
- #pragma segment HandleObject
-
- class ostream;
-
- /***********************************|****************************************/
-
- class THandleObject
- #if defined ( ENABLE_HANDLE_OBJECTS )
- : public HandleObject
- #endif
- {
- public: THandleObject ();
- THandleObject ( Boolean lockedness );
- virtual ~THandleObject ();
-
- virtual ostream& operator >> ( ostream& ) const;
-
- protected: THandleObject ( const THandleObject& );
- THandleObject& operator = ( const THandleObject& );
- SignedByte GetState();
- void Lock();
- SignedByte LockHigh();
- void MoveHigh();
- void SetState(SignedByte flags);
- void Unlock();
-
- #if defined ( ENABLE_HANDLE_OBJECTS )
- public: void** operator new ( unsigned int );
- void operator delete ( void** );
- #endif
-
- #if defined ( debug )
- public: Boolean IsValidObject ( Boolean mustReturn = false ) const;
- static Boolean IsAHandleObject ( Handle h );
- #endif
-
- #if defined ( debug )
- private: OSType fTag;
- #endif
- };
-
- /***********************************|****************************************/
-
- const OSType kHandleObjectTag = 'HTAG';
- extern ostream& operator << ( ostream& s, const THandleObject* o );
- inline ostream& operator << ( ostream& s, const THandleObject& o ) { return o >> s; }
-
- /***********************************|****************************************/
-
- #pragma pop
-
- #endif // __HANDLEOBJECT__
-
-