Annotation of mstools/ole20/samples/dispcalc/idata.cpp, revision 1.1.1.1

1.1       root        1: /*** 
                      2: *idata.cpp
                      3: *
                      4: *  Copyright (C) 1992, Microsoft Corporation.  All Rights Reserved.
                      5: *  Information Contained Herein Is Proprietary and Confidential.
                      6: *
                      7: *Purpose:
                      8: *  This file contains the INTERFACEDATA definitions for the methods
                      9: *  and properties on the CCalc object that are exposed for external
                     10: *  programmability via IDispatch.
                     11: *
                     12: *
                     13: *Implementation Notes:
                     14: *
                     15: *****************************************************************************/
                     16: 
                     17: #include <windows.h>
                     18: #include <ole2.h>
                     19: #if !defined(WIN32)
                     20: #include <olenls.h>
                     21: #endif
                     22: #include <dispatch.h>
                     23: 
                     24: #include "dispcalc.h"
                     25: 
                     26: 
                     27: //---------------------------------------------------------------------
                     28: //                   INTERFACEDATA definitions 
                     29: //---------------------------------------------------------------------
                     30: 
                     31: /* The INTERFACEDATA table describes the methods and properties that
                     32:  * are being exposed for external programmability via IDispatch.
                     33:  * This table is used to construct a CDispTypeInfo for this interface,
                     34:  * and that TypeInfo is in turn used to initialize and drive the
                     35:  * default implementation of IDispatch.
                     36:  */
                     37: 
                     38: 
                     39: // PDATA1() declares the PARAMDATA for a methods that takes a single param
                     40: //
                     41: #define PDATA1(NAME, TYPE) \
                     42:     static PARAMDATA NEAR rgpdata ## NAME = {#NAME, TYPE}
                     43: 
                     44: // MDATA() declares a single METHODDATA entry
                     45: //
                     46: #define MDATA(NAME, PDATA, IDMEMBER, IMETH, CARGS, KIND, TYPE) \
                     47:     { #NAME, PDATA, IDMEMBER, IMETH, CC_CDECL, CARGS, KIND, TYPE }
                     48: 
                     49: // The following macro defines the METHODDATA entries for a 
                     50: // property Put/Get method pair.
                     51: //
                     52: // Note: this macro *assumes* that the Put/Get pair are adjacent
                     53: // in the vtable, and that the Put method comes first.
                     54: //
                     55: #define PROPERTY(NAME, IMETH, ID, TYPE) \
                     56:     MDATA(NAME, &rgpdata ## NAME, ID, IMETH, 1,DISPATCH_PROPERTYPUT,VT_EMPTY), \
                     57:     MDATA(NAME, NULL, ID, IMETH+1, 0, DISPATCH_PROPERTYGET, TYPE)
                     58: 
                     59: // The following macro is used to define a METHODDATA entry for
                     60: // a method that takes zero parameters.
                     61: //
                     62: #define METHOD0(NAME, IMETH, ID, TYPE) \
                     63:     MDATA(NAME, NULL, ID, IMETH, 0, DISPATCH_METHOD, TYPE)
                     64: 
                     65: // and for one param
                     66: #define METHOD1(NAME, IMETH, ID, TYPE) \
                     67:     MDATA(NAME, &rgpdata ## NAME, ID, IMETH, 1, DISPATCH_METHOD, TYPE)
                     68: 
                     69: 
                     70: PDATA1(VALUE,  VT_I4);
                     71: PDATA1(ACCUM,  VT_I4);
                     72: PDATA1(OPND,   VT_I4);
                     73: PDATA1(OP,     VT_I2);
                     74: PDATA1(BUTTON, VT_BSTR);
                     75: 
                     76: static METHODDATA NEAR rgmdataCCalc[] = 
                     77: {
                     78:       PROPERTY(VALUE,   IMETH_ACCUM,    IDMEMBER_ACCUM,    VT_I4) 
                     79:     , PROPERTY(ACCUM,   IMETH_ACCUM,    IDMEMBER_ACCUM,    VT_I4) 
                     80:     , PROPERTY(OPND,    IMETH_OPERAND,  IDMEMBER_OPERAND,  VT_I4) 
                     81:     , PROPERTY(OP,      IMETH_OPERATOR, IDMEMBER_OPERATOR, VT_I2) 
                     82:     ,  METHOD0(EVAL,    IMETH_EVAL,     IDMEMBER_EVAL,     VT_BOOL) 
                     83:     ,  METHOD0(CLEAR,   IMETH_CLEAR,    IDMEMBER_CLEAR,    VT_EMPTY)
                     84:     ,  METHOD0(DISPLAY, IMETH_DISPLAY,  IDMEMBER_DISPLAY,  VT_EMPTY)
                     85:     ,  METHOD0(QUIT,    IMETH_QUIT,     IDMEMBER_QUIT,     VT_EMPTY)
                     86:     ,  METHOD1(BUTTON,  IMETH_BUTTON,   IDMEMBER_BUTTON,   VT_BOOL)
                     87: };
                     88: 
                     89: INTERFACEDATA NEAR g_idataCCalc = 
                     90: {
                     91:     rgmdataCCalc, DIM(rgmdataCCalc)
                     92: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.