bltfrm_c |
Table of contents
Procedurebltfrm_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_Inputfrmcls 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_Outputidset 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. Exceptions1) 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. ParticularsThis routine has a counterpart kplfrm_c which fetches the frame IDs of all frames specified in the kernel pool. ExamplesThe 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 |
Fri Dec 31 18:41:02 2021