home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vgserv45.zip / BASE / HPTWGS2 / include / fcwtbl.h < prev    next >
C/C++ Source or Header  |  2001-03-21  |  16KB  |  506 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 FCWTBL_H
  16. #define FCWTBL_H
  17.  
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include <memory.h>
  21. #include <stdarg.h>
  22. #include <stdio.h>
  23.  
  24. class Table : public Parent
  25. {
  26.   private:
  27.     void*         pData;
  28.  
  29.   protected:
  30.  
  31.     FCWString     name;
  32.     int           rowCount;
  33.     int           rowLength;
  34.     char          genOptions;
  35.     char          type;
  36.     virtual void  ShowLoadError();
  37.  
  38.   public:
  39.  
  40.                   Table(char*, int, int);
  41.     virtual       ~Table();
  42.     int           NumRows();
  43.     virtual void  Load();
  44.     void          Release();
  45.     Bool          IsKeepAfterUse();
  46.     Bool          IsResident();
  47.     Bool          IsShared();
  48.     Bool          IsLoaded();
  49.     FCWString&    Name();
  50.  
  51.     virtual Bool  ValidateItem( FCWString const& data ) { return False; }
  52. };
  53.  
  54. /*-------------------------------------------------------------------------*/
  55. /*  Table header information...                                            */
  56. /*-------------------------------------------------------------------------*/
  57. typedef struct _tblhdr
  58. {
  59.  short    magicNumber;
  60.  short    pad;                         /* pad area                         */
  61.  int      dataOffset;
  62.  char     version;
  63.  char     byteOrder;
  64.  char     genOptions;
  65.  char     type;
  66.  short    numRows;
  67.  short    numColumns;
  68. } TblHdr;
  69.  
  70. /*-------------------------------------------------------------------------*/
  71. /*  Table header magic number...                                           */
  72. /*-------------------------------------------------------------------------*/
  73. const short TBL_MAGIC_NUMBER = 0xBCB0;
  74.  
  75. /*-------------------------------------------------------------------------*/
  76. /*  Table version...                                                       */
  77. /*-------------------------------------------------------------------------*/
  78. #define  TBL_CURRENT_VERSION           0
  79.  
  80. /*-------------------------------------------------------------------------*/
  81. /*  Table version...                                                       */
  82. /*-------------------------------------------------------------------------*/
  83. #define  TBL_FORMAT_ENDIAN_MASK        0x00000001
  84. #define  TBL_FORMAT_ASCII_MASK         0x00000010
  85.  
  86. #define  TBL_FORMAT_ENDIAN_LITTLE_ASCII  0x00000000
  87. #define  TBL_FORMAT_ENDIAN_BIG_ASCII     0x00000001
  88.  
  89. /*-------------------------------------------------------------------------*/
  90. /*  Table generation options...                                            */
  91. /*-------------------------------------------------------------------------*/
  92. #define  TBL_OPT_FOLD                  0x01
  93. #define  TBL_OPT_RESIDENT              0x02
  94. #define  TBL_OPT_SHARED                0x04
  95. #define  TBL_OPT_KEEPAFTERUSE          0x08
  96. #define  TBL_OPT_NOKEEPAFTERUSE        0x00
  97.  
  98. /*-------------------------------------------------------------------------*/
  99. /*  Table type...                                                          */
  100. /*-------------------------------------------------------------------------*/
  101. #define  TBL_TYPE_UNSPECIFIED          0
  102. #define  TBL_TYPE_MATCHVALID           1
  103. #define  TBL_TYPE_MATCHINVALID         2
  104. #define  TBL_TYPE_RANGE                3
  105. #define  TBL_TYPE_MESSAGE              4
  106.  
  107.  
  108. class MatchValidTable : public Table
  109. {
  110.   private:
  111.     void*    pData;
  112.  
  113.   protected:
  114.     virtual Item&  FirstColumn()=0;
  115.  
  116.   public:
  117.  
  118.                  MatchValidTable(char* tblName, int rowLen, int fKeepAfterUse);
  119.     virtual      ~MatchValidTable();
  120.     virtual Bool ValidateItem( FCWString const& data );
  121. };
  122.  
  123.  
  124. class MatchInvalidTable : public Table
  125. {
  126.   private:
  127.     void*    pData;
  128.  
  129.   protected:
  130.     virtual Item&  FirstColumn()=0;
  131.  
  132.   public:
  133.  
  134.                  MatchInvalidTable(char* tblName, int rowLen, int fKeepAfterUse );
  135.     virtual      ~MatchInvalidTable();
  136.     virtual Bool ValidateItem( FCWString const& data );
  137. };
  138.  
  139. class RangeValidTable : public Table
  140. {
  141.   private:
  142.     void*    pData;
  143.  
  144.   protected:
  145.     virtual Item&   FirstColumn()=0;
  146.     virtual Item&   SecondColumn()=0;
  147.     Bool            CheckCol2( int, FCWString const& );
  148.  
  149.   public:
  150.  
  151.                  RangeValidTable(char* tblName, int rowLen, int fKeepAfterUse );
  152.     virtual      ~RangeValidTable();
  153.     virtual Bool ValidateItem( FCWString const& data );
  154. };
  155.  
  156. class TBLNUM;
  157.  
  158. class MessageTable : public Table
  159. {
  160.   private:
  161.     void*    pData;
  162.  
  163.   protected:
  164.     Bool             nlsIdSet;
  165.     virtual TBLNUM&  MsgNumColumn()=0;
  166.     virtual Item&    MsgTxtColumn()=0;
  167.     void             SetLanguage();
  168.  
  169.   public:
  170.  
  171.                  MessageTable(char* tblName, int rowLen, int fKeepAfterUse );
  172.     virtual      ~MessageTable();
  173.     void         RetrieveMsg( int, char*, int );
  174.     virtual void Load();
  175. };
  176.  
  177.  
  178. struct TblEntry;
  179. class ShareTblList
  180. {
  181.   private:
  182.      LIST( TblEntry* )  LTables;
  183.  
  184.   public:
  185.      ShareTblList();
  186.      ~ShareTblList();
  187.      char*              Contains( char* );
  188.      char*              GetSharedTbl( char*, long, Bool, Bool& );
  189.      void               FreeSharedTbl( char* );
  190.      void               UpdateCount( char* );
  191.      void               SetTableLoaded( char* );
  192. };
  193.  
  194. /*-------------------------------------------------------------------------*/
  195. /*  TBLBIN2                                                                */
  196. /*-------------------------------------------------------------------------*/
  197.  
  198. class TBLBIN2 : public BIN2
  199. {
  200.   private:
  201.     void*    pData;
  202.  
  203.   public:
  204.     TBLBIN2 (Parent&, Level, int, int, int, int, int=0);
  205.     TBLBIN2 (const TBLBIN2& tb, int index);
  206.     TBLBIN2 (const TBLBIN2& tb, quadnum index);
  207.     virtual ~TBLBIN2();
  208.  
  209.     void operator = (const BIN2&);
  210.     void operator = (const TBLBIN2&);
  211.     virtual void operator = (const quadnum& v);
  212.     TBLBIN2 operator [] (quadnum) const;
  213.     int Contains( const quadnum&, int=1);
  214.     int Contains( const quadnum&, NumItem& );
  215.  
  216. };
  217.  
  218. /*-------------------------------------------------------------------------*/
  219. /*  TBLBIN4                                                                */
  220. /*-------------------------------------------------------------------------*/
  221.  
  222. class TBLBIN4 : public BIN4
  223. {
  224.   private:
  225.     void*    pData;
  226.  
  227.   public:
  228.     TBLBIN4 (Parent&, Level, int, int, int, int, int=0);
  229.     TBLBIN4 (const TBLBIN4& tb, int index);
  230.     TBLBIN4 (const TBLBIN4& tb, quadnum index);
  231.     virtual ~TBLBIN4();
  232.  
  233.     void operator = (const BIN4&);
  234.     void operator = (const TBLBIN4&);
  235.     virtual void operator = (const quadnum& v);
  236.     TBLBIN4 operator [] (quadnum) const;
  237.     int Contains( const quadnum&, int=1);
  238.     int Contains( const quadnum&, NumItem& );
  239.  
  240. };
  241.  
  242. /*-------------------------------------------------------------------------*/
  243. /*  TBLBIN8                                                                */
  244. /*-------------------------------------------------------------------------*/
  245.  
  246. class TBLBIN8 : public BIN8
  247. {
  248.   private:
  249.     void*    pData;
  250.  
  251.   public:
  252.     TBLBIN8 (Parent&, Level, int, int, int, int, int=0);
  253.     TBLBIN8 (const TBLBIN8& tb, int index);
  254.     TBLBIN8 (const TBLBIN8& tb, quadnum index);
  255.     virtual ~TBLBIN8();
  256.  
  257.     void operator = (const BIN8&);
  258.     void operator = (const TBLBIN8&);
  259.     virtual void operator = (const quadnum& v);
  260.     TBLBIN8 operator [] (quadnum) const;
  261.     int Contains( const quadnum&, int=1);
  262.     int Contains( const quadnum&, NumItem& );
  263.  
  264. };
  265.  
  266. /*-------------------------------------------------------------------------*/
  267. /*  TBLNUM                                                                 */
  268. /*-------------------------------------------------------------------------*/
  269.  
  270. class TBLNUM : public NUM
  271. {
  272.   private:
  273.     void*    pData;
  274.  
  275.   public:
  276.     TBLNUM (Parent&, Level, int, int, int, int, int=0);
  277.     TBLNUM (const TBLNUM& tb, int index);
  278.     TBLNUM (const TBLNUM& tb, quadnum index);
  279.     virtual ~TBLNUM();
  280.  
  281.     void operator = (const NUM&);
  282.     void operator = (const TBLNUM&);
  283.     virtual void operator = (const quadnum& v);
  284.     void operator = (const CHA& v);
  285.     TBLNUM operator [] (quadnum) const;
  286.     int Contains( const quadnum&, int=1);
  287.     int Contains( const quadnum&, NumItem& );
  288.     int Contains( const CHA&, int=1);
  289.     int Contains( const CHA&, NumItem& );
  290.  
  291. };
  292.  
  293. /*-------------------------------------------------------------------------*/
  294. /*  TBLNUMC                                                                */
  295. /*-------------------------------------------------------------------------*/
  296.  
  297. class TBLNUMC : public NUMC
  298. {
  299.   private:
  300.     void*    pData;
  301.  
  302.   public:
  303.     TBLNUMC (Parent&, Level, int, int, int, int, int=0);
  304.     TBLNUMC (const TBLNUMC& tb, int index);
  305.     TBLNUMC (const TBLNUMC& tb, quadnum index);
  306.     virtual ~TBLNUMC();
  307.  
  308.     void operator = (const NUMC&);
  309.     void operator = (const TBLNUMC&);
  310.     virtual void operator = (const quadnum& v);
  311.     TBLNUMC operator [] (quadnum) const;
  312.     int Contains( const quadnum&, int=1);
  313.     int Contains( const quadnum&, NumItem& );
  314.  
  315. };
  316.  
  317. /*-------------------------------------------------------------------------*/
  318. /*  TBLPACK                                                                */
  319. /*-------------------------------------------------------------------------*/
  320.  
  321. class TBLPACK : public PACK
  322. {
  323.   private:
  324.     void*    pData;
  325.  
  326.   public:
  327.     TBLPACK (Parent&, Level, int, int, int, int, int=0);
  328.     TBLPACK (const TBLPACK& tb, int index);
  329.     TBLPACK (const TBLPACK& tb, quadnum index);
  330.     virtual ~TBLPACK();
  331.  
  332.     void operator = (const PACK&);
  333.     void operator = (const TBLPACK&);
  334.     virtual void operator = (const quadnum& v);
  335.     TBLPACK operator [] (quadnum) const;
  336.     int Contains( const quadnum&, int=1);
  337.     int Contains( const quadnum&, NumItem& );
  338.  
  339. };
  340.  
  341. /*-------------------------------------------------------------------------*/
  342. /*  TBLPACF                                                                */
  343. /*-------------------------------------------------------------------------*/
  344.  
  345. class TBLPACF : public PACF
  346. {
  347.   private:
  348.     void*    pData;
  349.  
  350.   public:
  351.     TBLPACF (Parent&, Level, int, int, int, int, int=0);
  352.     TBLPACF (const TBLPACF& tb, int index);
  353.     TBLPACF (const TBLPACF& tb, quadnum index);
  354.     virtual ~TBLPACF();
  355.  
  356.     void operator = (const PACF&);
  357.     void operator = (const TBLPACF&);
  358.     virtual void operator = (const quadnum& v);
  359.     TBLPACF operator [] (quadnum) const;
  360.     int Contains( const quadnum&, int=1);
  361.     int Contains( const quadnum&, NumItem& );
  362.  
  363. };
  364.  
  365.  
  366. /*-------------------------------------------------------------------------*/
  367. /*  TBLCHA                                                                 */
  368. /*-------------------------------------------------------------------------*/
  369.  
  370. class TBLCHA : public CHA
  371. {
  372.   private:
  373.     void*    pData;
  374.  
  375.   public:
  376.  
  377.     TBLCHA (Parent&, Level, int, int, int, int);
  378.     TBLCHA (const TBLCHA& tb, int index);
  379.     TBLCHA (const TBLCHA& tb, quadnum index);
  380.     virtual ~TBLCHA();
  381.  
  382.     void operator = (const CHA& v);
  383.     void operator = (const TBLCHA&);
  384.     TBLCHA  operator [] (quadnum) const;
  385.  
  386.     friend class HEX;
  387.     void operator = (const HEX& v);
  388.  
  389.     friend class MIX;
  390.     void operator = (const MIX& v);
  391.  
  392.     friend class NUM;
  393.     void operator = (const NUM& v);
  394.  
  395.     void operator = (const char *v);
  396.     void operator = (const int v );
  397.     void operator = (const quadnum& v );
  398.     int Contains( const FCWString v, const quadnum i);
  399.     int Contains( const NUM&      v, const quadnum i);
  400.  
  401. };
  402.  
  403. /*-------------------------------------------------------------------------*/
  404. /*  TBLDBCS                                                                */
  405. /*-------------------------------------------------------------------------*/
  406.  
  407. class TBLDBCS : public DBCS
  408. {
  409.   private:
  410.     void*    pData;
  411.  
  412.   public:
  413.  
  414.     TBLDBCS (Parent&, Level, int, int, int, int);
  415.     TBLDBCS (const TBLDBCS& tb, int index);
  416.     TBLDBCS (const TBLDBCS& tb, quadnum index);
  417.     virtual ~TBLDBCS();
  418.  
  419.     // Interactions with other DBCS objects
  420.     void operator =  (const DBCS& v);
  421.     void operator = (const TBLDBCS&);
  422.  
  423.     // Interactions with character literals
  424.     void operator =  (const char *v);
  425.  
  426.     TBLDBCS operator [] (quadnum) const;
  427.     int Contains( const FCWString v, const quadnum i);
  428.  
  429. };
  430.  
  431. /*-------------------------------------------------------------------------*/
  432. /*  TBLMIX                                                                 */
  433. /*-------------------------------------------------------------------------*/
  434.  
  435. class TBLMIX : public MIX
  436. {
  437.   private:
  438.     void*    pData;
  439.  
  440.   public:
  441.  
  442.     TBLMIX (Parent&, Level, int, int, int, int);
  443.     TBLMIX (const TBLMIX& tb, int index);
  444.     TBLMIX (const TBLMIX& tb, quadnum index);
  445.     virtual ~TBLMIX();
  446.  
  447.     // Interactions with other MIX objects
  448.     void operator =  (const MIX& v);
  449.     void operator = (const TBLMIX&);
  450.     void operator =  (const CHA& v);
  451.  
  452.     // Interactions with character literals
  453.     void operator =  (const char *v);
  454.  
  455.     TBLMIX operator [] (quadnum) const;
  456.     int Contains( const FCWString v, const quadnum i);
  457.  
  458. };
  459.  
  460. /*-------------------------------------------------------------------------*/
  461. /*  TBLHEX                                                                 */
  462. /*-------------------------------------------------------------------------*/
  463.  
  464. class TBLHEX : public HEX
  465. {
  466.   private:
  467.     void*    pData;
  468.  
  469.   public:
  470.  
  471.     TBLHEX (Parent&, Level, int, int, int, int);
  472.     TBLHEX (const TBLHEX& tb, int index);
  473.     TBLHEX (const TBLHEX& tb, quadnum index);
  474.     virtual ~TBLHEX();
  475.  
  476.     // Interactions with other HEX objects
  477.     void operator =  (const HEX& v);
  478.     void operator = (const TBLHEX&);
  479.     void operator =  (const CHA& v);
  480.  
  481.     // Interactions with character literals
  482.     void operator =  (const char *v);
  483.  
  484.     TBLHEX operator [] (quadnum) const;
  485.     int Contains( const FCWString v, const quadnum i);
  486.  
  487. };
  488.  
  489. /*-------------------------------------------------------------------------*/
  490. /*  FCW Message table class...                                             */
  491. /*-------------------------------------------------------------------------*/
  492. class FCWMsgTable : public MessageTable
  493. {
  494.   protected:
  495.      TBLNUM   MsgNumber;
  496.      TBLCHA   MsgText;
  497.      TBLNUM&  MsgNumColumn() { return MsgNumber; };
  498.      Item&    MsgTxtColumn() { return (Item&) MsgText; };
  499.  
  500.   public:
  501.      FCWMsgTable();
  502.      void ShowLoadError();
  503. };
  504.  
  505. #endif
  506.