home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vgserv45.zip / BASE / HPTWGS2 / include / fcwparm.h < prev    next >
C/C++ Source or Header  |  2001-03-21  |  3KB  |  107 lines

  1. /*****************************************************************************/
  2. /*                                                                           */
  3. /*                           OCO SOURCE MATERIALS                            */
  4. /*                             IBM CONFIDENTIAL                              */
  5. /*                                    OR                                     */
  6. /*                        IBM CONFIDENTIAL RESTRICTED                        */
  7. /*            WHEN COMBINED WITH THE AGGREGATED OCO SOURCE MODULES           */
  8. /*                           FOR THIS PROGRAM PRODUCT                        */
  9. /*                                                                           */
  10. /*      VisualAge Generator Server for OS/2, AIX, HP-UX, and Windows NT      */
  11. /*                          Version 3.0  5697-C28                            */
  12. /*                    (C) COPYRIGHT IBM CORP. 1994,1997                      */
  13. /*                                                                           */
  14. /*****************************************************************************/
  15. #ifndef FCWPARM_H
  16. #define FCWPARM_H
  17.  
  18. // *********************************************************************
  19. // Base for all objects that can be passed as call parms
  20. // *********************************************************************
  21.  
  22. // For RPC
  23. #define RPCNORMAL   0
  24. #define RPCSQL      1
  25. #define RPCMAP      2
  26. #define RPCEZEDLPSB 3
  27.  
  28. struct RPCParm
  29. {
  30.   long     length;
  31.   ItemType type;
  32.   int      specialType;
  33.   int      occurs;
  34.   int      level;
  35.   int      group;
  36.   int      offset;
  37.   long     numberOfFields;          /* Used to build data format descriptor*/
  38.   short    RLIflag;
  39.   short    NOIflag;
  40. };
  41. class LitParm;
  42. class PDescriptor;
  43.  
  44. class Parameter
  45. {
  46.    public:
  47.       Parameter();
  48.       virtual ~Parameter();
  49.  
  50.       virtual long ParmSize() = 0;
  51.       virtual char* ParmData() = 0;
  52.       virtual Bool  isFileRecord() { return False; };
  53.  
  54.       virtual LIST(RPCParm*)& RPCList() = 0;
  55.       virtual int& fNumberOfRPCEntries() = 0;
  56.       virtual void SetupRpc() = 0;
  57.  
  58.       virtual ItemType  itemType() const { return tCHA; };
  59.       virtual int       Decimals() const { return 0; };
  60.       virtual int       Occurs()   const { return 1; };
  61.  
  62.       PDescriptor*      getDescriptor();
  63.  
  64.    private:
  65.       PDescriptor*   _pDescriptor;
  66.       void* pData;
  67. };
  68.  
  69. // For RPC
  70. #define MAX_PARMS 30
  71. struct FCWCallRPCBlock
  72. {
  73.   struct
  74.   {
  75.     Parameter *parmPtr;
  76.   } parm[MAX_PARMS];
  77. };
  78.  
  79. /**********************************************************************/
  80. /* Parameter Descriptor - This is used for callable functions         */
  81. /**********************************************************************/
  82. class Item;
  83. class PDescriptor : public Parameter
  84. {
  85.   public:
  86.     PDescriptor( Parameter* );
  87.     ~PDescriptor();
  88.  
  89.     int&              fNumberOfRPCEntries();
  90.     LIST(RPCParm*)&   RPCList();
  91.     void              SetupRpc();
  92.     long              ParmSize();
  93.     char*             ParmData();
  94.  
  95.   private:
  96.     int            ParmType( Parameter* );
  97.  
  98.     int            numberOfRPCEntries;
  99.     LIST(RPCParm*) LRPCParm;                           /* List of RPC Parms*/
  100.  
  101.     Parameter*     item;
  102.     void*          pData;
  103.  
  104. };
  105.  
  106. #endif
  107.