home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 November
/
VPR9611B.ISO
/
vabasic
/
ntclnt.exe
/
DISK8
/
data.8
/
datab
/
INCLUDE
/
VWREGGEN.HH
< prev
next >
Wrap
Text File
|
1996-07-29
|
20KB
|
507 lines
/*------------------------------------------------------------------------
* $Source: /rcs/vwrcs/integration/vwreggen.hh,v $
* $Date: 1996/06/08 19:00:52 $ $Revision: 1.28 $
*
* Copyright 1992, Visual Edge Software Ltd.
* -----------------------------------------
* ALL RIGHTS RESERVED. This notice is intended as a precaution against
* inadvertent publication, and shall not be deemed to constitute an
* acknowledgment that publication has occurred nor to imply any waiver
* of confidentiality. The year included in the notice is the year
* of the creation of the work.
*------------------------------------------------------------------------
* Visual Windows component integration support.
*
* Macros for event and property registration.
*
* The published interface for registration is in VwPop.hh.
* Registering a class means writing glue routines for every
* property and event, and writing a lot of stylized code
* to register those classes.
*
* This file, in conjunction with component specification files
* to register the VwPop calls to register the method and events.
*
* This is strictly VE internal; the VwPop.hh interface will be public.
*
* Include this file inside the registration function for the class,
* after defining CLASS_FILE to the name of the specification file
* for the class (such as Comp.sp)
*------------------------------------------------------------------------*/
#include <vwalias.hh>
#define VeProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VObjectProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
BASIC_TYPE, 0, FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VObjectPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
BASIC_TYPE, 0, FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VPropertyWithUsage(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VPropertyWithUsageOverride(C_CLASS_NAME, NAME, TYPE,BASIC_TYPE,USAGE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VObjectPropertyWithUsage(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
BASIC_TYPE, USAGE, FUNCTOVP(C_CLASS_NAME ## NAME),\
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VObjectPropertyWithUsageOverride(C_CLASS_NAME,NAME,TYPE,BASIC_TYPE,USAGE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
BASIC_TYPE, USAGE, FUNCTOVP(C_CLASS_NAME ## NAME),\
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VArrayProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls,\
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME), \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define VArrayPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls,\
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME), \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define VReadOnlyArrayProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), 0, \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define VReadOnlyArrayPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), 0, \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define VReadOnlyProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VReadOnlyPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VReadOnlyPropertyWithUsage(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VReadOnlyPropertyWithUsageOverride(C_CLASS_NAME, NAME, TYPE,BASIC_TYPE,USAGE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VReadOnlyObjectProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls,\
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VReadOnlyObjectPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls,\
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VDesignOnlyProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0);
#define VDesignOnlyPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0);
#define VDesignOnlyObjectProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls,\
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0);
#define VDesignOnlyObjectPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls,\
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0);
#define VeEvent(NAME) VREGISTRY->AddEvent(#NAME, p ## C_CLASS_NAME ## Cls, \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME),
#define VEventArg(C_CLASS_NAME, NAME,TYPE,USAGE) VREGISTRY->Argument(#NAME, VREGISTRY->LookupType(kVType ## TYPE), USAGE),
#define VEndArgs VwEndList);
#define VNoProperty(C_CLASS_NAME, NAME) VREGISTRY->RevokeProperty(p ## C_CLASS_NAME ## Cls, #NAME);
#define VSymbolProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VSymbolPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME), \
FUNCTOVP(C_CLASS_NAME ## Put ## NAME));
#define VReadOnlySymbolProperty(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME));
#define VReadOnlySymbolPropertyOverride(C_CLASS_NAME, NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, p ## C_CLASS_NAME ## Cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(C_CLASS_NAME ## NAME));
// Old fashion macros
#define Property(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
FUNCTOVP(Put ## NAME));
#define IMEProperty(NAME, TYPE, BASIC_TYPE) \
if(MB_CUR_MAX > 1) { \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
FUNCTOVP(Put ## NAME));\
}
#define PropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
FUNCTOVP(Put ## NAME));
#define NamedProperty(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
FUNCTOVP(Put ## NAME));
#define NamedPropertyOverride(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
FUNCTOVP(Put ## NAME));
#define ObjectProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define ObjectPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define PropertyWithUsage(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define PropertyWithUsageOverride(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define NamedPropertyWithUsage(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define NamedPropertyWithUsageOverride(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->OverrideProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define ObjectPropertyWithUsage(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), USAGE, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define ObjectPropertyWithUsageOverride(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), USAGE, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define ArrayProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME), \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define ArrayPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME), \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define NamedArrayProperty(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME), \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define NamedArrayPropertyOverride(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME), \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define ReadOnlyArrayProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
0, \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define ReadOnlyArrayPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), \
0, \
VREGISTRY->Argument("index", VREGISTRY->LookupType(kVTypeShort), 0), \
VEndList);
#define ReadOnlyProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME));
#define ReadOnlyPropertyWithUsage(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(NAME));
#define ReadOnlyPropertyWithUsageOverride(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), USAGE, \
FUNCTOVP(NAME));
#define ReadOnlyPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME));
#define NamedReadOnlyProperty(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME));
#define NamedReadOnlyPropertyOverride(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME));
#define ReadOnlyObjectProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0, \
FUNCTOVP(NAME));
#define ReadOnlyObjectPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0, \
FUNCTOVP(NAME));
#define ReadOnlyObjectPropertyWithUsage(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), USAGE, \
FUNCTOVP(NAME));
#define ReadOnlyObjectPropertyWithUsageOverride(NAME, TYPE, BASIC_TYPE, USAGE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), USAGE, \
FUNCTOVP(NAME));
#define DesignOnlyProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0);
#define NamedDesignOnlyProperty(NAME, VISIBLE_NAME,TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0);
#define DesignOnlyPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0);
#define DesignOnlyObjectProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0);
#define NamedDesignOnlyObjectProperty(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0);
#define DesignOnlyObjectPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0);
#define NamedDesignOnlyObjectPropertyOverride(NAME, VISIBLE_NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#VISIBLE_NAME, cls, \
VREGISTRY->LookupClass(#BASIC_TYPE)->Type(), 0);
#define Event(NAME) VREGISTRY->AddEvent(#NAME, cls, \
FUNCTOVP(Put ## NAME),
#define EventArg(NAME,TYPE,USAGE) VREGISTRY->Argument(#NAME, \
VREGISTRY->LookupType(kVType ## TYPE), USAGE),
#define EndArgs VwEndList);
#define NamedEvent(NAME, VISIBLE_NAME) VREGISTRY->AddEvent(#VISIBLE_NAME, cls, \
FUNCTOVP(Put ## NAME),
#define NamedEventArg(NAME,VISIBLE_NAME,TYPE,USAGE) VREGISTRY->Argument(#VISIBLE_NAME, \
VREGISTRY->LookupType(kVType ## TYPE), USAGE),
#define NamedEndArgs VwEndList);
#define NoProperty(NAME) VREGISTRY->RevokeProperty(cls, #NAME);
#define NoIMEProperty(NAME) \
if(MB_CUR_MAX > 1) { \
VREGISTRY->RevokeProperty(cls, #NAME); \
}
#define NamedNoProperty(NAME, VISIBLE_NAME) VREGISTRY->RevokeProperty(cls, #VISIBLE_NAME);
#define SymbolProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define SymbolPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME), FUNCTOVP(Put ## NAME));
#define ReadOnlySymbolProperty(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->AddProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME));
#define ReadOnlySymbolPropertyOverride(NAME, TYPE, BASIC_TYPE) \
VREGISTRY->OverrideProperty (#NAME, cls, \
VREGISTRY->LookupType(kVType ## BASIC_TYPE), 0, \
FUNCTOVP(NAME));
#include CLASS_FILE
#undef VeProperty
#undef VPropertyOverride
#undef VPropertyWithUsage
#undef VPropertyWithUsageOverride
#undef VArrayProperty
#undef VArrayPropertyOverride
#undef VReadOnlyArrayProperty
#undef VReadOnlyArrayPropertyOverride
#undef VReadOnlyProperty
#undef VReadOnlyPropertyOverride
#undef VReadOnlyPropertyWithUsage
#undef VReadOnlyPropertyWithUsageOverride
#undef VReadOnlyObjectProperty
#undef VReadOnlyObjectPropertyOverride
#undef VDesignOnlyProperty
#undef VDesignOnlyPropertyOverride
#undef VSymbolProperty
#undef VSymbolPropertyOverride
#undef VReadOnlySymbolProperty
#undef VReadOnlySymbolPropertyOverride
#undef VeEvent
#undef VEventArg
#undef VEndArgs
#undef VNoProperty
#undef VObjectProperty
#undef VObjectPropertyOverride
#undef VObjectPropertyWithUsage
#undef VObjectPropertyWithUsageOverride
#undef VDesignOnlyObjectProperty
#undef VDesignOnlyObjectPropertyOverride
#undef Property
#undef NamedProperty
#undef NamedPropertyOverride
#undef PropertyOverride
#undef ObjectProperty
#undef IMEProperty
#undef NoIMEProperty
#undef ObjectPropertyOverride
#undef PropertyWithUsage
#undef NamedPropertyWithUsage
#undef NamedPropertyWithUsageOverride
#undef PropertyWithUsageOverride
#undef ObjectpropertyWithUsage
#undef ObjectpropertyWithUsageOverride
#undef ArrayProperty
#undef NamedArrayProperty
#undef NamedArrayPropertyOverride
#undef ArrayPropertyOverride
#undef ReadOnlyArrayProperty
#undef ReadOnlyArrayPropertyOverride
#undef ReadOnlyProperty
#undef ReadOnlyPropertyWithUsage
#undef ReadOnlyPropertyWithUsageOverride
#undef NamedReadOnlyProperty
#undef NamedReadOnlyPropertyOverride
#undef ReadOnlyPropertyOverride
#undef ReadOnlyObjectProperty
#undef ReadOnlyObjectPropertyOverride
#undef ReadOnlyObjectPropertyWithUsage
#undef ReadOnlyObjectPropertyWithUsageOverride
#undef DesignOnlyProperty
#undef NamedDesignOnlyProperty
#undef DesignOnlyPropertyOverride
#undef DesignOnlyObjectProperty
#undef NamedDesignOnlyObjectProperty
#undef DesignOnlyObjectPropertyOverride
#undef NamedDesignOnlyObjectPropertyOverride
#undef Event
#undef EventArg
#undef EndArgs
#undef NamedEvent
#undef NamedEventArg
#undef NamedEndArgs
#undef NoProperty
#undef NamedNoProperty
#undef SymbolProperty
#undef SymbolPropertyOverride
#undef ReadOnlySymbolProperty
#undef ReadOnlySymbolPropertyOverride