| ekcii_c |
|
Table of contents
Procedure
ekcii_c ( EK, column info by index )
void ekcii_c ( ConstSpiceChar * table,
SpiceInt cindex,
SpiceInt collen,
SpiceChar * column,
SpiceEKAttDsc * attdsc )
AbstractReturn attribute information about a column belonging to a loaded EK table, specifying the column by table and index. Required_ReadingEK KeywordsEK FILES UTILITY Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- table I Name of table containing column. cindex I Index of column whose attributes are to be found. collen I Maximum allowed length of column name. column O Name of column. attdsc O Column attribute descriptor. Detailed_Input
table is the name of a loaded EK table. Case is not
significant.
cindex is the index, within TABLE's column attribute
table, of the column whose attributes are to be
found. The indices of the column table entries
range from 0 to ccount-1, where ccount is the value
returned by the entry point ekccnt_c.
collen is the maximum allowed length of the output column
name, including the terminating null. Column names
can be accommodated by a character array of length
SPICE_EK_CSTRLN. This constant is declared in the
header file SpiceEK.h.
Detailed_Output
column is the name of the specified column.
attdsc is an EK column attribute descriptor. See the header
file SpiceEK.h for details.
ParametersNone. Exceptions
1) If the specified table is not loaded, the error
SPICE(TABLENOTLOADED) is signaled by a routine in the call
tree of this routine.
2) If the input argument `cindex' is out of range, the error
SPICE(INVALIDINDEX) is signaled by a routine in the call tree
of this routine.
3) If the `column' output string pointer is null, the error
SPICE(NULLPOINTER) is signaled.
4) If the `column' output string has length less than two
characters, the error SPICE(STRINGTOOSHORT) is signaled, since
the output string is too short to contain one character of
output data plus a null terminator.
FilesThe returned column name and descriptor are based on the currently loaded EK files. ParticularsThis routine is a utility that allows a calling routine to determine the attributes of the currently loaded columns. Examples
The numerical results shown for this example may differ across
platforms. The results depend on the SPICE kernels used as
input, the compiler and supporting libraries, and the machine
specific arithmetic implementation.
1) Dump the names and attributes of the columns in each loaded
table.
Example code begins here.
/.
Program ekcii_ex1
./
#include <stdio.h>
#include "SpiceUsr.h"
int main( )
{
/.
Local constants.
./
#define FILEN 256
/.
Local variables.
./
SpiceChar colnam [ SPICE_EK_CSTRLN ];
SpiceChar ek [ FILEN ];
SpiceChar tabnam [ SPICE_EK_TSTRLN ];
SpiceChar * typstrs [ 4 ] =
{
"CHR", "DP", "INT", "TIME"
};
SpiceEKAttDsc attdsc;
SpiceInt i;
SpiceInt ncols;
SpiceInt ntab;
SpiceInt tab;
prompt_c ( "Enter name of EK to examine > ", FILEN, ek );
furnsh_c ( ek );
/.
Get the number of loaded tables.
./
ekntab_c ( &ntab );
printf ( "Number of tables in EK: %2i\n", ntab );
for ( tab = 0; tab < ntab; tab++ )
{
/.
Get the name of the current table, and look up
the column count for this table.
./
ektnam_c ( tab, SPICE_EK_TSTRLN, tabnam );
ekccnt_c ( tabnam, &ncols );
printf ( "------------------------------"
"------------------------------\n");
printf ( "Table = %s\n\n", tabnam );
/.
For each column in the current table, look up the
column's attributes. The attribute block
index parameters are defined in the include file
ekattdsc.inc.
./
for ( i = 0; i < ncols; i++ )
{
ekcii_c ( tabnam, i, SPICE_EK_CSTRLN, colnam, &attdsc );
printf ( "Column = %s\n", colnam );
/.
Write out the current column's data type.
./
printf ( " Type = %s\n", typstrs[(int)attdsc.dtype] );
if ( attdsc.dtype == SPICE_CHR )
{
if ( attdsc.strlen == SPICE_EK_VARSIZ )
{
printf ( " String length = VARIABLE\n" );
}
else
{
printf ( " String length = %d\n",
(int) attdsc.strlen );
}
}
/.
Write out the current column's entry size.
./
printf ( " Size = %d\n", (int)attdsc.size );
/.
Indicate whether the current column is indexed.
./
if ( attdsc.indexd == SPICETRUE )
{
printf ( " Indexed.\n" );
}
else
{
printf ( " Not indexed.\n" );
}
/.
Indicate whether the current column allows
null values.
./
if ( attdsc.nullok == SPICETRUE )
{
printf ( " Null values allowed.\n" );
}
else
{
printf ( " Null values not allowed.\n" );
}
}
/.
We're done with the current column.
./
}
/.
We're done with the current table.
./
return ( 0 );
}
When this program was executed on a Mac/Intel/cc/64-bit
platform, using the EK file named vo_sedr.bdb to load the
Viking Orbiter Image SEDR Data, the output was:
Enter name of EK to examine > vo_sedr.bdb
Number of tables in EK: 1
------------------------------------------------------------
Table = VIKING_SEDR_DATA
Column = IMAGE_ID
Type = CHR
String length = 6
Size = 1
Indexed.
Null values allowed.
Column = IMAGE_NUMBER
Type = INT
Size = 1
Indexed.
Null values allowed.
Column = SPACECRAFT_ID
Type = CHR
String length = 3
Size = 1
Indexed.
Null values allowed.
Column = IMAGE_TIME
Type = TIME
Size = 1
Indexed.
Null values allowed.
Column = INSTRUMENT_ID
Type = CHR
String length = 4
Size = 1
Indexed.
Null values allowed.
Column = GAIN_MODE_ID
Type = CHR
String length = 4
Size = 1
Not indexed.
Null values allowed.
Column = FLOOD_MODE_ID
Type = CHR
String length = 3
Size = 1
Not indexed.
Null values allowed.
Column = OFFSET_MODE_ID
Type = CHR
String length = 3
Size = 1
Not indexed.
Null values allowed.
Column = FILTER_ID
Type = INT
Size = 1
Indexed.
Null values allowed.
Column = EXPOSURE_DURATION
Type = DP
Size = 1
Indexed.
Null values allowed.
Column = PLATFORM_IN_MOTION
Type = CHR
String length = 3
Size = 1
Not indexed.
Null values allowed.
Column = PLATFORM_CONE
Type = DP
Size = 1
Not indexed.
Null values allowed.
Column = PLATFORM_CLOCK
Type = DP
Size = 1
Not indexed.
Null values allowed.
Column = PLATFORM_TWIST
Type = DP
Size = 1
Not indexed.
Null values allowed.
RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) E.D. Wright (JPL) Version
-CSPICE Version 1.1.0, 02-AUG-2021 (JDR)
Changed the input argument name "lenout" to "collen" for
consistency with other routines.
Edited the header to comply with NAIF standard.
Created complete code example from existing code fragments.
-CSPICE Version 1.0.2, 12-JUL-2016 (EDW)
Edit to example program to use "%d" with explicit casts
to int for printing SpiceInts with printf.
-CSPICE Version 1.0.1, 26-MAR-2003 (NJB)
Fixed description of exception (5): replaced "lenout-1"
with "lenout." Removed spurious word "clock" from string
description.
-CSPICE Version 1.0.0, 10-JAN-2002 (NJB)
Index_Entriesreturn information on loaded EK column specified by index |
Fri Dec 31 18:41:05 2021