ccifrm_c |
Table of contents
Procedureccifrm_c ( Class and class ID to associated frame ) void ccifrm_c ( SpiceInt frclss, SpiceInt clssid, SpiceInt frnlen, SpiceInt * frcode, SpiceChar * frname, SpiceInt * cent, SpiceBoolean * found ) AbstractReturn the frame name, frame ID, and center associated with a given frame class and class ID. Required_ReadingFRAMES KeywordsFRAMES Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- frclss I Class of frame. clssid I Class ID of frame. frnlen I Maximum length of output string. frcode O ID code of the frame. frname O Name of the frame. cent O ID code of the center of the frame. found O SPICETRUE if the requested information is available. Detailed_Inputfrclss is the class or type of the frame. This identifies which subsystem will be used to perform frame transformations. clssid is the ID code used for the frame within its class. This may be different from the frame ID code. frnlen is the allowed length of the output frame name. This length must large enough to hold the output string plus the null terminator. If the output string is expected to have n characters, `frnlen' should be n + 1. Detailed_Outputfrcode is the frame ID code for the reference frame identified by `frclss' and `clssid'. frname is the name of the frame identified by `frclss' and `clssid'. `frname' should be declared SpiceChar frname [33] to ensure that it can contain the full name of the frame. If `frname' does not have enough room to hold the full name of the frame, the name will be truncated on the right. cent is the body ID code for the center of the reference frame identified by `frclss' and `clssid'. found is SPICETRUE if `frcode', `frname', and `cent' are available. Otherwise, `found' is returned with the value SPICEFALSE. ParametersNone. Exceptions1) This routine assumes that the first frame found with matching class and class ID is the correct one. SPICE's frame system does not diagnose the situation where there are multiple, distinct frames with matching classes and class ID codes, but this situation could occur if such conflicting frame specifications are loaded via one or more frame kernels. The user is responsible for avoiding such frame specification conflicts. 2) If `frname' does not have room to contain the frame name, the name will be truncated on the right. (Declaring `frname' to be SpiceChar[33] will ensure that the name will not be truncated). 3) If a frame class assignment is found that associates a string (as opposed to numeric) value with a frame class keyword, the error SPICE(INVALIDFRAMEDEF) is signaled by a routine in the call tree of this routine. 4) If a frame class assignment is found that matches the input class, but a corresponding class ID assignment is not found in the kernel pool, the error SPICE(INVALIDFRAMEDEF) is signaled by a routine in the call tree of this routine. 5) If a frame specification is found in the kernel pool with matching frame class and class ID, but either the frame name or frame ID code are not found, the error SPICE(INVALIDFRAMEDEF) is signaled by a routine in the call tree of this routine. 6) If a frame specification is found in the kernel pool with matching frame class and class ID, but the frame center is not found, an error is signaled by a routine in the call tree of this routine. 7) If the `frname' output string pointer is null, the error SPICE(NULLPOINTER) is signaled. 8) If the `frname' 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 frame specifications sought by this routine may be provided by loaded frames kernels. Such kernels will always be required if the frame class is CK, TK, or dynamic, and will be required if the frame class is PCK but the frame of interest is not built-in. ParticularsThis routine allows the user to determine the frame associated with a given frame class and class ID code. The kernel pool is searched first for a matching frame; if no match is found, then the set of built-in frames is searched. Since the neither the frame class nor the class ID are primary keys, searching for matching frames is a linear (and therefore typically slow) process. 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) The following code example demonstrates how to find the frame information about a frame by its ID using frinfo_c and by its class and class ID using ccifrm_c. Example code begins here. /. Program ccifrm_ex1 ./ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "SpiceUsr.h" int main() { /. Local constants. ./ #define FRNLEN 33 /. Local variables. ./ SpiceChar frname[FRNLEN]; SpiceInt clss; SpiceInt clss_ID; SpiceInt frcode1; SpiceInt frcode2; SpiceInt center1; SpiceInt center2; SpiceBoolean found; /. Assign the frame name. ./ strcpy ( frname, "ITRF93" ); namfrm_c ( frname, &frcode1 ); frinfo_c ( frcode1, ¢er1, &clss, &clss_ID, &found ); if ( !found ) { printf( "No info found for frame %d\n", (int)frcode1 ); exit(1); } printf( "Frame %s info:\n" " Frame Code: %d \n" " Center ID : %d \n" " Class : %d \n" " Class ID : %d \n", frname, (int)frcode1, (int)center1, (int)clss, (int)clss_ID ); ccifrm_c ( clss, clss_ID, FRNLEN, &frcode2, frname, ¢er2, &found ); if ( !found ) { printf( "No info found for type %d frame %d.\n", (int)clss, (int)clss_ID ); exit(1); } printf( "Type %2d frame %5d info:\n" " Frame name: %s \n" " Frame Code: %d \n" " Center ID : %d \n", (int)clss, (int)clss_ID, frname, (int)frcode2, (int)center2 ); exit(0); } When this program was executed on a Mac/Intel/cc/64-bit platform, the output was: Frame ITRF93 info: Frame Code: 13000 Center ID : 399 Class : 2 Class ID : 3000 Type 2 frame 3000 info: Frame name: ITRF93 Frame Code: 13000 Center ID : 399 Restrictions1) See item (1) in the -Exceptions section above. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) B.V. Semenov (JPL) E.D. Wright (JPL) Version-CSPICE Version 1.1.0, 13-AUG-2021 (JDR) Changed the argument names "lenout" and "center" to "frnlen" and "cent" for consistency with other routines. Edited the header to comply with NAIF standard. -CSPICE Version 1.0.1, 04-FEB-2017 (EDW) (BVS) Edit to example program to use "%d" with explicit casts to int for printing SpiceInts with printf. Shortened one of permuted index entries. -CSPICE Version 1.0.0, 14-JUL-2014 (NJB) Added to the -Brief_I/O header section a description of input argument "lenout". Last update was 10-JAN-2011 (NJB)(EDW) Index_EntriesFind info associated with a frame class and class id Map frame class and class id to frame info Map frame class and class id to frame name, id, center |
Fri Dec 31 18:41:02 2021