home *** CD-ROM | disk | FTP | other *** search
/ Datatid 1999 #6 / Datatid_1999-06.iso / internet / Tango352Promo / P.SQL / PTKPKG.1 / BTRAPIW.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-12-09  |  7.4 KB  |  208 lines

  1. {*************************************************************************
  2. **
  3. **  Copyright 1982-1998 Pervasive Software Inc. All Rights Reserved
  4. **
  5. *************************************************************************}
  6. {***********************************************************************
  7.    BTRAPIW.PAS
  8.       This is the Pascal unit for MS Windows Btrieve to be called by
  9.       Borland Pascal for Windows or Borland Turbo Pascal for Windows.
  10.  
  11. ************************************************************************}
  12. UNIT btrapiw;
  13.  
  14. INTERFACE
  15. {***********************************************************************
  16.    The following types are needed for use with 'BTRCALLBACK'.
  17. ************************************************************************}
  18. TYPE
  19.    SQL_YIELD_T = RECORD
  20.       iSessionID : WORD;
  21.    END;
  22.  
  23.    BTRV_YIELD_T = RECORD
  24.       iOpCode           : WORD;
  25.       bClientIDlastFour : ARRAY[ 1..4 ] OF BYTE;
  26.    END;
  27.  
  28.    BTI_CB_INFO_T = RECORD
  29.       typex : WORD;
  30.       size  : WORD;
  31.       case u: Boolean of
  32.          False: ( sYield : SQL_YIELD_T );
  33.          True:  ( bYield : BTRV_YIELD_T );
  34.    END;
  35.  
  36.    BTI_CB_FUNC_PTR_T = FUNCTION(
  37.                           VAR bCallbackInfo : BTI_CB_INFO_T;
  38.                           VAR bUserData )   : WORD;
  39.  
  40.    BTI_CB_FUNC_PTR_PTR_T = ^BTI_CB_FUNC_PTR_T;
  41. {***********************************************************************
  42.    PLATFORM-INDEPENDENT FUNCTIONS
  43.      BTRV and BTRVID are the same on all platforms for which they have
  44.      an implementation.  We recommend that you use only these two
  45.      functions with Btrieve 6.x client components, and then issue
  46.      the B_STOP operation prior to exiting your application.
  47. ************************************************************************}
  48.    FUNCTION BTRV(
  49.                    operation      : WORD;
  50.                VAR positionBlock;
  51.                VAR dataBuffer;
  52.                VAR dataLen        : WORD;
  53.                VAR keyBuffer;
  54.                    keyNumber      : INTEGER ) : INTEGER;
  55.  
  56.    FUNCTION BTRVID(
  57.                    operation      : WORD;
  58.                VAR positionBlock;
  59.                VAR dataBuffer;
  60.                VAR dataLen        : WORD;
  61.                VAR keyBuffer;
  62.                    keyNumber      : INTEGER;
  63.                VAR clientID )     : INTEGER;
  64.  
  65. {***********************************************************************
  66.    BTRCALLBACK - Used to register call-back function to Btrieve.
  67. ************************************************************************}
  68.    FUNCTION BTRCALLBACK(
  69.                iAction                   : WORD;
  70.                iOption                   : WORD;
  71.                fCallBackFunction         : BTI_CB_FUNC_PTR_T;
  72.                fPreviousCallBackFunction : BTI_CB_FUNC_PTR_PTR_T;
  73.            VAR bUserData;
  74.            VAR bPreviousUserData         : POINTER;
  75.            VAR bClientID )               : INTEGER;
  76.  
  77. {***********************************************************************
  78.    HISTORICAL FUNCTIONS
  79.       These APIs were needed prior to Btrieve 6.x client
  80.       components.  Older applications may still call these functions,
  81.       and the Btrieve Windows 6.x client component will work correctly.
  82.       New applications using the 6.x client components do NOT have to
  83.       call these functions.
  84. ************************************************************************}
  85.    FUNCTION BTRVINIT( VAR initializationString ) : INTEGER;
  86.    FUNCTION BTRVSTOP : INTEGER;
  87.    FUNCTION BRQSHELLINIT( VAR initializationString ): INTEGER;
  88.  
  89. IMPLEMENTATION
  90. {***********************************************************************
  91.    PLATFORM-SPECIFIC FUNCTIONS
  92.       These APIs are specific to the MS Windows platform.  With the
  93.       exception of BTRCALLBACK, we recommend that you use either
  94.       BTRV or BTRVID, shown above.  Slight performance gains can be
  95.       achieved by using BTRCALL or BTRCALLID.
  96. ************************************************************************}
  97.    FUNCTION BTRCALL(
  98.                    operation : WORD;
  99.                VAR posblk;
  100.                VAR databuf;
  101.                VAR datalen   : WORD;
  102.                VAR keybuf;
  103.                    keylen    : BYTE;
  104.                    keynum    : INTEGER ) : INTEGER; FAR;
  105.                    external 'W1BTRV7' name 'BTRCALL';
  106.  
  107.    FUNCTION BTRCALLID(
  108.                    operation  : WORD;
  109.                VAR posblk;
  110.                VAR databuf;
  111.                VAR datalen    : WORD;
  112.                VAR keybuf;
  113.                    keylen     : BYTE;
  114.                    keynum     : INTEGER;
  115.                VAR clientID ) : INTEGER; FAR;
  116.                    external 'W1BTRV7'  name 'BTRCALLID';
  117.  
  118.    FUNCTION BTRCALLBACK(
  119.                iAction                   : WORD;
  120.                iOption                   : WORD;
  121.                fCallBackFunction         : BTI_CB_FUNC_PTR_T;
  122.                fPreviousCallBackFunction : BTI_CB_FUNC_PTR_PTR_T;
  123.            VAR bUserData;
  124.            VAR bPreviousUserData         : POINTER;
  125.            VAR bClientID )               : INTEGER;
  126.                external 'W1BTRV7'  name 'BTRCALLBACK';
  127.  
  128.    { Implementation of BTRV }
  129.    FUNCTION BTRV(   operation      : WORD;
  130.                 VAR positionBlock;
  131.                 VAR dataBuffer;
  132.                 VAR dataLen        : WORD;
  133.                 VAR keyBuffer;
  134.                     keyNumber      : INTEGER ): INTEGER;
  135.    VAR
  136.      keyLen: BYTE;
  137.    BEGIN
  138.     keyLen:= 255;                       {maximum key length}
  139.     BTRV := BTRCALL(
  140.                operation,
  141.                positionBlock,
  142.                dataBuffer,
  143.                dataLen,
  144.                keyBuffer,
  145.                keyLen,
  146.                keyNumber );
  147.    END; {BTRV}
  148.  
  149.  
  150.    { Implementation of BTRVID }
  151.    FUNCTION BTRVID(
  152.                    operation      : WORD;
  153.                VAR positionBlock;
  154.                VAR dataBuffer;
  155.                VAR dataLen        : WORD;
  156.                VAR keyBuffer;
  157.                    keyNumber      : INTEGER;
  158.                VAR clientID )     : INTEGER;
  159.    VAR
  160.      KeyLen: Byte;
  161.    BEGIN
  162.     KeyLen:= 255;                       {maximum key length}
  163.     BTRVID := BTRCALLID(
  164.                  operation,
  165.                  positionBlock,
  166.                  dataBuffer,
  167.                  dataLen,
  168.                  keyBuffer,
  169.                  keyLen,
  170.                  keyNumber,
  171.                  clientID );
  172.    END; {BTRVID}
  173.  
  174.    Function WBSHELLINIT(
  175.                VAR initializationString ): INTEGER; FAR;
  176.                    external 'W1BTRV7'  name 'WBSHELLINIT';
  177.  
  178.    Function WBRQSHELLINIT(
  179.                VAR initializationString ): INTEGER; FAR;
  180.                    external 'W1BTRV7'  name 'WBRQSHELLINIT';
  181.  
  182.    FUNCTION WBTRVINIT(
  183.                VAR intializationString): INTEGER; FAR;
  184.                    external 'W1BTRV7'  name 'WBTRVINIT';
  185.  
  186.    FUNCTION WBTRVSTOP: INTEGER; FAR;
  187.                external 'W1BTRV7'  name 'WBTRVSTOP';
  188.  
  189.    { Implementation of BTRVINIT }
  190.    FUNCTION BTRVINIT( VAR initializationString ): INTEGER;
  191.       BEGIN
  192.          BTRVINIT := WBTRVINIT( initializationString );
  193.       END; {End BTRVINIT}
  194.  
  195.    { Implementation of BTRVSTOP }
  196.    FUNCTION BTRVSTOP: INTEGER;
  197.       BEGIN
  198.          BTRVSTOP:= WBTRVSTOP;
  199.       END; {End BTRVSTOP}
  200.  
  201.    { Implementation of BRQSHELLINIT }
  202.    FUNCTION BRQSHELLINIT( VAR initializationString ): INTEGER;
  203.       BEGIN
  204.         BRQSHELLINIT:= WBRQSHELLINIT( initializationString );
  205.       END; {End BRQSHELLINIT}
  206.  
  207. END.
  208.