\subsection{hklscan}
hklscan is an object which implements scanning in reciprocal space. It belongs
 to the four circle diffraction line of commands. It requires the hkl object
 for doing four circle calculations and a scan object for doing the scanning.
 The scan object is configured by overloading its WriteScanPoints and 
 ScanDrive functions to do the right thing for this. Thus most of the work 
 is done in scan and hkl.

hklscan has its own data structure looking like this:

@d hklscandat @{
   typedef struct __HKLSCAN {
                              pObjectDescriptor pDes;
                              pScanData pScan;
                              pHKL      pCalc;      
                              float fStart[3];
                              float fStep[3];
                              float fPos[3];
                            } sHklscan;
@}
\begin{description}
\item[pDes] The standard object descriptor.
\item[pScan] The scan object used for scanning.
\item[pCalc] The hkl object used for crystallographic computations.
\item[fStart] The start values in H, K, L for scanning.
\item[fStep] The step width in H, K, L. 
\item[fPos] The last position in H, K, L.
\end{description}

The hklscan object defines the following external interface:

@d hklscanfunc @{
    typedef struct __HKLSCAN *pHklscan;
/*--------------------------------------------------------------------------*/
    int HklScan(pHklscan self, SConnection *pCon, int iNP, int iMode,
                float fPreset);
/*---------------- interpreter functions -----------------------------------*/
    int HklscanFactory(SConnection *pCon, SicsInterp *pSics, void *pData,
                       int argc, char *argv[]);
    int HklscanAction(SConnection *pCon, SicsInterp *pSics, void *pData,
                       int argc, char *argv[]);

@}

@o hklscan.i @{
/*-------------------------------------------------------------------------
   Internal data structure for the hklscan object. DO NOT MODIFY. 
   Modifications only in hklscan.i
 
   Mark Koennecke, June 1999
--------------------------------------------------------------------------*/
@<hklscandat@>
@}

@o hklscan.h @{
/*--------------------------------------------------------------------------
                            H K L S C A N

 A class for doing scans in reciprocal space. This makes only sense at an
 four circle diffractometer. Most of the work is done in the HKL and scan
 objects. This class just adapts and used both objects to do the right thing.

 Mark Koennecke, June 1999
---------------------------------------------------------------------------*/
#ifndef HKLSCAN
#define HKLSCAN
@<hklscanfunc@>
#endif
@}

