PSMILe_f2c.h

Go to the documentation of this file.
00001 /**********************************************************************/
00002 
00003 /* Copyright 2006-2010, NEC Europe Ltd., London, UK. */
00004 /* All rights reserved. Use is subject to OASIS4 license terms. */
00005 
00006 /**********************************************************************
00007 
00008 !----------------------------------------------------------------------
00009 !BOP
00010 !
00011 ! !INCLUDE:  PSMILe_f2c.h
00012 !
00013 ! !DESCRIPTION:
00014 ! 
00015   Include file of C-Interface of PSMILe Library:
00016 
00017   This include-file contains the installation dependent definitions
00018   of the FORTRAN to C-Interface of the PSMILe Library.
00019 
00020 ! !REVISION HISTORY:
00021 !
00022 !   Date      Programmer   Description
00023 ! ----------  ----------   -----------
00024 ! 01.12.03    H. Ritzdorf  created
00025 !
00026 !EOP
00027 !-----------------------------------------------------------------------
00028 
00029   ----------------------------------------------------------------------
00030 
00031   $Id: PSMILe_f2c.h 2791 2010-12-01 16:37:57Z hanke $
00032 
00033  ***********************************************************************/
00034 
00035 /* =====================================================================
00036    Definitions of Variables used in the Interface between Fortran and C
00037 
00038    INTEGER    : Corresponding type to Fortran type integer
00039    REAL       : Corresponding type to Fortran type real
00040 
00041    LONG_INT_C : C type which corresponds to the Fortran type
00042                 LONG_INT_F.
00043                 LONG_INT_F must be large enough to store relative
00044                 addresses which are pointers to allocated buffers.
00045    ===================================================================== */
00046 
00047 #ifndef INTEGER
00048 #  if defined ( PRISM_EXTENDED_WIDTH )
00049 /*    Fortran INTEGER corresponds to C's long long */
00050 #     define INTEGER              long long
00051 #  else
00052 #     define INTEGER              int
00053 #  endif
00054 #endif /* INTEGER */
00055 
00056 #ifndef REAL
00057 #  if defined ( PRISM_EXTENDED_WIDTH )
00058 /*    Fortran REAL corresponds to C's double */
00059 #     define REAL                 double
00060 #  else
00061 #     define REAL                 float
00062 #  endif
00063 #endif /* REAL */
00064 
00065 #ifndef LONG_INT_C
00066 #   if defined (POINTER_64_BITS)
00067 #      define LONG_INT_C           long long
00068 #   else
00069 #      define LONG_INT_C           INTEGER
00070 #   endif
00071 #endif
00072 
00073 #ifndef MALLOC
00074 
00075 #   define MALLOC(size) malloc ((size_t) size)
00076 #   define FREE(ptr)    free (ptr)
00077 
00078 #endif /* MALLOC */
00079 
00080 #ifdef PRISM_ASSERTION
00081 #   undef ASSERT
00082 #ifdef __ANSI_CPP__
00083 #   define ASSERT(c) \
00084 if (!(c)) {\
00085    fprintf(stderr, "### Assertion violation: %s in %s:%d\n",\
00086            #c, __FILE__, __LINE__);\
00087    abort ();\
00088 }
00089 #else
00090 #   define ASSERT(c) \
00091 if (!(c)) {\
00092    fprintf(stderr, "### Assertion violation: %s in %s:%d\n",\
00093            "expression", __FILE__, __LINE__);\
00094    abort ();\
00095 }
00096 #endif /* __ANSI_CPP__ */
00097 
00098 #else
00099 
00100 #   define ASSERT(c) 
00101 
00102 #endif /* PRISM_ASSERTION */
00103 
00104 /* =====================================================================
00105    Names of C-Routines which are called by FORTRAN routines
00106    ===================================================================== */
00107 
00108 #if defined (FORTRANUNDERSCORE)
00109 
00110 #  define psmile_flushstd    psmile_flushstd_
00111 #  define psmile_redirstdout psmile_redirstdout_
00112 #  define psmile_get_varsize psmile_get_varsize_
00113 #  define psmile_bsend       psmile_bsend_
00114 #  define psmile_bsend_init  psmile_bsend_init_
00115 #  define psmile_scandir     psmile_scandir_
00116 #  define psmile_io_scandir  psmile_io_scandir_
00117 #  define psmile_io_scandir_no_of_files   psmile_io_scandir_no_of_files_
00118 #  define psmile_attach      psmile_attach_
00119 #  define psmile_ddadd       psmile_ddadd_
00120 
00121 #elif defined (FORTRANCAPS)
00122 
00123 #  define psmile_flushstd    PSMILE_FLUSHSTD
00124 #  define psmile_redirstdout PSMILE_REDIRSTDOUT
00125 #  define psmile_get_varsize PSMILE_GET_VARSIZE
00126 #  define psmile_bsend       PSMILE_BSEND
00127 #  define psmile_bsend_init  PSMILE_BSEND_INIT
00128 #  define psmile_scandir     PSMILE_SCANDIR
00129 #  define psmile_io_scandir  PSMILE_IO_SCANDIR
00130 #  define psmile_io_scandir_no_of_files   PSMILE_IO_SCANDIR_NO_OF_FILES
00131 #  define psmile_attach      PSMILE_ATTACH
00132 #  define psmile_ddadd       PSMILE_DDADD
00133 
00134 #elif defined (FORTRANDOUBLEUNDERSCORE)
00135 
00136 #  define psmile_flushstd    psmile_flushstd__
00137 #  define psmile_redirstdout psmile_redirstdout__
00138 #  define psmile_get_varsize psmile_get_varsize__
00139 #  define psmile_bsend       psmile_bsend__
00140 #  define psmile_bsend_init  psmile_bsend_init__
00141 #  define psmile_scandir     psmile_scandir__
00142 #  define psmile_io_scandir  psmile_io_scandir__
00143 #  define psmile_io_scandir_no_of_files   psmile_io_scandir_no_of_files__
00144 #  define psmile_attach      psmile_attach__
00145 #  define psmile_ddadd       psmile_ddadd__
00146 
00147 #endif
00148 
00149 /* =====================================================================
00150    Interface description of C routines
00151    ===================================================================== */
00152 
00153    /* Utilities for standard I/O */
00154 
00155 void psmile_flushstd (void);
00156 void psmile_redirstdout (char *filestem,    INTEGER *lenstr,
00157                          INTEGER *parallel, INTEGER *my_pe, INTEGER *npes,
00158                          INTEGER *ierror);
00159 
00160    /* Utilities for standard I/O */
00161 
00162 void psmile_get_varsize (void *p1, void *p2, INTEGER *diff);

Generated on 18 Mar 2011 for Oasis4 by  doxygen 1.6.1