| bltfrm_c |
|
Table of contents
Procedure
bltfrm_c ( Built-in frame IDs )
void bltfrm_c ( SpiceInt frmcls,
SpiceCell * idset )
AbstractReturn a SPICE set containing the frame IDs of all built-in frames of a specified class. Required_ReadingCELLS FRAMES NAIF_IDS SETS KeywordsFRAME SET UTILITY Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- frmcls I Frame class. idset O Set of ID codes of frames of the specified class. Detailed_Input
frmcls is an integer code specifying the frame class or
classes for which built-in frame ID codes are
requested. `frmcls' may designate a single class or
"all classes."
The CSPICE header file SpiceFrm.h declares parameters
identifying frame classes. The supported values
and corresponding meanings of `frmcls' are
Parameter Value Meaning
=================== ===== ==================
SPICE_FRMTYP_ALL -1 All frame classes.
SPICE_FRMTYP_INERTL 1 Built-in inertial.
SPICE_FRMTYP_PCK 2 PCK-based frame.
SPICE_FRMTYP_CK 3 CK-based frame.
SPICE_FRMTYP_TK 4 Fixed offset ("text
kernel") frame.
SPICE_FRMTYP_DYN 5 Dynamic frame.
SPICE_FRMTYP_SWTCH 6 Switch frame.
Detailed_Output
idset is a SPICE set containing the ID codes of all
built-in reference frames of the specified class
or classes.
If `idset' is non-empty on input, its contents will be
discarded.
`idset' must be declared as an integer SpiceCell.
CSPICE provides the following macro, which declares and
initializes the cell
SPICEINT_CELL ( idset, IDSETSZ );
where IDSETSZ is the maximum capacity of `idset'.
ParametersSee the CSPICE header file SpiceFrm.h. Exceptions
1) If the input frame class argument is not defined in
SpiceFrm.h, the error SPICE(BADFRAMECLASS) is signaled by a
routine in the call tree of this routine.
2) If the size of `idset' is too small to hold the requested frame
ID set, the error SPICE(SETTOOSMALL) is signaled by a routine
in the call tree of this routine.
3) If the `idset' cell argument has a type other than SpiceInt,
the error SPICE(TYPEMISMATCH) is signaled.
FilesNone. Particulars
This routine has a counterpart
kplfrm_c
which fetches the frame IDs of all frames specified in the kernel
pool.
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) Display the IDs and names of all SPICE built-in frames.
Group the outputs by frame class. Also fetch and display
the entire set of IDs and names using the parameter
SPICE_FRMTYP_ALL.
Example code begins here.
/.
Program bltfrm_ex1
./
#include <stdio.h>
#include "SpiceUsr.h"
int main()
{
/.
Local parameters
./
#define FRNMLN 33
#define NFRAME ( SPICE_NFRAME_NINERT + \
SPICE_NFRAME_NNINRT )
#define LNSIZE 81
/.
Local variables
./
SPICEINT_CELL ( idset, NFRAME );
SpiceChar frname [ FRNMLN ];
SpiceChar outlin [ LNSIZE ];
SpiceInt i;
SpiceInt j;
SpiceInt nfrms;
/.
Get the Toolkit version number and display it.
./
printf( "Toolkit version: %s\n", tkvrsn_c( "TOOLKIT" ) );
/.
Fetch and display the frames of each class.
./
for ( i = 1; i <= 7; i++ )
{
if ( i < 7 )
{
/.
Fetch the frames of class i.
./
bltfrm_c ( i, &idset );
sprintf ( outlin,
"Number of frames of class %d: %d",
(int) i,
(int) card_c(&idset) );
}
else
{
/.
Fetch IDs of all built-in frames.
./
bltfrm_c ( SPICE_FRMTYP_ALL, &idset );
sprintf ( outlin,
"Number of built-in frames: %d",
(int) card_c(&idset) );
}
/.
Display the NAIF ID and name of a maximum of 5 frames
per family.
./
printf ( "\n"
"%s\n"
" Frame IDs and names\n",
outlin );
nfrms = mini_c ( 2, 5, card_c(&idset) );
for ( j = 0; j < nfrms; j++ )
{
frmnam_c ( ((SpiceInt *)idset.data)[j], FRNMLN, frname );
printf ( "%12ld %s\n",
( (long) ((SpiceInt *)idset.data)[j] ), frname );
}
}
return ( 0 );
}
When this program was executed on a Mac/Intel/cc/64-bit
platform, the output was:
Toolkit version: CSPICE_N0067
Number of frames of class 1: 21
Frame IDs and names
1 J2000
2 B1950
3 FK4
4 DE-118
5 DE-96
Number of frames of class 2: 105
Frame IDs and names
10001 IAU_MERCURY_BARYCENTER
10002 IAU_VENUS_BARYCENTER
10003 IAU_EARTH_BARYCENTER
10004 IAU_MARS_BARYCENTER
10005 IAU_JUPITER_BARYCENTER
Number of frames of class 3: 0
Frame IDs and names
Number of frames of class 4: 1
Frame IDs and names
10081 EARTH_FIXED
Number of frames of class 5: 0
Frame IDs and names
Number of frames of class 6: 0
Frame IDs and names
Number of built-in frames: 145
Frame IDs and names
1 J2000
2 B1950
3 FK4
4 DE-118
5 DE-96
Note that the set of built-in frames, particularly the
non-inertial ones, will grow over time, so the output
shown here may be out of sync with that produced by a
current SPICE Toolkit. Only the first 5 frames of each
family are presented in the output.
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, 26-AUG-2021 (JDR) (NJB)
Swapped the calls to CELLINIT and CELLTYPECHK: initialize the control
area only if the input cell data type is of type SpiceInt.
Updated to account for switch frame class.
Edited the header to comply with NAIF standard. Updated code example to
limit the number of frames presented in the output. Added Toolkit
version information to the output of the example.
Extended description of argument "idset" in -Detailed_Output to include
type and preferred declaration method, and to indicate that its
contents will be discarded by this routine.
-CSPICE Version 1.0.1, 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.0, 22-MAY-2012 (NJB)
Index_Entriesfetch IDs of built-in reference frames Link to routine bltfrm_c source file bltfrm_c.c |
Fri Dec 31 18:41:02 2021