home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1996 November
/
VPR9611B.ISO
/
vabasic
/
ntclnt.exe
/
DISK8
/
data.8
/
datab
/
INCLUDE
/
VWGLUGEN.HH
< prev
next >
Wrap
Text File
|
1996-07-29
|
17KB
|
494 lines
/*------------------------------------------------------------------------
* $Source: /rcs/vwrcs/integration/vwglugen.hh,v $
* $Date: 1996/06/08 19:00:04 $ $Revision: 1.22 $
*
* Copyright 1992, Visual Edge Software Ltd.
* Copyright (c) International Business Machines Inc, 1994
* -----------------------------------------
* 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 defining C glue functions for events and properties
* of VW components.
*
* 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
* such as Comp.sp, can be used to generate most the
* glue functions for properties and events.
*
* This is strictly VE internal; the VwPop.hh interface will be public.
* Include this file in the same file as the registration function
* for the class, after defining after defining
*
* CLASS_FILE to the name of the specification file
* for the class (such as Comp.sp)
* CLASS_TYPE to the name of the C++ class being registered,
* such as VwComponent
*------------------------------------------------------------------------*/
#define VArrayProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj, VwInt index) \
{ \
return (TYPE)obj->NAME(index); \
}\
\
static status_t INTPCALL C_CLASS_NAME ## Put ## NAME(C_CLASS_NAME* obj, VwInt index, TYPE value) \
{\
return obj->Put ## NAME(index, value); \
}
#define VArrayPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VArrayProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VReadOnlyArrayProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj, VwInt index) \
{ \
return (TYPE)obj->NAME(index); \
}
#define VReadOnlyArrayPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VReadOnlyArrayProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VPropertyWithUsage(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL C_CLASS_NAME ## Put ## NAME(C_CLASS_NAME* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define VPropertyWithUsageOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE) \
VPropertyWithUsage(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE)
#define VObjectPropertyWithUsage(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL C_CLASS_NAME ## Put ## NAME(C_CLASS_NAME* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define VObjectPropertyWithUsageOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE) \
VObjectPropertyWithUsage(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE)
#define VeProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL C_CLASS_NAME ## Put ## NAME(C_CLASS_NAME* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define VPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VeProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VObjectProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL C_CLASS_NAME ## Put ## NAME(C_CLASS_NAME* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define VObjectPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VObjectProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VReadOnlyProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define VReadOnlyPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VReadOnlyProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VReadOnlyPropertyWithUsage(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define VReadOnlyPropertyWithUsageOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE) \
VReadOnlyPropertyWithUsage(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE,USAGE)
#define VReadOnlyObjectProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define VReadOnlyObjectPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VReadOnlyObjectProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VSymbolProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL C_CLASS_NAME ## Put ## NAME(C_CLASS_NAME* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define VSymbolPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VSymbolProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VReadOnlySymbolProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL C_CLASS_NAME##NAME(C_CLASS_NAME* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define VReadOnlySymbolPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VReadOnlySymbolProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VeEvent(C_CLASS_NAME, NAME, TYPE) \
static void INTPCALL C_CLASS_NAME##Put ## NAME ( C_CLASS_NAME* obj, \
Vw ## NAME ## EventProcedurePtr_t proc, \
char *eventNAME, TYPE) \
{ \
if (eventName) \
obj->Put ## NAME ## Event(proc, eventName); \
else \
obj->Put ## NAME ## Event(proc, # NAME); \
}
#define VDesignOnlyProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VDesignOnlyPropertyOverride(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE) \
VDesignOnlyProperty(C_CLASS_NAME, NAME,TYPE,BASIC_TYPE)
#define VDesignOnlyObjectProperty VDesigOnlyProperty
#define VDesignOnlyObjectPropertyOverride \
VDesignOnlyObjectProperty
#define VEventArg(C_CLASS_NAME, NAME,TYPE,USAGE)
#define VEndArgs
#define VNoProperty(C_CLASS_NAME, NAME)
// Old fashion macros
#define ArrayProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj, VwInt index) \
{ \
return (TYPE)obj->NAME(index); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, VwInt index, TYPE value) \
{\
return obj->Put ## NAME(index, value); \
}
#define ArrayPropertyOverride(NAME,TYPE,BASIC_TYPE) \
ArrayProperty(NAME,TYPE,BASIC_TYPE)
#define NamedArrayProperty(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj, VwInt index) \
{ \
return (TYPE)obj->NAME(index); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, VwInt index, TYPE value) \
{\
return obj->Put ## NAME(index, value); \
}
#define NamedArrayPropertyOverride(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE) \
NamedArrayProperty(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE)
#define ReadOnlyArrayProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj, VwInt index) \
{ \
return (TYPE)obj->NAME(index); \
}
#define ReadOnlyArrayPropertyOverride(NAME,TYPE,BASIC_TYPE) \
ReadOnlyArrayProperty(NAME,TYPE,BASIC_TYPE)
#define PropertyWithUsage(NAME,TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define PropertyWithUsageOverride(NAME,TYPE,BASIC_TYPE,USAGE) \
PropertyWithUsage(NAME,TYPE,BASIC_TYPE,USAGE)
#define NamedPropertyWithUsage(NAME, VISIBLE_NAME, TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define NamedPropertyWithUsageOverride(NAME, VISIBLE_NAME, TYPE,BASIC_TYPE,USAGE) \
NamedPropertyWithUsage(NAME, VISIBLE_NAME, TYPE,BASIC_TYPE,USAGE)
#define Property(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define IMEProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define PropertyOverride(NAME,TYPE,BASIC_TYPE) \
Property(NAME,TYPE,BASIC_TYPE)
#define NamedProperty(NAME, VISIBLE_NAME, TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define NamedPropertyOverride(NAME, VISIBLE_NAME, TYPE,BASIC_TYPE) \
NamedProperty(NAME, VISIBLE_NAME, TYPE,BASIC_TYPE)
#define ReadOnlyProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define ReadOnlyPropertyWithUsage(NAME,TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define ReadOnlyPropertyWithUsageOverride(NAME,TYPE,BASIC_TYPE,USAGE) \
ReadOnlyPropertyWithUsage(NAME,TYPE,BASIC_TYPE,USAGE)
#define ReadOnlyPropertyOverride(NAME,TYPE,BASIC_TYPE) \
ReadOnlyProperty(NAME,TYPE,BASIC_TYPE)
#define NamedReadOnlyProperty(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define NamedReadOnlyPropertyOverride(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE) \
NamedReadOnlyProperty(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE)
#define ReadOnlyObjectProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define ReadOnlyObjectPropertyOverride(NAME,TYPE,BASIC_TYPE) \
ReadOnlyObjectProperty(NAME,TYPE,BASIC_TYPE)
#define ReadOnlyObjectPropertyWithUsage(NAME,TYPE,BASIC_TYPE,USAGE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define ReadOnlyObjectPropertyWithUsageOverride(NAME,TYPE,BASIC_TYPE,USAGE) \
ReadOnlyObjectPropertyWithUsage(NAME,TYPE,BASIC_TYPE,USAGE)
#define SymbolProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}\
\
static status_t INTPCALL Put ## NAME(CLASS_TYPE* obj, TYPE value) \
{\
return obj->Put ## NAME(value); \
}
#define SymbolPropertyOverride(NAME,TYPE,BASIC_TYPE) \
SymbolProperty(NAME,TYPE,BASIC_TYPE)
#define ReadOnlySymbolProperty(NAME,TYPE,BASIC_TYPE) \
static TYPE INTPCALL NAME(CLASS_TYPE* obj) \
{ \
return (TYPE)obj->NAME(); \
}
#define ReadOnlySymbolPropertyOverride(NAME,TYPE,BASIC_TYPE) \
ReadOnlySymbolProperty(NAME,TYPE,BASIC_TYPE)
#define Event(NAME) \
static void INTPCALL Put ## NAME ( CLASS_TYPE* obj, \
Vw ## NAME ## EventProcedurePtr_t proc, \
char *eventName) \
{ \
if (eventName) \
obj->Put ## NAME ## Event(proc, eventName); \
else \
obj->Put ## NAME ## Event(proc, # NAME); \
}
#define NamedEvent(NAME, VISIBLE_NAME) \
static void INTPCALL Put ## NAME ( CLASS_TYPE* obj, \
Vw ## NAME ## EventProcedurePtr_t proc, \
char *eventName) \
{ \
if (eventName) \
obj->Put ## NAME ## Event(proc, eventName); \
else \
obj->Put ## NAME ## Event(proc, # VISIBLE_NAME); \
}
#define ObjectProperty Property
#define ObjectPropertyOverride ObjectProperty
#define ObjectPropertyWithUsage PropertyWithUsage
#define ObjectPropertyWithUsageOverride ObjectPropertyWithUsage
#define DesignOnlyProperty(NAME,TYPE,BASIC_TYPE)
#define NamedDesignOnlyProperty(NAME,VISIBLE_NAME,TYPE,BASIC_TYPE)
#define DesignOnlyPropertyOverride(NAME,TYPE,BASIC_TYPE) \
DesignOnlyProperty(NAME,TYPE,BASIC_TYPE)
#define DesignOnlyObjectProperty DesignOnlyProperty
#define NamedDesignOnlyObjectProperty NamedDesignOnlyProperty
#define DesignOnlyObjectPropertyOverride \
DesignOnlyObjectProperty
#define NamedDesignOnlyObjectPropertyOverride \
NamedDesignOnlyObjectProperty
#define EventArg(NAME,TYPE,USAGE)
#define EndArgs
#define NamedEventArg(NAME,VISIBLE_NAME,TYPE,USAGE)
#define NamedEndArgs
#define NoProperty(NAME)
#define NoIMEProperty(NAME)
#define NamedNoProperty(NAME, VISIBLE_NAME)
#include CLASS_FILE
#undef VeProperty
#undef VPropertyOverride
#undef VObjectProperty
#undef VObjectPropertyOverride
#undef VPropertyWithUsage
#undef VPropertyWithUsageOverride
#undef VObjectPropertyWithUsage
#undef VObjectPropertyWithUsageOverride
#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 VDesignOnlyObjectProperty
#undef VDesignOnlyObjectPropertyOverride
#undef VSymbolProperty
#undef VSymbolPropertyOverride
#undef VReadOnlySymbolProperty
#undef VReadOnlySymbolPropertyOverride
#undef VeEvent
#undef VEventArg
#undef VEndArgs
#undef VNoProperty
#undef Property
#undef NamedProperty
#undef NamedPropertyOverride
#undef PropertyOverride
#undef ObjectProperty
#undef IMEProperty
#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 SymbolProperty
#undef SymbolPropertyOverride
#undef ReadOnlySymbolProperty
#undef ReadOnlySymbolPropertyOverride
#undef Event
#undef EventArg
#undef EndArgs
#undef NamedEvent
#undef NamedEventArg
#undef NamedEndArgs
#undef NoProperty
#undef NoIMEProperty
#undef NamedNoProperty