Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
SpiceCel.h
Package: celestia-1.6.0.tar.gz [view]
Upload User: center1979
Upload Date: 2022-07-26
Package Size: 50633k
Code Size: 20k
Category:
OpenGL program
Development Platform:
Visual C++
- /*
- -Header_File SpiceCel.h ( CSPICE Cell definitions )
- -Abstract
- Perform CSPICE definitions for the SpiceCell data type.
- -Disclaimer
- THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE
- CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S.
- GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE
- ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE
- PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS"
- TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY
- WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A
- PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC
- SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE
- SOFTWARE AND RELATED MATERIALS, HOWEVER USED.
- IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA
- BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT
- LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS,
- REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE
- REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY.
- RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF
- THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY
- CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE
- ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE.
- -Required_Reading
- CELLS
- -Particulars
- This header defines structures, macros, and enumerated types that
- may be referenced in application code that calls CSPICE cell
- functions.
- CSPICE cells are data structures that implement functionality
- parallel to that of the cell abstract data type in SPICELIB. In
- CSPICE, a cell is a C structure containing bookkeeping information,
- including a pointer to an associated data array.
- For numeric data types, the data array is simply a SPICELIB-style
- cell, including a valid control area. For character cells, the data
- array has the same number of elements as the corresponding
- SPICELIB-style cell, but the contents of the control area are not
- maintained, and the data elements are null-terminated C-style
- strings.
- CSPICE cells should be declared using the declaration macros
- provided in this header file. See the table of macros below.
- Structures
- ==========
- Name Description
- ---- ----------
- SpiceCell Structure containing CSPICE cell metadata.
- The members are:
- dtype: Data type of cell: character,
- integer, or double precision.
- dtype has type
- SpiceCellDataType.
- length: For character cells, the
- declared length of the
- cell's string array.
- size: The maximum number of data
- items that can be stored in
- the cell's data array.
- card: The cell's "cardinality": the
- number of data items currently
- present in the cell.
- isSet: Boolean flag indicating whether
- the cell is a CSPICE set.
- Sets have no duplicate data
- items, and their data items are
- stored in increasing order.
- adjust: Boolean flag indicating whether
- the cell's data area has
- adjustable size. Adjustable
- size cell data areas are not
- currently implemented.
- init: Boolean flag indicating whether
- the cell has been initialized.
- base: is a void pointer to the
- associated data array. base
- points to the start of the
- control area of this array.
- data: is a void pointer to the
- first data slot in the
- associated data array. This
- slot is the element following
- the control area.
- ConstSpiceCell A const SpiceCell.
- Declaration Macros
- ==================
- Name Description
- ---- ----------
- SPICECHAR_CELL ( name, size, length ) Declare a
- character CSPICE
- cell having cell
- name name,
- maximum cell
- cardinality size,
- and string length
- length. The
- macro declares
- both the cell and
- the associated
- data array. The
- name of the data
- array begins with
- "SPICE_".
- SPICEDOUBLE_CELL ( name, size ) Like SPICECHAR_CELL,
- but declares a
- double precision
- cell.
- SPICEINT_CELL ( name, size ) Like
- SPICECHAR_CELL,
- but declares an
- integer cell.
- Assignment Macros
- =================
- Name Description
- ---- ----------
- SPICE_CELL_SET_C( item, i, cell ) Assign the ith
- element of a
- character cell.
- Arguments cell
- and item are
- pointers.
- SPICE_CELL_SET_D( item, i, cell ) Assign the ith
- element of a
- double precision
- cell. Argument
- cell is a
- pointer.
- SPICE_CELL_SET_I( item, i, cell ) Assign the ith
- element of an
- integer cell.
- Argument cell is
- a pointer.
- Fetch Macros
- ==============
- Name Description
- ---- ----------
- SPICE_CELL_GET_C( cell, i, lenout, item ) Fetch the ith
- element from a
- character cell.
- Arguments cell
- and item are
- pointers.
- Argument lenout
- is the available
- space in item.
- SPICE_CELL_GET_D( cell, i, item ) Fetch the ith
- element from a
- double precision
- cell. Arguments
- cell and item are
- pointers.
- SPICE_CELL_GET_I( cell, i, item ) Fetch the ith
- element from an
- integer cell.
- Arguments cell
- and item are
- pointers.
- Element Pointer Macros
- ======================
- Name Description
- ---- ----------
- SPICE_CELL_ELEM_C( cell, i ) Macro evaluates
- to a SpiceChar
- pointer to the
- ith data element
- of a character
- cell. Argument
- cell is a
- pointer.
- SPICE_CELL_ELEM_D( cell, i ) Macro evaluates
- to a SpiceDouble
- pointer to the
- ith data element
- of a double
- precision cell.
- Argument cell is
- a pointer.
- SPICE_CELL_ELEM_I( cell, i ) Macro evaluates
- to a SpiceInt
- pointer to the
- ith data element
- of an integer
- cell. Argument
- cell is a
- pointer.
- -Literature_References
- None.
- -Author_and_Institution
- N.J. Bachman (JPL)
- -Restrictions
- None.
- -Version
- -CSPICE Version 1.0.0, 22-AUG-2002 (NJB)
- */
- #ifndef HAVE_SPICE_CELLS_H
- #define HAVE_SPICE_CELLS_H
- /*
- Data type codes:
- */
- typedef enum _SpiceDataType SpiceCellDataType;
- /*
- Cell structure:
- */
- struct _SpiceCell
- { SpiceCellDataType dtype;
- SpiceInt length;
- SpiceInt size;
- SpiceInt card;
- SpiceBoolean isSet;
- SpiceBoolean adjust;
- SpiceBoolean init;
- void * base;
- void * data; };
- typedef struct _SpiceCell SpiceCell;
- typedef const SpiceCell ConstSpiceCell;
- /*
- SpiceCell control area size:
- */
- #define SPICE_CELL_CTRLSZ 6
- /*
- Declaration macros:
- */
- #define SPICECHAR_CELL( name, size, length )
- static SpiceChar SPICE_CELL_##name[SPICE_CELL_CTRLSZ + size][length];
- static SpiceCell name =
- { SPICE_CHR,
- length,
- size,
- 0,
- SPICETRUE,
- SPICEFALSE,
- SPICEFALSE,
- (void *) &(SPICE_CELL_##name),
- (void *) &(SPICE_CELL_##name[SPICE_CELL_CTRLSZ]) }
- #define SPICEDOUBLE_CELL( name, size )
- static SpiceDouble SPICE_CELL_##name [SPICE_CELL_CTRLSZ + size];
- static SpiceCell name =
- { SPICE_DP,
- 0,
- size,
- 0,
- SPICETRUE,
- SPICEFALSE,
- SPICEFALSE,
- (void *) &(SPICE_CELL_##name),
- (void *) &(SPICE_CELL_##name[SPICE_CELL_CTRLSZ]) }
- #define SPICEINT_CELL( name, size )
- static SpiceInt SPICE_CELL_##name [SPICE_CELL_CTRLSZ + size];
- static SpiceCell name =
- { SPICE_INT,
- 0,
- size,
- 0,
- SPICETRUE,
- SPICEFALSE,
- SPICEFALSE,
- (void *) &(SPICE_CELL_##name),
- (void *) &(SPICE_CELL_##name[SPICE_CELL_CTRLSZ]) }
- /*
- Access macros for individual elements:
- */
- /*
- Data element pointer macros:
- */
- #define SPICE_CELL_ELEM_C( cell, i )
- ( ( (SpiceChar *) (cell)->data ) + (i)*( (cell)->length ) )
- #define SPICE_CELL_ELEM_D( cell, i )
- ( ( (SpiceDouble *) (cell)->data )[(i)] )
- #define SPICE_CELL_ELEM_I( cell, i )
- ( ( (SpiceInt *) (cell)->data )[(i)] )
- /*
- "Fetch" macros:
- */
- #define SPICE_CELL_GET_C( cell, i, lenout, item )
- {
- SpiceInt nBytes;
- nBytes = brckti_c ( (cell)->length, 0, (lenout-1) )
- * sizeof ( SpiceChar );
- memmove ( (item), SPICE_CELL_ELEM_C((cell), (i)), nBytes );
- item[nBytes] = NULLCHAR;
- }
- #define SPICE_CELL_GET_D( cell, i, item )
- ( (*item) = ( (SpiceDouble *) (cell)->data)[i] )
- #define SPICE_CELL_GET_I( cell, i, item )
- ( (*item) = ( (SpiceInt *) (cell)->data)[i] )
- /*
- Assignment macros:
- */
- #define SPICE_CELL_SET_C( item, i, cell )
- {
- SpiceChar * sPtr;
- SpiceInt nBytes;
- nBytes = brckti_c ( strlen(item), 0, (cell)->length - 1 )
- * sizeof ( SpiceChar );
- sPtr = SPICE_CELL_ELEM_C((cell), (i));
- memmove ( sPtr, (item), nBytes );
- sPtr[nBytes] = NULLCHAR;
- }
- #define SPICE_CELL_SET_D( item, i, cell )
- ( ( (SpiceDouble *) (cell)->data)[i] = (item) )
- #define SPICE_CELL_SET_I( item, i, cell )
- ( ( (SpiceInt *) (cell)->data)[i] = (item) )
- /*
- The enum SpiceTransDir is used to indicate language translation
- direction: C to Fortran or vice versa.
- */
- enum _SpiceTransDir { C2F = 0, F2C = 1 };
- typedef enum _SpiceTransDir SpiceTransDir;
- #endif