home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1997 October
/
Chip_1997-10_cd.bin
/
tema
/
sybase
/
powerj
/
hpp.z
/
WBASECL.HPP
< prev
next >
Wrap
C/C++ Source or Header
|
1996-10-18
|
3KB
|
100 lines
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright (C) 1994, by WATCOM International Inc. All rights %
% reserved. No part of this software may be reproduced or %
% used in any form or by any means - graphic, electronic or %
% mechanical, including photocopying, recording, taping or %
% information storage and retrieval systems - except with the %
% written permission of WATCOM International Inc. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
#ifndef _WBASECL_HPP_INCLUDED
#define _WBASECL_HPP_INCLUDED
#ifndef _WNO_PRAGMA_PUSH
#pragma pack(push,8);
#pragma enum int;
#endif
#ifndef _WCHAR_HPP_INCLUDED
#include "wchar.hpp"
#endif
typedef unsigned long WClassID;
#define WDeclareName(c) \
public: \
virtual const WChar* GetClassName() const;
#define WDefineName(c) \
virtual const WChar* c::GetClassName() const { return WTEXT( #c ); }
#define WDeclareCommon(c) \
public:\
static WClassID ClassID(); \
virtual WClassID GetClassID() const; \
virtual WBool IsInstanceOf( WClassID id ) const; \
virtual WBool IsInstanceOf( const WChar *classname ) const;
#define WDefineCommon(c) \
static WClassID c::ClassID() \
{ static WClassID id = 0; \
extern WClassID WEXPORT WGetClassID( const WChar *name );\
if( !id ) id = WGetClassID( WTEXT( #c ) );\
return( id ); }\
virtual WClassID c::GetClassID() const { return c::ClassID(); }\
virtual WBool c::IsInstanceOf( WClassID id ) const \
{ return( id == c::ClassID() ); } \
virtual WBool c::IsInstanceOf( const WChar *classname ) const \
{ extern WClassID WEXPORT WGetClassID( const WChar *name );\
return IsInstanceOf( WGetClassID( classname ) ); }
#define WDeclareSubclass(c,p) \
\
WDeclareName(c) \
WDeclareCommon(c) \
public:\
virtual WBool IsDerivedFrom( WClassID id ) const; \
virtual WBool IsDerivedFrom( const WChar *classname ) const;
#define WDefineSubclass(c,p) \
\
WDefineName(c) \
WDefineCommon(c) \
virtual WBool c::IsDerivedFrom( WClassID id ) const \
{ return (WBool)( ( id == c::ClassID() ) ? 1 : p::IsDerivedFrom( id ) ); } \
virtual WBool c::IsDerivedFrom( const WChar *classname ) const \
{ extern WClassID WEXPORT WGetClassID( const WChar *name );\
return IsDerivedFrom( WGetClassID( classname ) ); }
#define WDeclareRoot(c) \
\
WDeclareName(c)\
WDeclareCommon(c) \
public:\
virtual WBool IsDerivedFrom( WClassID ) const;\
virtual WBool IsDerivedFrom( const WChar *classname ) const;
#define WDefineRoot(c) \
\
WDefineName(c)\
WDefineCommon(c) \
virtual WBool c::IsDerivedFrom( WClassID id ) const \
{ return (WBool)( id == c::ClassID() ); } \
virtual WBool c::IsDerivedFrom( const WChar *classname ) const \
{ extern WClassID WEXPORT WGetClassID( const WChar *name );\
return IsDerivedFrom( WGetClassID( classname ) ); }
#ifndef _WNO_PRAGMA_PUSH
#pragma enum pop;
#pragma pack(pop);
#endif
#endif // _WCLASS_HPP_INCLUDED