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

OpenGL

开发平台:

Visual C++

  1. /*
  2. -Abstract
  3.    The memory allocation prototypes and macros for use in CSPICE. 
  4.    
  5. -Disclaimer
  6.    THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE
  7.    CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S.
  8.    GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE
  9.    ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE
  10.    PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS"
  11.    TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY
  12.    WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A
  13.    PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC
  14.    SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE
  15.    SOFTWARE AND RELATED MATERIALS, HOWEVER USED.
  16.    IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA
  17.    BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT
  18.    LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  19.    INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS,
  20.    REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE
  21.    REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY.
  22.    RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF
  23.    THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY
  24.    CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE
  25.    ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE.
  26. -Particulars
  27.    The routines maintain a count of the number of mallocs vs. free, 
  28.    signalling an error if any unreleased memory exists at the end 
  29.    of an Icy interface call.
  30.    The macro ALLOC_CHECK performs malloc/free test. If used, the macro 
  31.    should exists at the end of any routine using these memory management
  32.    routines.
  33.    Prototypes in this file:
  34.       alloc_count
  35.       alloc_SpiceMemory
  36.       alloc_SpiceString_C_array
  37.       alloc_SpiceString_C_Copy_array
  38.       alloc_SpiceDouble_C_array
  39.       alloc_SpiceInt_C_array                   
  40.       alloc_SpiceString
  41.       alloc_SpiceString_Pointer_array
  42.       free_SpiceString_C_array 
  43.       free_SpiceMemory
  44. -Version
  45.    CSPICE 1.0.1 23-JUN-2005 (EDW)
  46.       Add prototype for alloc_SpiceString_Pointer_array, allocate
  47.       an array of pointers to SpiceChar.
  48.    Icy 1.0.0 December 19, 2003 (EDW)
  49.    
  50.       Initial release.
  51. */
  52.  
  53. #ifndef ZZALLOC_H
  54. #define ZZALLOC_H
  55.    /* Allocation call prototypes: */
  56.    int           alloc_count                    ( SpiceChar* op );
  57.    SpiceChar  ** alloc_SpiceString_C_array      ( int string_length, 
  58.                                                   int string_count   );
  59.    SpiceChar  ** alloc_SpiceString_C_Copy_array ( int array_len ,
  60.                                                   int string_len,
  61.                                                   SpiceChar ** array );
  62.    SpiceDouble * alloc_SpiceDouble_C_array      ( int rows, 
  63.                                                   int cols );
  64.    SpiceInt    * alloc_SpiceInt_C_array         ( int rows, 
  65.                                                   int cols );
  66.    SpiceChar   * alloc_SpiceString              ( int length );
  67.    SpiceChar  ** alloc_SpiceString_Pointer_array( int array_len );
  68.    
  69.    void          free_SpiceString_C_array       ( int dim, 
  70.                                                   SpiceChar ** array );
  71.    void        * alloc_SpiceMemory              ( unsigned size );
  72.    void          free_SpiceMemory               ( void * ptr );
  73.    /*
  74.    Simple macro to ensure a zero value alloc count at end of routine. 
  75.    Note, the need to use this macro exists only in those routines 
  76.    allocating/deallocating memory.
  77.    */
  78. #define ALLOC_CHECK  if ( alloc_count( "=" ) != 0 )                        
  79.                 {                                                          
  80.                 setmsg_c ( "Malloc/Free count not zero at end of routine." 
  81.                            " Malloc count = #.");                          
  82.                 errint_c ( "#", alloc_count ( "=" )    );                  
  83.                 sigerr_c ( "SPICE(MALLOCCOUNT)"        );                  
  84.                 }
  85. #endif