SpiceEK.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:16k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /*
  2. -Header_File SpiceEK.h ( CSPICE EK-specific definitions )
  3. -Abstract
  4.    Perform CSPICE EK-specific definitions, including macros and user-
  5.    defined types.
  6.          
  7. -Disclaimer
  8.    THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE
  9.    CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S.
  10.    GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE
  11.    ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE
  12.    PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS"
  13.    TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY
  14.    WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A
  15.    PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC
  16.    SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE
  17.    SOFTWARE AND RELATED MATERIALS, HOWEVER USED.
  18.    IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA
  19.    BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT
  20.    LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.    INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS,
  22.    REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE
  23.    REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY.
  24.    RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF
  25.    THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY
  26.    CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE
  27.    ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE.
  28. -Required_Reading
  29.    None.
  30.    
  31. -Particulars
  32.    This header defines macros, enumerated types, structures, and 
  33.    typedefs that may be referenced in application code that calls CSPICE
  34.    EK functions.
  35.    
  36.    Macros
  37.    ======
  38.    
  39.       General limits
  40.       --------------
  41.       
  42.          Name                  Description
  43.          ----                  ----------
  44.          SPICE_EK_MXCLSG       Maximum number of columns per segment.
  45.          
  46.          SPICE_EK_TYPLEN       Maximum length of a short string 
  47.                                indicating a data type (one of 
  48.                                {"CHR", "DP", "INT", "TIME"}). Such 
  49.                                strings are returned by some of the 
  50.                                Fortran SPICELIB EK routines, hence also
  51.                                by their f2c'd counterparts.
  52.    
  53.       Sizes of EK objects
  54.       -------------------
  55.       
  56.          Name                  Description
  57.          ----                  ----------
  58.          
  59.          SPICE_EK_CNAMSZ       Maximum length of column name.
  60.          SPICE_EK_CSTRLN       Length of string required to hold column
  61.                                name.  
  62.          SPICE_EK_TNAMSZ       Maximum length of table name.
  63.          SPICE_EK_TSTRLN       Length of string required to hold table
  64.                                name.  
  65.          
  66.    
  67.       Query-related limits
  68.       --------------------
  69.       
  70.          Name                  Description
  71.          ----                  ----------
  72.          
  73.          SPICE_EK_MAXQRY       Maximum length of an input query.  This 
  74.                                value is currently equivalent to 
  75.                                twenty-five 80-character lines.
  76.          
  77.          SPICE_EK_MAXQSEL      Maximum number of columns that may be
  78.                                listed in the `SELECT clause' of a query.
  79.          
  80.          SPICE_EK_MAXQTAB      Maximum number of tables that may be 
  81.                                listed in the `FROM clause' of a query.
  82.          
  83.          SPICE_EK_MAXQCON      Maximum number of relational expressions 
  84.                                that may be listed in the `constraint 
  85.                                clause' of a query.
  86.     
  87.                                This limit applies to a query when it is 
  88.                                represented in `normalized form': that 
  89.                                is, the constraints have been expressed 
  90.                                as a disjunction of conjunctions of 
  91.                                relational expressions. The number of 
  92.                                relational expressions in a query that 
  93.                                has been expanded in this fashion may be 
  94.                                greater than the number of relations in 
  95.                                the query as orginally written. For 
  96.                                example, the expression
  97.      
  98.                                        ( ( A LT 1 ) OR ( B GT 2 ) )
  99.                                   AND
  100.                                        ( ( C NE 3 ) OR ( D EQ 4 ) )
  101.                           
  102.                                which contains 4 relational expressions, 
  103.                                expands to the equivalent normalized 
  104.                                constraint
  105.                           
  106.                                        (  ( A LT 1 ) AND ( C NE 3 )  )
  107.                                   OR
  108.                                        (  ( A LT 1 ) AND ( D EQ 4 )  )
  109.                                   OR
  110.                                        (  ( B GT 2 ) AND ( C NE 3 )  )
  111.                                   OR
  112.                                        (  ( B GT 2 ) AND ( D EQ 4 )  )
  113.                           
  114.                                which contains eight relational 
  115.                                expressions.
  116.                           
  117.    
  118.          
  119.          SPICE_EK_MAXQJOIN     Maximum number of tables that can be 
  120.                                joined.
  121.          
  122.          SPICE_EK_MAXQJCON     Maximum number of join constraints 
  123.                                allowed.
  124.          
  125.          SPICE_EK_MAXQORD      Maximum number of columns that may be 
  126.                                used in the `order-by clause' of a query.
  127.          
  128.          SPICE_EK_MAXQTOK      Maximum number of tokens in a query.  
  129.                                Tokens
  130.                                are reserved words, column names,   
  131.                                parentheses, and values. Literal strings
  132.                                and time values count as single tokens.
  133.          
  134.          SPICE_EK_MAXQNUM      Maximum number of numeric tokens in a 
  135.                                query.
  136.          
  137.          SPICE_EK_MAXQCLN      Maximum total length of character tokens
  138.                                in a query.
  139.          
  140.          SPICE_EK_MAXQSTR      Maximum length of literal string values 
  141.                                allowed in queries.
  142.          
  143.    
  144.       Codes
  145.       -----
  146.       
  147.          Name                  Description
  148.          ----                  ----------
  149.          
  150.          SPICE_EK_VARSIZ       Code used to indicate variable-size 
  151.                                objects. Usually this is used in a 
  152.                                context where a non-negative integer 
  153.                                indicates the size of a fixed-size object
  154.                                and the presence of this code indicates a
  155.                                variable-size object.
  156.       
  157.                                The value of this constant must match the 
  158.                                parameter IFALSE used in the Fortran 
  159.                                library SPICELIB.
  160.    Enumerated Types
  161.    ================
  162.       Enumerated code values
  163.       ----------------------
  164.       
  165.          Name                  Description
  166.          ----                  ----------
  167.          SpiceEKDataType       Codes for data types used in the EK 
  168.                                interface: character, double precision,
  169.                                integer, and "time."
  170.  
  171.                                The values are:
  172.                                
  173.                                  { SPICE_CHR  = 0, 
  174.                                    SPICE_DP   = 1, 
  175.                                    SPICE_INT  = 2,
  176.                                    SPICE_TIME = 3 }
  177.          SpiceEKExprClass      Codes for types of expressions that may
  178.                                appear in the SELECT clause of EK 
  179.                                queries.  Values and meanings are:
  180.                                   SPICE_EK_EXP_COL   Selected item was a 
  181.                                                      column. The column 
  182.                                                      may qualified by a
  183.                                                      table name. 
  184.  
  185.                                   SPICE_EK_EXP_FUNC  Selected item was 
  186.                                                      a simple function 
  187.                                                      invocation of the 
  188.                                                      form 
  189.  
  190.                                                         F ( <column> ) 
  191.  
  192.                                                      or else was 
  193.                                                      
  194.                                                         COUNT(*) 
  195.  
  196.                                   SPICE_EK_EXP_EXPR  Selected item was a
  197.                                                      more general 
  198.                                                      expression than 
  199.                                                      those shown above. 
  200.    
  201.    
  202.                                Numeric values are:
  203.                                
  204.                                  { SPICE_EK_EXP_COL  = 0, 
  205.                                    SPICE_EK_EXP_FUNC = 1, 
  206.                                    SPICE_EK_EXP_EXPR = 2 }
  207.                                
  208.                                
  209.    Structures
  210.    ==========
  211.    
  212.       EK API structures
  213.       -----------------
  214.          Name                  Description
  215.          ----                  ----------
  216.    
  217.          SpiceEKAttDsc         EK column attribute descriptor.  Note 
  218.                                that this object is distinct from the EK
  219.                                column descriptors used internally in 
  220.                                the EK routines; those descriptors 
  221.                                contain pointers as well as attribute 
  222.                                information.
  223.                                The members are:
  224.  
  225.                                   cclass:     Column class code.
  226.                                   dtype:      Data type code:  has type
  227.                                               SpiceEKDataType.
  228.                                               
  229.                                   strlen:     String length.  Applies to 
  230.                                               SPICE_CHR type.  Value is 
  231.                                               SPICE_EK_VARSIZ for 
  232.                                               variable-length strings. 
  233.    
  234.                                   size:       Column entry size; this is 
  235.                                               the number of array 
  236.                                               elements in a column 
  237.                                               entry. The value is 
  238.                                               SPICE_EK_VARSIZ for
  239.                                               variable-size columns.  
  240.                                   indexd:     Index flag; value is 
  241.                                               SPICETRUE if the column is 
  242.                                               indexed, SPICEFALSE 
  243.                                               otherwise. 
  244.                                   nullok:     Null flag; value is 
  245.                                               SPICETRUE if the column 
  246.                                               may contain null values, 
  247.                                               SPICEFALSE otherwise. 
  248.          SpiceEKSegSum         EK segment summary.  This structure 
  249.                                contains user interface level descriptive
  250.                                information.  The structure contains the 
  251.                                following members:
  252.                                   tabnam      The name of the table to 
  253.                                               which the segment belongs. 
  254.                                   nrows       The number of rows in the
  255.                                               segment. 
  256.                                   ncols       The number of columns in
  257.                                               the segment.
  258.                                   cnames      An array of names of 
  259.                                               columns in the segment. 
  260.                                               Column names may contain 
  261.                                               as many as SPICE_EK_CNAMSZ 
  262.                                               characters. The array 
  263.                                               contains room for 
  264.                                               SPICE_EK_MXCLSG column
  265.                                               names.
  266.    
  267.                                   cdescrs     An array of column 
  268.                                               attribute descriptors of
  269.                                               type SpiceEKAttDsc.
  270.                                               The array contains room 
  271.                                               for SPICE_EK_MXCLSG 
  272.                                               descriptors.  The Ith
  273.                                               descriptor corresponds to
  274.                                               the column whose name is
  275.                                               the Ith element of the 
  276.                                               array cnames.
  277. -Literature_References
  278.    None.
  279. -Author_and_Institution
  280.    N.J. Bachman       (JPL)
  281.    
  282. -Restrictions
  283.    None.
  284.       
  285. -Version
  286.    -CSPICE Version 2.0.0 27-JUL-2002 (NJB) 
  287.    
  288.       Defined SpiceEKDataType using SpiceDataType.  Removed declaration
  289.       of enum _SpiceEKDataType.
  290.    
  291.    -CSPICE Version 1.0.0, 05-JUL-1999 (NJB)  
  292.       Renamed _SpiceEKAttDsc member "class" to "cclass."  The
  293.       former name is a reserved word in C++.
  294.    -CSPICE Version 1.0.0, 24-FEB-1999 (NJB)  
  295. */
  296. #ifndef HAVE_SPICE_EK_H
  297.    #define HAVE_SPICE_EK_H
  298.    
  299.    
  300.    
  301.    /*
  302.    Constants
  303.    */
  304.    /*
  305.    Sizes of EK objects:
  306.    */
  307.    #define  SPICE_EK_CNAMSZ                 32
  308.    #define  SPICE_EK_CSTRLN               ( SPICE_EK_CNAMSZ + 1 )
  309.    #define  SPICE_EK_TNAMSZ                 64
  310.    #define  SPICE_EK_TSTRLN               ( SPICE_EK_TNAMSZ + 1 )
  311.    
  312.    /*
  313.    Maximum number of columns per segment:
  314.    */
  315.    
  316.    #define  SPICE_EK_MXCLSG                 100
  317.    /*
  318.    Maximum length of string indicating data type:
  319.    */
  320.    
  321.    #define  SPICE_EK_TYPLEN                 4
  322.    
  323.    
  324.    /*
  325.    Query-related limits (see header for details):
  326.    */
  327.    
  328.    #define  SPICE_EK_MAXQRY                 2000
  329.    #define  SPICE_EK_MAXQSEL                50
  330.    #define  SPICE_EK_MAXQTAB                10
  331.    #define  SPICE_EK_MAXQCON                1000
  332.    #define  SPICE_EK_MAXQJOIN               10
  333.    #define  SPICE_EK_MAXQJCON               100
  334.    #define  SPICE_EK_MAXQORD                10
  335.    #define  SPICE_EK_MAXQTOK                500
  336.    #define  SPICE_EK_MAXQNUM                100
  337.    #define  SPICE_EK_MAXQCLN                SPICE_EK_MAXQRY
  338.    #define  SPICE_EK_MAXQSTR                1024
  339.    
  340.    
  341.    
  342.    /*
  343.    Code indicating "variable size":
  344.    */
  345.    #define  SPICE_EK_VARSIZ               (-1)
  346.    
  347.    /*
  348.    Data type codes:
  349.    */
  350.    typedef  SpiceDataType  SpiceEKDataType;
  351.    
  352.    
  353.    
  354.    /*
  355.    SELECT clause expression type codes:
  356.    */
  357.    enum _SpiceEKExprClass{ SPICE_EK_EXP_COL  = 0, 
  358.                            SPICE_EK_EXP_FUNC = 1, 
  359.                            SPICE_EK_EXP_EXPR = 2 };
  360.    typedef  enum _SpiceEKExprClass SpiceEKExprClass;
  361.    /*
  362.    EK column attribute descriptor:
  363.    */
  364.    
  365.    struct _SpiceEKAttDsc 
  366.    
  367.       {  SpiceInt         cclass;
  368.          SpiceEKDataType  dtype;
  369.          SpiceInt         strlen;
  370.          SpiceInt         size;
  371.          SpiceBoolean     indexd;
  372.          SpiceBoolean     nullok;  };
  373.    
  374.    typedef struct _SpiceEKAttDsc  SpiceEKAttDsc;
  375.    
  376.    
  377.    
  378.    /*
  379.    EK segment summary:
  380.    */
  381.    
  382.    struct _SpiceEKSegSum 
  383.    
  384.       { SpiceChar        tabnam [SPICE_EK_TSTRLN];
  385.         SpiceInt         nrows;
  386.         SpiceInt         ncols;
  387.         SpiceChar        cnames [SPICE_EK_MXCLSG][SPICE_EK_CSTRLN];
  388.         SpiceEKAttDsc    cdescrs[SPICE_EK_MXCLSG];                    };
  389.           
  390.    typedef struct _SpiceEKSegSum  SpiceEKSegSum;
  391. #endif