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

  1. {*************************************************************************
  2. **
  3. **  Copyright 1982-1998 Pervasive Software Inc. All Rights Reserved
  4. **
  5. *************************************************************************}
  6. {***********************************************************************
  7.    BTRAPI16.PAS
  8.       This is the Pascal unit for MS Windows Btrieve to be called by
  9.       Delphi 1.0 for MS Windows or Windows for Workgroups.
  10.  
  11. ************************************************************************}
  12. UNIT btrapi16;
  13.  
  14. INTERFACE
  15. {***********************************************************************
  16.    The following types are needed for use with 'BTRCALLBACK'.
  17. ************************************************************************}
  18. TYPE
  19.   SQL_YIELD_T = PACKED RECORD
  20.     iSessionID : WORD;
  21.   END;
  22.  
  23.   BTRV_YIELD_T = PACKED RECORD
  24.     iOpCode           : WORD;
  25.     bClientIDlastFour : ARRAY[ 1..4 ] OF BYTE;
  26.   END;
  27.  
  28.   BTI_CB_INFO_T = PACKED 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      : SMALLINT ) : SMALLINT;
  55.  
  56.   FUNCTION BTRVID(
  57.                  operation      : WORD;
  58.              VAR positionBlock;
  59.              VAR dataBuffer;
  60.              VAR dataLen        : WORD;
  61.              VAR keyBuffer;
  62.                  keyNumber      : SMALLINT;
  63.              VAR clientID )     : SMALLINT;
  64.  
  65. {***********************************************************************
  66.   PLATFORM-SPECIFIC FUNCTIONS
  67.     These APIs are specific to the MS Windows platform.  We recommend
  68.     that you use either BTRV or BTRVID, shown above.  Slight performance
  69.     gains can be achieved by using BTRCALL or BTRCALLID.
  70. ************************************************************************}
  71.   FUNCTION BTRCALL(
  72.                  operation   : WORD;
  73.              VAR posblk;
  74.              VAR databuf;
  75.              VAR datalen     : longInt;
  76.              VAR keybuf;
  77.                  keylen      : BYTE;
  78.                  keynum      : BYTE ) : SMALLINT;
  79.  
  80.   FUNCTION BTRCALLID(
  81.                  operation   : WORD;
  82.              VAR posblk;
  83.              VAR databuf;
  84.              VAR datalen     : longInt;
  85.              VAR keybuf;
  86.                  keylen      : BYTE;
  87.                  keynum      : BYTE;
  88.              VAR clientID           ) : SMALLINT;
  89.  
  90. {***********************************************************************
  91.    BTRCALLBACK - Used to register call-back function to Btrieve.
  92. ************************************************************************}
  93.   FUNCTION BTRCALLBACK(
  94.                  iAction                   : WORD;
  95.                  iOption                   : WORD;
  96.                  fCallBackFunction         : BTI_CB_FUNC_PTR_T;
  97.                  fPreviousCallBackFunction : BTI_CB_FUNC_PTR_PTR_T;
  98.              VAR bUserData;
  99.              VAR bPreviousUserData         : POINTER;
  100.              VAR bClientID )               : SMALLINT;
  101.  
  102. {***********************************************************************
  103.   HISTORICAL FUNCTIONS
  104.     These APIs were needed prior to Btrieve 6.x client
  105.     components.  Older applications may still call these functions,
  106.     and the Btrieve Windows 6.x client component will work correctly.
  107.     New applications using the 6.x client components do NOT have to
  108.     call these functions.
  109. ************************************************************************}
  110.   FUNCTION BTRVINIT( VAR initializationString ) : SMALLINT;
  111.   FUNCTION BTRVSTOP : SMALLINT;
  112.   FUNCTION BRQSHELLINIT( VAR initializationString ): SMALLINT;
  113.  
  114. IMPLEMENTATION
  115. {***********************************************************************
  116.   PLATFORM-SPECIFIC FUNCTIONS
  117.     These APIs are specific to the MS Windows platform.  With the
  118.     exception of BTRCALLBACK, we recommend that you use either
  119.     BTRV or BTRVID, shown above.  Slight performance gains can be
  120.     achieved by using BTRCALL or BTRCALLID.
  121. ************************************************************************}
  122.   FUNCTION BTRCALL(
  123.                  operation   : WORD;
  124.              VAR posblk;
  125.              VAR databuf;
  126.              VAR datalen     : longInt;
  127.              VAR keybuf;
  128.                  keylen      : BYTE;
  129.                  keynum      : BYTE ) : SMALLINT;
  130.              external 'W1BTRV7' name 'BTRCALL';
  131.  
  132.   FUNCTION BTRCALLID(
  133.                  operation   : WORD;
  134.              VAR posblk;
  135.              VAR databuf;
  136.              VAR datalen     : longInt;
  137.              VAR keybuf;
  138.                  keylen      : BYTE;
  139.                  keynum      : BYTE;
  140.              VAR clientID           ) : SMALLINT;
  141.              external 'W1BTRV7'  name 'BTRCALLID';
  142.  
  143.   FUNCTION BTRCALLBACK(
  144.                  iAction                   : WORD;
  145.                  iOption                   : WORD;
  146.                  fCallBackFunction         : BTI_CB_FUNC_PTR_T;
  147.                  fPreviousCallBackFunction : BTI_CB_FUNC_PTR_PTR_T;
  148.              VAR bUserData;
  149.              VAR bPreviousUserData         : POINTER;
  150.              VAR bClientID )               : SMALLINT;
  151.              external 'W1BTRV7'  name 'BTRCALLBACK';
  152.  
  153.   { Implementation of BTRV }
  154.   FUNCTION BTRV( operation     : WORD;
  155.              VAR positionBlock;
  156.              VAR dataBuffer;
  157.              VAR dataLen       : WORD;
  158.              VAR keyBuffer;
  159.                  keyNumber     : SMALLINT ): SMALLINT;
  160.  
  161.   VAR
  162.     keyLen: BYTE;
  163.     dataLenParm       : longInt;
  164.     dataPack          : array[1..2] of word absolute dataLenParm;
  165.  
  166.   BEGIN
  167.     keyLen:= 255;                       {maximum key length}
  168.     dataLenParm := dataLen;
  169.     BTRV := BTRCALL(
  170.                operation,
  171.                positionBlock,
  172.                dataBuffer,
  173.                dataLenParm,
  174.                keyBuffer,
  175.                keyLen,
  176.                keyNumber );
  177.  
  178.     dataLen := dataPack[1];
  179.  
  180.   END; {BTRV}
  181.  
  182.   { Implementation of BTRVID }
  183.   FUNCTION BTRVID(
  184.                  operation      : WORD;
  185.              VAR positionBlock;
  186.              VAR dataBuffer;
  187.              VAR dataLen        : WORD;
  188.              VAR keyBuffer;
  189.                  keyNumber      : SMALLINT;
  190.              VAR clientID )     : SMALLINT;
  191.   VAR
  192.     KeyLen : Byte;
  193.     VAR dataLenParm : longInt;
  194.     dataPack : array[1..2] of word absolute dataLenParm;
  195.  
  196.   BEGIN
  197.     dataLenParm := dataLen;
  198.     KeyLen:= 255;                       {maximum key length}
  199.     BTRVID := BTRCALLID(
  200.                 operation,
  201.                 positionBlock,
  202.                 dataBuffer,
  203.                 dataLenParm,
  204.                 keyBuffer,
  205.                 keyLen,
  206.                 keyNumber,
  207.                 clientID );
  208.  
  209.     dataLen := dataPack[1];
  210.  
  211.   END; {BTRVID}
  212.  
  213.   FUNCTION WBSHELLINIT(
  214.              VAR initializationString ): SMALLINT; FAR;
  215.              external 'W1BTRV7' name 'WBSHELLINIT';
  216.  
  217.   FUNCTION WBRQSHELLINIT(
  218.              VAR initializationString ): SMALLINT; FAR;
  219.              external 'W1BTRV7' name 'WBRQSHELLINIT';
  220.  
  221.   FUNCTION WBTRVINIT(
  222.              VAR intializationString): SMALLINT; FAR;
  223.              external 'W1BTRV7' name 'WBTRVINIT';
  224.  
  225.   FUNCTION WBTRVSTOP: SMALLINT; FAR;
  226.              external 'W1BTRV7' name 'WBTRVSTOP';
  227.  
  228.   { Implementation of BTRVINIT }
  229.   FUNCTION BTRVINIT( VAR initializationString ): SMALLINT;
  230.     BEGIN
  231.        BTRVINIT := WBTRVINIT( initializationString );
  232.     END;
  233.  
  234.    { Implementation of BTRVSTOP }
  235.   FUNCTION BTRVSTOP: SMALLINT;
  236.     BEGIN
  237.        BTRVSTOP:= WBTRVSTOP;
  238.     END;
  239.  
  240.   { Implementation of BRQSHELLINIT }
  241.   FUNCTION BRQSHELLINIT( VAR initializationString ): SMALLINT;
  242.     BEGIN
  243.        BRQSHELLINIT:= WBRQSHELLINIT( initializationString );
  244.     END;
  245.  
  246. END.
  247.  
  248.