/*!******************************************************************************

  @file         hbd03.h

  ------------------------------------------------------------------------------

  @author       UweH

  @brief        filesysteminterface_3

\if EMIT_LICENCE

    ========== licence begin  GPL
    Copyright (c) 2000-2005 SAP AG

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    ========== licence end
\endif

********************************************************************************/

#ifndef HBD03_H
#define HBD03_H


/*===========================================================================*
 *     RefType: C++                                                          *
 *===========================================================================*/

/*===========================================================================*
 *     MD5: '\x49\x8a\x5e\x01\xc8\xa6\xdb\x2d\x2c\xf8\x5c\x04\x64\x38\x89\xea'
 *===========================================================================*/


/*===========================================================================*
 *  INCLUDES                                                                 *
 *===========================================================================*/

#include "gsp00.h"
#include "ggg00.h"


/*===========================================================================*
 *  FUNCTION PROTOTYPES                                                      *
 *===========================================================================*/

externPascal void b03add_inv (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tgg00_Lkey            &  lk,
    tgg00_Lkey            &  rk);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03AggrFuncOnIndex (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  InvFileId,
    tgg00_FileId          &  AuxFileId,
    tgg00_TwoKeys         &  StartKeyPair,
    tgg00_TwoKeys         &  StopKeyPair,
    tgg00_AggrDescrRec    &  AggrFieldDescr,
    tgg00_SelectFieldsParam  &  SelParam,
    tgg00_StackDesc       &  StackDesc,
    tsp00_Buf &              AuxBuffer,
    tsp00_Buf &              ResultBuffer,
    pasbool                  bOneListOnly,
    pasbool                  bWarnOfNullValues);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03calculate_page_count (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tgg00_Lkey            &  startkey,
    tgg00_Lkey            &  stopkey,
    pasbool                  count_records,
    tsp00_Int4            &  page_count,
    tsp00_Int4            &  min_page_cnt,
    tsp00_Int4            &  record_cnt);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03create_index (
    tgg00_TransContext    &  t,
    tgg00_IndexMode_Param     indexmode,
    tgg00_FileId          &  file_id,
    tgg00_FileId          &  inv_id,
    tgg00_StackDesc       &  stack_desc,
    tgg00_IndexCounter    &  index_counter);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03DiagnoseIndex (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tgg00_FileId          &  inv_id,
    tgg00_FileId          &  temp_tree_id,
    tgg00_Rec             &  b,
    tsp00_Int4            &  prim_duplicates,
    tsp00_Int4            &  prim_missing);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03del_inv (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tgg00_Lkey            &  lk,
    tgg00_Lkey            &  rk);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03get_inv (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  act_tree_id,
    tgg00_Lkey            &  lk,
    tgg00_Lkey            &  rk,
    tgg00_Lkey            &  stop_rk,
    tgg00_Lkey            &  CurrentPrimKey,
    tgg00_BdInvSet        &  bd_inv_info,
    pasbool                  count_only,
    unsigned char            wanted_lock,
    tgg00_KeylistBuf      &  b,
    tsp00_Int4            &  primkeycnt,
    tsp00_Int4            &  ll);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03GetInvUsageCnt (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tsp00_Int4            &  inv_usage_cnt);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03KeyVtrace (
    tgg00_TransContext    &  t,
    tsp00_KeyPtr             pKey1,
    tsp00_Int4               KeyLen1,
    tsp00_KeyPtr             pKey2,
    tsp00_Int4               KeyLen2,
    tgg00_VtraceType_Param     TraceObject);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03InvStatistics (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  FiledId,
    pasbool                  bWithSelectivity,
    tgg00_SampleInfo      &  StatInfo);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03SimpleInvStatistics (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  FiledId,
    tsp00_Int4            &  leafnodes,
    tsp00_Int4            &  sec_key_cnt);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03next_invkey (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    pasbool                  inclusive,
    tgg00_Lkey            &  lk);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03ResetUsageInfo (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FiledId);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03ReleaseInvTree (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FiledId);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03ResetUsageFlag (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FiledId);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03StatisticsUpdate (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FiledId,
    tsp00_Int4            &  NumLeaves,
    tsp00_Int4            &  AvgPrimKeyCountPerPage,
    pasbool                  bOnlyCountLeaves);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03SetToNotAccessible (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FiledId);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03ParticipantCreateIndex (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  PrimFileId,
    tgg00_FileId          &  InvFileId,
    tgg00_StackDesc       &  StackDesc,
    tsp00_KeyPtr             StartPrimKey,
    tsp00_KeyPtr             StopPrimKey,
    tsp00_Int4               StartPrimKeyLen,
    tsp00_Int4               StopPrimKeyLen,
    tsp00_Int4               NumLeavesToScan,
    tsp00_Int4               AvgRecordsPerLeaf,
    tsp00_PageNo             PrimQueuePno,
    tsp00_PageNo             SecQueuePno,
    pasbool                  bUseMemorySort,
    tgg00_IndexMode_Param     IndexMode,
    tgg00_IndexCounter    &  IndexCounter,
    tsp00_PageNo          &  FirstLeafPno,
    pasbool               &  bEntriesExist,
    pasbool               &  bErrorOnBaseTable);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03select_invrec (
    tgg00_TransContext    &  t,
    tgg00_TwoFileIds      &  file_ids,
    tgg00_TwoKeys         &  keypair,
    tgg00_TwoKeys         &  stop_keypair,
    tgg00_Lkey            &  start_key,
    tgg00_BdInvSet        &  invrange_set,
    tsp00_Int4               recbuf_size,
    tsp00_MoveObjPtr         recbuf_ptr,
    tgg00_SelectFieldsParam  &  sel,
    tgg00_StackDesc       &  stack_desc,
    tgg00_LockReqMode     &  granted_lock,
    pasbool                  count_usage);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03test_unique_inv (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tgg00_Lkey            &  sec_key,
    tgg00_Lkey            &  prim_key);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03VerifyInvTree (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FiledId,
    pasbool                  IsCold,
    pasbool                  bWithExtendedCheck,
    tsp00_Int4            &  NumPages);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void b03MergeInvLists (
    tgg00_TransContext    &  t,
    tgg00_FileId          &  file_id,
    tgg00_FileId          &  f_id_dest,
    tgg00_TwoKeys         &  start_keys,
    tgg00_TwoKeys         &  stop_keys,
    pasbool                  prim_stop,
    pasbool                  count_only,
    tsp00_Int4            &  count);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03OmsAddInv (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FileId,
    tsp00_KeyPtr             pSecKey,
    tsp00_Int4               SecKeyLen,
    tsp00_KeyPtr             pNewPrimKey,
    tsp00_Int4               NewPrimKeyLen,
    tsp00_Int4               FoundPrimKeySize,
    tsp00_KeyPtr             pFoundPrimKey,
    tsp00_Int4            &  FoundPrimKeyLen);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03OmsDelInv (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FileId,
    tsp00_KeyPtr             pSecKey,
    tsp00_Int4               SecKeyLen,
    tsp00_KeyPtr             pNewPrimKey,
    tsp00_Int4               NewPrimKeyLen,
    tsp00_Int4               FoundPrimKeySize,
    tsp00_KeyPtr             pFoundPrimKey,
    tsp00_Int4               FoundPrimKeyToCompareSize,
    tsp00_Int4            &  FoundPrimKeyLen);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03OmsGetInv (
    tgg00_TransContext    &  Trans,
    tgg00_FileId          &  FileId,
    tsp00_KeyPtr             pSecKey,
    tsp00_Int4               SecKeyLen,
    tsp00_Int4               PrimKeySize,
    tsp00_KeyPtr             pPrimKey,
    tsp00_Int4            &  PrimKeyLen);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03TestTree (
    tgg00_TransContext    &  trans);

/* Don't edit this file by hand, it is generated by ptocProto.py */

externPascal void bd03ExtractIndex (
    tgg00_TransContext    &  trans,
    tsp00_PageNo             root,
    tsp00_VFilename       &  hostFileName);

/* Don't edit this file by hand, it is generated by ptocProto.py */


#endif

