/*
 * $Id$
 */

/*
 * Harbour Project source code:
 * Header file for Advantage Database Server RDD
 *
 * Copyright 1999 Alexander S.Kresin <alex@belacy.belgorod.su>
 * www - http://www.harbour-project.org
 *
 * 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, with one exception:
 *
 * The exception is that if you link the Harbour Runtime Library (HRL)
 * and/or the Harbour Virtual Machine (HVM) with other files to produce
 * an executable, this does not by itself cause the resulting executable
 * to be covered by the GNU General Public License. Your use of that
 * executable is in no way restricted on account of linking the HRL
 * and/or HVM code into it.
 *
 * 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., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
 * their web site at http://www.gnu.org/).
 *
 */

#include "hbapirdd.h"
#include "ace.h"

/*
*  ADS WORKAREA
*  --------
*  The Workarea Structure of Advantage Database Server RDD
*
*/


typedef struct _ADSAREA_
{
   struct _RDDFUNCS * lprfsHost; /* Virtual method table for this workarea */
   USHORT   uiArea;              /* The number assigned to this workarea */
   void *   atomAlias;           /* Pointer to the alias symbol for this workarea */
   USHORT   uiFieldExtent;       /* Total number of fields allocated */
   USHORT   uiFieldCount;        /* Total number of fields used */
   LPFIELD  lpFields;            /* Pointer to an array of fields */
   void *   lpFieldExtents;      /* Void ptr for additional field properties */
   PHB_ITEM valResult;           /* All purpose result holder */
   BOOL fTop;                    /* TRUE if "top" */
   BOOL fBottom;                 /* TRUE if "bottom" */
   BOOL fBof;                    /* TRUE if "bof" */
   BOOL fEof;                    /* TRUE if "eof" */
   BOOL fFound;                  /* TRUE if "found" */
   DBSCOPEINFO  dbsi;            /* Info regarding last LOCATE */
   DBFILTERINFO dbfi;            /* Filter in effect */
   LPDBORDERCONDINFO lpdbOrdCondInfo;
   LPDBRELINFO  lpdbRelations;   /* Parent/Child relationships used */
   USHORT       uiParents;       /* Number of parents for this area */
   USHORT   heap;
   USHORT   heapSize;
   USHORT   rddID;
   LPFILEINFO lpDataInfo;        /* Data files used by this workarea */
   LPINDEXINFO lpIndexInfo;      /* Indexes used by this workarea */
   LPDBEXTENDINFO lpExtendInfo;  /* Additional properties */

   /*
   *  ADS's additions to the workarea structure
   *
   *  Warning: The above section MUST match WORKAREA exactly!  Any
   *  additions to the structure MUST be added below, as in this
   *  example.
   */

   ADSHANDLE hTable;
   ADSHANDLE hOrdCurrent;
} ADSAREA;

typedef ADSAREA * ADSAREAP;
