void dafgda_c ( SpiceInt handle,
SpiceInt begin,
SpiceInt end,
SpiceDouble * data )
Read the double precision data bounded by two addresses within
a DAF.
DAF
FILES
Variable I/O Description
-------- --- --------------------------------------------------
handle I Handle of a DAF.
begin,
end I Initial, final address within file.
data O Data contained between `begin' and `end'.
handle is the handle of a DAF.
begin,
end are the initial and final addresses of a contiguous
set of double precision numbers within a DAF.
Presumably, these make up all or part of a particular
array.
Note that CSPICE DAF addresses begin at 1 as in the
FORTRAN version of the SPICE Toolkit.
data are the double precision data contained between
the specified addresses within the specified file.
None.
1) If `begin' is zero or negative, the error SPICE(DAFNEGADDR)
is signaled.
2) If `begin' > `end', the error SPICE(DAFBEGGTEND)
is signaled.
3) If `handle' is invalid, routines in the call tree of dafgda_c
signal an appropriate error.
4) If the range of addresses covered between `begin' and `end'
includes records that do not contain strictly double
precision data, then the values returned in `data' are
undefined. See the Restrictions section below for details.
None.
The principal reason that DAFs are so easy to use is that
the data in each DAF are considered to be one long contiguous
set of double precision numbers. You can grab data from anywhere
within a DAF without knowing (or caring) about the physical
records in which they are stored.
This routine replaces dafrda_c as the principal mechanism for
reading the contents of DAF arrays.
The following code fragment illustrates the use of dafgda_c to read
data from an array. The array begins with a directory containing 11
epochs. Each pair of epochs bounds an interval, and each interval is
covered by a set of eight osculating elements.
#include "SpiceUsr.h"
.
.
.
dafus_c ( sum, nd, ni, dc, ic );
begin = ic[4];
end = ic[5];
dafgda_c ( handle, begin, begin+10, epochs );
for ( i = 0; i < 10; i++ )
{
if ( ( et > epochs[i] )
&& ( et < epochs[i+1] ) )
{
offset = begin + 11 + (i - 1) * 8;
dafgda_c ( handle, offset+1, offset+8, elements );
return;
}
}
1) There are several types of records in a DAF. This routine
is only to be used to read double precision data bounded
between two DAF addresses. The range of addresses input
may not cross data and summary record boundaries.
None.
N.J. Bachman (JPL)
-CSPICE Version 1.0.1, 23-JAN-2008 (EDW)
Removed a spurious and unneeded "-Declarations"
tag. The tag's presence prevented the HTML API doc
script from parsing the function description.
-CSPICE Version 1.0.0, 14-SEP-2006 (NJB)
read data from daf address
Link to routine dafgda_c source file dafgda_c.c
|