summaryrefslogtreecommitdiffstats
path: root/ast/f77.h.in
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-11-02 19:11:06 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-11-02 19:11:06 (GMT)
commit33c55bd916dff8c4932b01c7db58f0103ac31c31 (patch)
treea4cdca3287dd2df5247ce8079c424ffa438b4c2e /ast/f77.h.in
parent4121637f3d41d6dc23e6543a445b5a3aed9e6ddc (diff)
downloadblt-33c55bd916dff8c4932b01c7db58f0103ac31c31.zip
blt-33c55bd916dff8c4932b01c7db58f0103ac31c31.tar.gz
blt-33c55bd916dff8c4932b01c7db58f0103ac31c31.tar.bz2
update ast
Diffstat (limited to 'ast/f77.h.in')
-rw-r--r--ast/f77.h.in1096
1 files changed, 0 insertions, 1096 deletions
diff --git a/ast/f77.h.in b/ast/f77.h.in
deleted file mode 100644
index 3a886fc..0000000
--- a/ast/f77.h.in
+++ /dev/null
@@ -1,1096 +0,0 @@
-/*
-*+
-* Name:
-* f77.h and cnf.h
-
-* Purpose:
-* C - FORTRAN interace macros and prototypes
-
-* Language:
-* C (part ANSI, part not)
-
-* Type of Module:
-* C include file
-
-* Description:
-* For historical reasons two files, F77.h and cnf.h are required
-* but the have now been combined and for new code, only one is
-* necessary.
-*
-* This file defines the macros needed to write C functions that are
-* designed to be called from FORTRAN programs, and to do so in a
-* portable way. Arguments are normally passed by reference from a
-* FORTRAN program, and so the F77 macros arrange for a pointer to
-* all arguments to be available. This requires no work on most
-* machines, but will actually generate the pointers on a machine
-* that passes FORTRAN arguments by value.
-
-* Notes:
-* - Macros are provided to handle the conversion of logical data
-* values between the way that FORTRAN represents a value and the
-* way that C represents it.
-* - Macros are provided to convert variables between the FORTRAN and
-* C method of representing them. In most cases there is no
-* conversion required, the macros just arrange for a pointer to
-* the FORTRAN variable to be set appropriately. The possibility that
-* FORTRAN and C might use different ways of representing integer
-* and floating point values is considered remote, the macros are
-* really only there for completeness and to assist in the automatic
-* generation of C interfaces.
-* - For character variables the macros convert between
-* the FORTRAN method of representing them (fixed length, blank
-* filled strings) and the C method (variable length, null
-* terminated strings) using calls to the CNF functions.
-
-* Implementation Deficiencies:
-* - The macros support the K&R style of function definition, but
-* this file may not work with all K&R compilers as it contains
-* "#if defined" statements. These could be replaced with #ifdef's
-* if necessary. This has not been done as is would make the code
-* less clear and the need for support for K&R sytle definitions
-* should disappear as ANSI compilers become the default.
-
-* Copyright:
-* Copyright (C) 1991, 1993 Science & Engineering Research Council.
-* Copyright (C) 2006 Particle Physics and Astronomy Research Council.
-* Copyright (C) 2007,2008 Science and Technology Facilities Council.
-* All Rights Reserved.
-
-* Licence:
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License as
-* published by the Free Software Foundation; either version 2 of
-* the License, or (at your option) any later version.
-*
-* This program is distributed in the hope that it will be
-* useful,but WITHOUT ANY WARRANTY; without even the implied
-* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-* PURPOSE. See the GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street,Fifth Floor, Boston, MA
-* 02110-1301, USA
-
-* Authors:
-* PMA: Peter Allan (Starlink, RAL)
-* AJC: Alan Chipperfield (Starlink, RAL)
-* TIMJ: Tim Jenness (JAC)
-* PWD: Peter W. Draper (JAC, Durham University)
-* {enter_new_authors_here}
-
-* History:
-* 23-MAY-1991 (PMA):
-* Original version.
-* 19-JUN-1991 (PMA):
-* Removed VMS versions of IM(EX)PORT_LOGICAL macros that tried
-* to convert data representations.
-* 24-JUN-1991 (PMA):
-* Changed the names of IMPORT macros to GENPTR.
-* Removed the EXPORT macros.
-* 27-JUN-1991 (PMA):
-* Modified DECstation specific stuff to allow use of the c89
-* compiler.
-* 8-JUL-1991 (PMA):
-* Added macros to call FORTRAN from C.
-* 16-OCT-1991 (PMA):
-* Remove type_ARRAY2 definitions.
-* Remove the length argument from CHARACTER_ARRAY and the
-* dimension specifier from GENPTR_type_ARRAY.
-* Add extra brackets to F77_ISFALSE and F77_ISTRUE.
-* 25-OCT-1991 (PMA):
-* Changed "if defined(sun4)" to "if defined(sun)"
-* 2-JUN-1992 (PMA):
-* Changed "if defined(mips)" to "if defined(ultrix)" to prevent
-* those definitions being used on a Silicon Graphics machine.
-* 11-JUN-1992 (PMA):
-* Changed "if defined(ultrix)" back to "if defined(mips)" so that
-* it still works on OSF/1 on a DECstation.
-* Add support for general non-ANSI compilers, but not basic K&R
-* ones.
-* 12-JUN-1992 (PMA):
-* Change declaration of dummy scalar arguments to be const
-* pointers. Change declaration of dummy array arguments to be
-* const pointers.
-* 5-JAN-1993 (PMA):
-* Changed "if defined(mips)" so that it will recognise a
-* DECstation running Ultrix or OSF/1, but not a Silicon Graphics
-* workstation.
-* Change the definition of F77_BYTE_TYPE to add "signed".
-* Redefine this on VMS where signed is invalid syntax.
-* Add new types of UBYTE and UWORD.
-* 8-JAN-1993 (PMA):
-* Fix bug in the definition of CHARACTER_RETURN_VALUE. There was
-* an extraneous space.
-* Add a macro F77_POINTER_TYPE and use it to define POINTER.
-* 13-JAN-1993 (PMA):
-* Start to add support for K&R function definitions. These are
-* done on a per machine basis.
-* 16-APR-1993 (PMA):
-* Change the definition of F77_POINTER_TYPE from int to unsigned
-* int.
-* 7-MAY-1993 (PMA):
-* Change from using a null comment as a token concatenation
-* operator to using the internal macro _f77_x on non-ANSI
-* systems.
-* 10-MAY-1993 (PMA):
-* Finish adding K&R support. This will form version 2.0 of F77.
-* 10-MAY-1993 (PMA):
-* Add support for Alpha OSF/1.
-* 9-JUL-1993 (PMA):
-* Add further POINTER macros: POINTER_ARRAY,
-* GENPTR_POINTER_ARRAY, DECLARE_POINTER, DECLARE_POINTER_ARRAY,
-* POINTER_ARG, POINTER_ARRAY_ARG, F77_POINTER_FUNCTION,
-* KR_POINTER_ARRAY.
-* 24-AUG-1993 (PMA):
-* Add const to the VMS definitions of CHARACTER and CHARACTER_ARRAY.
-* 3-NOV-1993 (PMA):
-* Remove K&R stuff to a separate file.
-* Released on Unix as version 2.0 of CNF.
-* 11-NOV-1993 (PMA):
-* Return to using the null comment to concatenate text on non-ANSI
-* systems as _f77_x caused problems with the c89 -common flag on
-* DECstations.
-* 23-JAN-1996 (AJC):
-* Add SUBROUTINE, type_FUNCTION, SUBROUTINE_ARG,
-* type_FUNCTION_ARG, GENPTR_SUBROUTINE and GENPTR_type_FUNCTION
-* required for passed subroutine and function name.
-* 29-JAN-1996 (AJC):
-* Add the dynamic CHARACTER_ macros
-* and CHARACTER_ARG_TYPE
-* 22-FEB-1996 (AJC):
-* Add CHARACTER_RETURN_ARG
-* 23-MAY-1996 (AJC):
-* Add DECLARE_CHARACTER_ARRAY_DYN
-* F77_CREATE_CHARACTER_ARRAY
-* F77_CHARACTER_ARG_TYPE
-* 14-JUN-1996 (AJC):
-* Add DECLARE_LOGICAL_ARRAY_DYN
-* F77_CREATE_LOGICAL_ARRAY
-* 21-JUN-1996 (AJC):
-* Add cast to _ARRAY_ARGs to allow multidimensional arrays
-* 17-MAR-1998 (AJC):
-* Add DECLARE, CREATE and FREE dynamic array macros for all types
-* Changed CREATE_CHARACTER_ARRAY and CREATE_LOGICAL_ARRAY to use
-* number of elements rather than dimensions.
-* Add IMPORT, EXPORT and ASSOC macros
-* 22-JUL-1998 (AJC):
-* Combined F77.h and cnf.h
-* 23-SEP-1998 (AJC):
-* Input strings for cnf -> const char *
-* Input int arrays for cnf -> const int *
-* 4-NOV-1998 (AJC):
-* Bring cnf prototypes in line with .c routines
-* 8-FEB-1999 (AJC):
-* Added cnf_mem stuff
-* 9-FEB-1999 (AJC):
-* Use cnf_cptr/fptr for IMPORT/EXPORT_POINTER
-* 16-FEB-1999 (AJC):
-* Added missing cnf_fptr prototype
-* 23-JUN-1999 (AJC):
-* Change cnf_name to cnfName
-* and add macros for cnf_name
-* 1-DEC-1999 (AJC):
-* Add define cnf_free
-* 7-JAN-2000 (AJC):
-* Correct omission of F77_ASSOC_UBYTE_ARRAY
-* Correct F77_EXPORT_UWORD_ARRAY
-* 25-AUG-2005 (TIMJ):
-* Add cnfInitRTL
-* 23-FEB-2006 (TIMJ):
-* Add cnfRealloc
-* Use starMalloc rather than malloc in F77_CREATE_POINTER_ARRAY
-* (since it needs to match what goes on in cnfFree)
-* 21-JUN-2006 (PWD):
-* Changed to use a different return type for REAL functions. This
-* effects g77 under 64-bit, when the f2c bindings expect the return
-* value of a REAL function to be a double, not a float.
-* 25-SEP-2006 (PWD):
-* Introduced F77_CREATE_IMPORT_CHARACTER. Match length of
-* F77_CREATE_CHARACTER to result from cnfCref.
-* 13-JUL-2007 (PWD):
-* Parameterise the type of Fortran character string lengths. Can
-* be long.
-* 7-OCT-2008 (TIMJ):
-* Initialise pointers.
-* 11-MAY-2011 (DSB):
-* Added F77_LOCK
-* {enter_further_changes_here}
-*
-
-* Bugs:
-* {note_any_bugs_here}
-
-*-
-------------------------------------------------------------------------------
-*/
-#if !defined(CNF_MACROS)
-#define CNF_MACROS
-
-#include <stdlib.h>
-#include <string.h>
-/* This initial sections defines values for all macros. These are the */
-/* values that are generally appropriate to an ANSI C compiler on Unix. */
-/* For macros that have different values on other systems, the macros */
-/* should be undefined and then redefined in the system specific sections. */
-/* At the end of this section, some macros are redefined if the compiler */
-/* is non-ANSI. */
-
-#if defined(__STDC__) || defined(VMS)
-#define CNF_CONST const
-#else
-#define CNF_CONST
-#endif
-
-/* ----- Macros common to calling C from FORTRAN and FORTRAN from C ---- */
-
-
-/* --- External Names --- */
-
-/* Macro to define the name of a Fortran routine or common block. This */
-/* ends in an underscore on many Unix systems. */
-
-#define F77_EXTERNAL_NAME(X) X ## _
-
-
-/* --- Logical Values --- */
-
-/* Define the values that are used to represent the logical values TRUE */
-/* and FALSE in Fortran. */
-
-#define F77_TRUE 1
-#define F77_FALSE 0
-
-/* Define macros that evaluate to C logical values, given a FORTRAN */
-/* logical value. */
-
-#define F77_ISTRUE(X) ( X )
-#define F77_ISFALSE(X) ( !( X ) )
-
-
-/* --- Common Blocks --- */
-
-/* Macros used in referring to FORTRAN common blocks. */
-
-#define F77_BLANK_COMMON @BLANK_COMMON_SYMBOL@
-#define F77_NAMED_COMMON(B) F77_EXTERNAL_NAME(B)
-
-
-
-/* ------------------ Calling C from FORTRAN --------------------------- */
-
-
-/* --- Data Types --- */
-
-/* Define macros for all the Fortran data types (except COMPLEX, which is */
-/* not handled by this package). */
-
-#define F77_INTEGER_TYPE int
-#define F77_REAL_TYPE float
-#define F77_REAL_FUNCTION_TYPE @REAL_FUNCTION_TYPE@
-#define F77_DOUBLE_TYPE double
-#define F77_LOGICAL_TYPE int
-#define F77_CHARACTER_TYPE char
-#define F77_BYTE_TYPE signed char
-#define F77_WORD_TYPE short int
-#define F77_UBYTE_TYPE unsigned char
-#define F77_UWORD_TYPE unsigned short int
-
-/* Define macros for the type of a CHARACTER and CHARACTER_ARRAY argument */
-#define F77_CHARACTER_ARG_TYPE char
-#define F77_CHARACTER_ARRAY_ARG_TYPE char
-
-/* Define a macro to use when passing arguments that STARLINK FORTRAN */
-/* treats as a pointer. From the point of view of C, this type should be */
-/* (void *), but it is declared as type unsigned int as we actually pass */
-/* an INTEGER from the FORTRAN routine. The distinction is important for */
-/* architectures where the size of an INTEGER is not the same as the size */
-/* of a pointer. */
-
-#define F77_POINTER_TYPE unsigned int
-
-
-/* --- Subroutine Names --- */
-
-/* This declares that the C function returns a value of void. */
-
-#define F77_SUBROUTINE(X) void F77_EXTERNAL_NAME(X)
-
-
-/* --- Function Names --- */
-
-/* Macros to define the types and names of functions that return values. */
-/* Due the the different ways that function return values could be */
-/* implemented, it is better not to use functions, but to stick to using */
-/* subroutines. */
-
-/* Character functions are implemented, but in a way that cannot be */
-/* guaranteed to be portable although it will work on VMS, SunOS, Ultrix */
-/* and DEC OSF/1. It would be better to return the character value as a */
-/* subroutine argument where possible, rather than use a character */
-/* function. */
-
-#define F77_INTEGER_FUNCTION(X) F77_INTEGER_TYPE F77_EXTERNAL_NAME(X)
-#define F77_REAL_FUNCTION(X) F77_REAL_FUNCTION_TYPE F77_EXTERNAL_NAME(X)
-#define F77_DOUBLE_FUNCTION(X) F77_DOUBLE_TYPE F77_EXTERNAL_NAME(X)
-#define F77_LOGICAL_FUNCTION(X) F77_LOGICAL_TYPE F77_EXTERNAL_NAME(X)
-#define F77_CHARACTER_FUNCTION(X) void F77_EXTERNAL_NAME(X)
-#define F77_BYTE_FUNCTION(X) F77_BYTE_TYPE F77_EXTERNAL_NAME(X)
-#define F77_WORD_FUNCTION(X) F77_WORD_TYPE F77_EXTERNAL_NAME(X)
-#define F77_UBYTE_FUNCTION(X) F77_UBYTE_TYPE F77_EXTERNAL_NAME(X)
-#define F77_UWORD_FUNCTION(X) F77_UWORD_TYPE F77_EXTERNAL_NAME(X)
-#define F77_POINTER_FUNCTION(X) F77_POINTER_TYPE F77_EXTERNAL_NAME(X)
-
-
-/* --- Character return value for a function --- */
-
-#define CHARACTER_RETURN_VALUE(X) CHARACTER(X) TRAIL(X)
-#define CHARACTER_RETURN_ARG(X) CHARACTER_ARG(X) TRAIL_ARG(X)
-
-/* --- Dummy Arguments --- */
-
-/* Macros for defining subroutine arguments. All these macros take a */
-/* single argument; the name of the parameter. On most systems, a numeric */
-/* argument is passed as a pointer. */
-
-#define INTEGER(X) F77_INTEGER_TYPE *CNF_CONST X
-#define REAL(X) F77_REAL_TYPE *CNF_CONST X
-#define DOUBLE(X) F77_DOUBLE_TYPE *CNF_CONST X
-#define LOGICAL(X) F77_LOGICAL_TYPE *CNF_CONST X
-#define BYTE(X) F77_BYTE_TYPE *CNF_CONST X
-#define WORD(X) F77_WORD_TYPE *CNF_CONST X
-#define UBYTE(X) F77_UBYTE_TYPE *CNF_CONST X
-#define UWORD(X) F77_UWORD_TYPE *CNF_CONST X
-
-/* Pointer arguments. Define a pointer type for passing pointer values */
-/* between subroutines. */
-
-#define POINTER(X) F77_POINTER_TYPE *CNF_CONST X
-
-/* EXTERNAL arguments. Define a passed subroutine or function name */
-#define SUBROUTINE(X) void (*X)()
-#define INTEGER_FUNCTION(X) F77_INTEGER_TYPE (*X)()
-#define REAL_FUNCTION(X) F77_REAL_TYPE (*X)()
-#define DOUBLE_FUNCTION(X) F77_DOUBLE_TYPE (*X)()
-#define LOGICAL_FUNCTION(X) F77_LOGICAL_TYPE (*X)()
-#define CHARACTER_FUNCTION(X) F77_CHARACTER_TYPE (*X)()
-#define BYTE_FUNCTION(X) F77_BYTE_TYPE (*X)()
-#define WORD_FUNCTION(X) F77_WORD_TYPE (*X)()
-#define UBYTE_FUNCTION(X) F77_UBYTE_TYPE (*X)()
-#define UWORD_FUNCTION(X) F77_UWORD_TYPE (*X)()
-#define POINTER_FUNCTION(X) F77_POINTER_TYPE (*X)()
-
-/* Array arguments. */
-
-#define INTEGER_ARRAY(X) F77_INTEGER_TYPE *CNF_CONST X
-#define REAL_ARRAY(X) F77_REAL_TYPE *CNF_CONST X
-#define DOUBLE_ARRAY(X) F77_DOUBLE_TYPE *CNF_CONST X
-#define LOGICAL_ARRAY(X) F77_LOGICAL_TYPE *CNF_CONST X
-#define BYTE_ARRAY(X) F77_BYTE_TYPE *CNF_CONST X
-#define WORD_ARRAY(X) F77_WORD_TYPE *CNF_CONST X
-#define UBYTE_ARRAY(X) F77_UBYTE_TYPE *CNF_CONST X
-#define UWORD_ARRAY(X) F77_UWORD_TYPE *CNF_CONST X
-
-#define POINTER_ARRAY(X) F77_POINTER_TYPE *CNF_CONST X
-
-/* Macros to handle character arguments. */
-
-/* Character arguments can be passed in many ways. The purpose of these */
-/* macros and the GENPTR_CHARACTER macro (defined in the next section) is */
-/* to generate a pointer to a character variable called ARG and an integer */
-/* ARG_length containing the length of ARG. If these two variables are */
-/* available directly from the argument list of the routine, then the */
-/* GENPTR_CHARACTER macro is null, otherwise it works on intermediate */
-/* variables. */
-
-#define CHARACTER(X) F77_CHARACTER_TYPE *CNF_CONST X
-#define TRAIL(X) ,@TRAIL_TYPE@ X ## _length
-#define CHARACTER_ARRAY(X) F77_CHARACTER_TYPE *CNF_CONST X
-
-
-/* --- Getting Pointers to Arguments --- */
-
-/* Macros that ensure that a pointer to each argument is available for the */
-/* programmer to use. Usually this means that these macros are null. On */
-/* VMS, a pointer to a character variable has to be generated. If a */
-/* particular machine were to pass arguments by reference, rather than by */
-/* value, then these macros would construct the appropriate pointers. */
-
-#define GENPTR_INTEGER(X)
-#define GENPTR_REAL(X)
-#define GENPTR_DOUBLE(X)
-#define GENPTR_CHARACTER(X)
-#define GENPTR_LOGICAL(X)
-#define GENPTR_BYTE(X)
-#define GENPTR_WORD(X)
-#define GENPTR_UBYTE(X)
-#define GENPTR_UWORD(X)
-#define GENPTR_POINTER(X)
-
-#define GENPTR_INTEGER_ARRAY(X)
-#define GENPTR_REAL_ARRAY(X)
-#define GENPTR_DOUBLE_ARRAY(X)
-#define GENPTR_CHARACTER_ARRAY(X)
-#define GENPTR_LOGICAL_ARRAY(X)
-#define GENPTR_BYTE_ARRAY(X)
-#define GENPTR_WORD_ARRAY(X)
-#define GENPTR_UBYTE_ARRAY(X)
-#define GENPTR_UWORD_ARRAY(X)
-#define GENPTR_POINTER_ARRAY(X)
-
-#define GENPTR_SUBROUTINE(X)
-#define GENPTR_INTEGER_FUNCTION(X)
-#define GENPTR_REAL_FUNCTION(X)
-#define GENPTR_DOUBLE_FUNCTION(X)
-#define GENPTR_CHARACTER_FUNCTION(X)
-#define GENPTR_LOGICAL_FUNCTION(X)
-#define GENPTR_BYTE_FUNCTION(X)
-#define GENPTR_WORD_FUNCTION(X)
-#define GENPTR_UBYTE_FUNCTION(X)
-#define GENPTR_UWORD_FUNCTION(X)
-#define GENPTR_POINTER_FUNCTION(X)
-
-
-
-/* ------------------ Calling FORTRAN from C --------------------------- */
-
-
-/* --- Declare variables --- */
-
-#define DECLARE_INTEGER(X) F77_INTEGER_TYPE X
-#define DECLARE_REAL(X) F77_REAL_TYPE X
-#define DECLARE_DOUBLE(X) F77_DOUBLE_TYPE X
-#define DECLARE_LOGICAL(X) F77_LOGICAL_TYPE X
-#define DECLARE_BYTE(X) F77_BYTE_TYPE X
-#define DECLARE_WORD(X) F77_WORD_TYPE X
-#define DECLARE_UBYTE(X) F77_UBYTE_TYPE X
-#define DECLARE_UWORD(X) F77_UWORD_TYPE X
-
-#define DECLARE_POINTER(X) F77_POINTER_TYPE X
-
-#define DECLARE_CHARACTER(X,L) F77_CHARACTER_TYPE X[L]; \
- const int X##_length = L
-
-
-/* --- Declare arrays --- */
-
-#define DECLARE_INTEGER_ARRAY(X,D) F77_INTEGER_TYPE X[D]
-#define DECLARE_REAL_ARRAY(X,D) F77_REAL_TYPE X[D]
-#define DECLARE_DOUBLE_ARRAY(X,D) F77_DOUBLE_TYPE X[D]
-#define DECLARE_LOGICAL_ARRAY(X,D) F77_LOGICAL_TYPE X[D]
-#define DECLARE_BYTE_ARRAY(X,D) F77_BYTE_TYPE X[D]
-#define DECLARE_WORD_ARRAY(X,D) F77_WORD_TYPE X[D]
-#define DECLARE_UBYTE_ARRAY(X,D) F77_UBYTE_TYPE X[D]
-#define DECLARE_UWORD_ARRAY(X,D) F77_UWORD_TYPE X[D]
-#define DECLARE_POINTER_ARRAY(X,D) F77_POINTER_TYPE X[D]
-#define DECLARE_CHARACTER_ARRAY(X,L,D) F77_CHARACTER_TYPE X[D][L]; \
- const int X##_length = L
-
-/* --- Declare and construct dynamic CHARACTER arguments --- */
-#define DECLARE_CHARACTER_DYN(X) F77_CHARACTER_TYPE *X = NULL;\
- int X##_length = 0
-#define F77_CREATE_CHARACTER(X,L) X=cnfCref(L);\
- X##_length = (L>0?L:1)
-
-/* Declare Dynamic Fortran arrays */
-#define DECLARE_INTEGER_ARRAY_DYN(X) F77_INTEGER_TYPE *X = NULL
-#define DECLARE_REAL_ARRAY_DYN(X) F77_REAL_TYPE *X = NULL
-#define DECLARE_DOUBLE_ARRAY_DYN(X) F77_DOUBLE_TYPE *X = NULL
-#define DECLARE_LOGICAL_ARRAY_DYN(X) F77_LOGICAL_TYPE *X = NULL
-#define DECLARE_BYTE_ARRAY_DYN(X) F77_BYTE_TYPE *X = NULL
-#define DECLARE_WORD_ARRAY_DYN(X) F77_WORD_TYPE *X = NULL
-#define DECLARE_UBYTE_ARRAY_DYN(X) F77_UBYTE_TYPE *X = NULL
-#define DECLARE_UWORD_ARRAY_DYN(X) F77_UWORD_TYPE *X = NULL
-#define DECLARE_POINTER_ARRAY_DYN(X) F77_POINTER_TYPE *X = NULL
-#define DECLARE_CHARACTER_ARRAY_DYN(X) F77_CHARACTER_TYPE *X = NULL;\
- int X##_length = 0
-
-/* Create arrays dynamic Fortran arrays for those types which require */
-/* Separate space for Fortran and C arrays */
-/* Character and logical are already defined */
-/* For most types there is nothing to do */
-#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
- {int f77dims[1];f77dims[0]=N;X=cnfCrefa(L,1,f77dims);X##_length=L;}
-#define F77_CREATE_CHARACTER_ARRAY_M(X,L,N,D) X=cnfCrefa(L,N,D);\
- X##_length = L
-#define F77_CREATE_LOGICAL_ARRAY(X,N) \
- {int f77dims[1];f77dims[0]=N;X=cnfCrela(1,f77dims);}
-#define F77_CREATE_LOGICAL_ARRAY_M(X,N,D) X=cnfCrela(N,D)
-#define F77_CREATE_INTEGER_ARRAY(X,N)
-#define F77_CREATE_REAL_ARRAY(X,N)
-#define F77_CREATE_DOUBLE_ARRAY(X,N)
-#define F77_CREATE_BYTE_ARRAY(X,N)
-#define F77_CREATE_UBYTE_ARRAY(X,N)
-#define F77_CREATE_WORD_ARRAY(X,N)
-#define F77_CREATE_UWORD_ARRAY(X,N)
-#define F77_CREATE_POINTER_ARRAY(X,N)\
- X=(F77_POINTER_TYPE *) malloc(N*sizeof(F77_POINTER_TYPE))
-
-/* Associate Fortran arrays with C arrays */
-/* These macros ensure that there is space somewhere for the Fortran */
-/* array. They are complemetary to the CREATE_type_ARRAY macros */
-#define F77_ASSOC_CHARACTER_ARRAY(F,C)
-#define F77_ASSOC_LOGICAL_ARRAY(F,C)
-#define F77_ASSOC_INTEGER_ARRAY(F,C) F=C
-#define F77_ASSOC_REAL_ARRAY(F,C) F=C
-#define F77_ASSOC_DOUBLE_ARRAY(F,C) F=C
-#define F77_ASSOC_BYTE_ARRAY(F,C) F=C
-#define F77_ASSOC_UBYTE_ARRAY(F,C) F=C
-#define F77_ASSOC_WORD_ARRAY(F,C) F=C
-#define F77_ASSOC_UWORD_ARRAY(F,C) F=C
-#define F77_ASSOC_POINTER_ARRAY(F,C)
-
-/* Free created dynamic arrays */
-/* Character and logical are already defined */
-/* For most types there is nothing to do */
-#define F77_FREE_INTEGER(X)
-#define F77_FREE_REAL(X)
-#define F77_FREE_DOUBLE(X)
-#define F77_FREE_BYTE(X)
-#define F77_FREE_UBYTE(X)
-#define F77_FREE_WORD(X)
-#define F77_FREE_UWORD(X)
-#define F77_FREE_POINTER(X) cnfFree((void *)X);
-#define F77_FREE_CHARACTER(X) cnfFreef( X )
-#define F77_FREE_LOGICAL(X) cnfFree( (char *)X )
-
-/* --- IMPORT and EXPORT of values --- */
-/* Export C variables to Fortran variables */
-#define F77_EXPORT_CHARACTER(C,F,L) cnfExprt(C,F,L)
-#define F77_EXPORT_DOUBLE(C,F) F=C
-#define F77_EXPORT_INTEGER(C,F) F=C
-#define F77_EXPORT_LOGICAL(C,F) F=C?F77_TRUE:F77_FALSE
-#define F77_EXPORT_REAL(C,F) F=C
-#define F77_EXPORT_BYTE(C,F) F=C
-#define F77_EXPORT_WORD(C,F) F=C
-#define F77_EXPORT_UBYTE(C,F) F=C
-#define F77_EXPORT_UWORD(C,F) F=C
-#define F77_EXPORT_POINTER(C,F) F=cnfFptr(C)
-#define F77_EXPORT_LOCATOR(C,F) cnfExpch(C,F,DAT__SZLOC)
-
-/* Allow for character strings to be NULL, protects strlen. Note this
- * does not allow lengths to differ. */
-#define F77_CREATE_EXPORT_CHARACTER(C,F) \
- if (C) { \
- F77_CREATE_CHARACTER(F,strlen(C)); \
- F77_EXPORT_CHARACTER(C,F,F##_length); \
- } else { \
- F77_CREATE_CHARACTER(F,1); \
- F77_EXPORT_CHARACTER(" ",F,F##_length); \
- }
-
-/* Export C arrays to Fortran */
-/* Arrays are assumed to be 1-d so just the number of elements is given */
-/* This may be OK for n-d arrays also */
-/* CHARACTER arrays may be represented in C as arrays of arrays of char or */
-/* as arrays of pointers to char (the _P variant) */
-#define F77_EXPORT_CHARACTER_ARRAY(C,LC,F,LF,N) \
- {int f77dims[1];f77dims[0]=N;cnfExprta(C,LC,F,LF,1,f77dims);}
-#define F77_EXPORT_CHARACTER_ARRAY_P(C,F,LF,N) \
- {int f77dims[1];f77dims[0]=N;cnfExprtap(C,F,LF,1,f77dims);}
-#define F77_EXPORT_DOUBLE_ARRAY(C,F,N) F=(F77_DOUBLE_TYPE *)C
-#define F77_EXPORT_INTEGER_ARRAY(C,F,N) F=(F77_INTEGER_TYPE *)C
-#define F77_EXPORT_LOGICAL_ARRAY(C,F,N) \
- {int f77dims[1];f77dims[0]=N;cnfExpla(C,F,1,f77dims);}
-#define F77_EXPORT_REAL_ARRAY(C,F,N) F=(F77_REAL_TYPE *)C
-#define F77_EXPORT_BYTE_ARRAY(C,F,N) F=(F77_BYTE_TYPE *)C
-#define F77_EXPORT_WORD_ARRAY(C,F,N) F=(F77_WORD_TYPE *)C
-#define F77_EXPORT_UBYTE_ARRAY(C,F,N) F=(F77_UBYTE_TYPE *)C
-#define F77_EXPORT_UWORD_ARRAY(C,F,N) F=(F77_UWORD_TYPE * )C
-#define F77_EXPORT_POINTER_ARRAY(C,F,N) \
- {int f77i;for (f77i=0;f77i<N;f77i++)F[f77i]=cnfFptr(C[f77i]);}
-#define F77_EXPORT_LOCATOR_ARRAY(C,F,N) \
- {int f77i;for (f77i=0;f77i<N;f77i++)cnfExpch(C,F,DAT__SZLOC);}
-
-/* Import Fortran variables to C */
-#define F77_IMPORT_CHARACTER(F,L,C) cnfImprt(F,L,C)
-#define F77_IMPORT_DOUBLE(F,C) C=F
-#define F77_IMPORT_INTEGER(F,C) C=F
-#define F77_IMPORT_LOGICAL(F,C) C=F77_ISTRUE(F)
-#define F77_IMPORT_REAL(F,C) C=F
-#define F77_IMPORT_BYTE(F,C) C=F
-#define F77_IMPORT_WORD(F,C) C=F
-#define F77_IMPORT_UBYTE(F,C) C=F
-#define F77_IMPORT_UWORD(F,C) C=F
-#define F77_IMPORT_POINTER(F,C) C=cnfCptr(F)
-#define F77_IMPORT_LOCATOR(F,C) cnfImpch(F,DAT__SZLOC,C)
-
-/* Import Fortran arrays to C */
-/* Arrays are assumed to be 1-d so just the number of elements is given */
-/* This may be OK for n-d arrays also */
-/* CHARACTER arrays may be represented in C as arrays of arrays of char or */
-/* as arrays of pointers to char (the _P variant) */
-#define F77_IMPORT_CHARACTER_ARRAY(F,LF,C,LC,N) \
- {int f77dims[1];f77dims[0]=N;cnfImprta(F,LF,C,LC,1,f77dims);}
-#define F77_IMPORT_CHARACTER_ARRAY_P(F,LF,C,LC,N) \
- {int f77dims[1];f77dims[0]=N;cnfImprtap(F,LF,C,LC,1,f77dims);}
-#define F77_IMPORT_DOUBLE_ARRAY(F,C,N)
-#define F77_IMPORT_INTEGER_ARRAY(F,C,N)
-#define F77_IMPORT_LOGICAL_ARRAY(F,C,N) \
- {int f77dims[1];f77dims[0]=N;cnfImpla(F,C,1,f77dims);}
-#define F77_IMPORT_REAL_ARRAY(F,C,N)
-#define F77_IMPORT_BYTE_ARRAY(F,C,N)
-#define F77_IMPORT_WORD_ARRAY(F,C,N)
-#define F77_IMPORT_UBYTE_ARRAY(F,C,N)
-#define F77_IMPORT_UWORD_ARRAY(F,C,N)
-#define F77_IMPORT_POINTER_ARRAY(F,C,N) \
- {int f77i;for (f77i=0;f77i<N;f77i++)C[f77i]=cnfCptr(F[f77i]);}
-#define F77_IMPORT_LOCATOR_ARRAY(F,C,N) \
- {int f77i;for (f77i=0;f77i<N;f77i++)cnfImpch(F,DAT__SZLOC,C);}
-
-/* --- Call a FORTRAN routine --- */
-
-#define F77_CALL(X) F77_EXTERNAL_NAME(X)
-
-
-/* --- Execute code synchronised by the CNF global mutex */
-#define F77_LOCK(code) \
- cnfLock(); \
- code \
- cnfUnlock();
-
-/* --- Pass arguments to a FORTRAN routine --- */
-
-#define INTEGER_ARG(X) X
-#define REAL_ARG(X) X
-#define DOUBLE_ARG(X) X
-#define LOGICAL_ARG(X) X
-#define BYTE_ARG(X) X
-#define WORD_ARG(X) X
-#define UBYTE_ARG(X) X
-#define UWORD_ARG(X) X
-#define POINTER_ARG(X) X
-#define CHARACTER_ARG(X) X
-#define TRAIL_ARG(X) ,X##_length
-
-#define SUBROUTINE_ARG(X) X
-#define INTEGER_FUNCTION_ARG(X) X
-#define REAL_FUNCTION_ARG(X) X
-#define DOUBLE_FUNCTION_ARG(X) X
-#define LOGICAL_FUNCTION_ARG(X) X
-#define CHARACTER_FUNCTION_ARG(X) X
-#define BYTE_FUNCTION_ARG(X) X
-#define WORD_FUNCTION_ARG(X) X
-#define UBYTE_FUNCTION_ARG(X) X
-#define UWORD_FUNCTION_ARG(X) X
-#define POINTER_FUNCTION_ARG(X) X
-
-#define INTEGER_ARRAY_ARG(X) (F77_INTEGER_TYPE *)X
-#define REAL_ARRAY_ARG(X) (F77_REAL_TYPE *)X
-#define DOUBLE_ARRAY_ARG(X) (F77_DOUBLE_TYPE *)X
-#define LOGICAL_ARRAY_ARG(X) (F77_LOGICAL_TYPE *)X
-#define BYTE_ARRAY_ARG(X) (F77_BYTE_TYPE *)X
-#define WORD_ARRAY_ARG(X) (F77_WORD_TYPE *)X
-#define UBYTE_ARRAY_ARG(X) (F77_UBYTE_TYPE *)X
-#define UWORD_ARRAY_ARG(X) (F77_UWORD_TYPE *)X
-#define POINTER_ARRAY_ARG(X) (F77_POINTER_TYPE *)X
-#define CHARACTER_ARRAY_ARG(X) (F77_CHARACTER_ARRAY_ARG_TYPE *)X
-
-/* Put the 64-bit INT support in one place */
-#define F77_INTEGER8_TYPE int64_t
-#define F77_INTEGER8_FUNCTION(X) F77_INTEGER8_TYPE F77_EXTERNAL_NAME(X)
-#define INTEGER8(X) F77_INTEGER8_TYPE *CNF_CONST X
-#define INTEGER8_FUNCTION(X) F77_INTEGER8_TYPE (*X)()
-#define INTEGER8_ARRAY(X) F77_INTEGER8_TYPE *CNF_CONST X
-#define GENPTR_INTEGER8(X)
-#define GENPTR_INTEGER8_ARRAY(X)
-#define GENPTR_INTEGER8_FUNCTION(X)
-#define DECLARE_INTEGER8(X) F77_INTEGER8_TYPE X
-#define DECLARE_INTEGER8_ARRAY(X,D) F77_INTEGER8_TYPE X[D]
-#define DECLARE_INTEGER8_ARRAY_DYN(X) F77_INTEGER8_TYPE *X = NULL
-#define F77_CREATE_INTEGER8_ARRAY(X,N)
-#define F77_ASSOC_INTEGER8_ARRAY(F,C) F=C
-#define F77_FREE_INTEGER8(X)
-#define F77_EXPORT_INTEGER8(C,F) F=C
-#define F77_EXPORT_INTEGER8_ARRAY(C,F,N) F=(F77_INTEGER8_TYPE *)C
-#define F77_IMPORT_INTEGER8(F,C) C=F
-#define F77_IMPORT_INTEGER8_ARRAY(F,C,N)
-#define INTEGER8_ARG(X) X
-#define INTEGER8_FUNCTION_ARG(X) X
-#define INTEGER8_ARRAY_ARG(X) (F77_INTEGER8_TYPE *)X
-
-/* ------------------------ Non-ansi section ------------------------------ */
-
-/* The difference between ANSI and non-ANSI compilers, as far as macro */
-/* definition is concerned, is that non-ANSI compilers do not support the */
-/* token concatenation operator (##). To work around this, we use the fact */
-/* that the null comment is preprocessed to produce no characters at all */
-/* by our non-ANSI compilers. */
-/* This section does not deal with the fact that some non-ANSI compilers */
-/* cannot handle function prototypes. That is handled in the machine */
-/* specific sections. */
-
-#if !defined(__STDC__)
-
-/* --- External Name --- */
-
-/* Macro to define the name of a Fortran routine or common block. This */
-/* ends in an underscore on many Unix systems. */
-
-#undef F77_EXTERNAL_NAME
-#define F77_EXTERNAL_NAME(X) X/**/_
-
-
-/* --- Dummy Arguments --- */
-
-/* Macros to handle character dummy arguments. */
-
-#undef TRAIL
-#define TRAIL(X) ,@TRAIL_TYPE@ X/**/_length
-
-
-/* --- Declare variables --- */
-
-#undef DECLARE_CHARACTER
-#define DECLARE_CHARACTER(X,L) F77_CHARACTER_TYPE X[L]; \
- const int X/**/_length = L
-#undef DECLARE_CHARACTER_ARRAY
-#define DECLARE_CHARACTER_ARRAY(X,L,D) F77_CHARACTER_TYPE X[D][L]; \
- const int X/**/_length = L
-#undef DECLARE_CHARACTER_DYN
-#define DECLARE_CHARACTER_DYN(X) F77_CHARACTER_TYPE *X;\
- int X/**/_length
-#undef DECLARE_CHARACTER_ARRAY_DYN
-#define DECLARE_CHARACTER_ARRAY_DYN(X) F77_CHARACTER_TYPE *X;\
- int X/**/_length
-#undef F77_CREATE_CHARACTER
-#define F77_CREATE_CHARACTER(X,L) X=cnfCref(L);\
- X/**/_length = L
-#undef F77_CREATE_CHARACTER_ARRAY
-#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
- {int f77dims[1];f77dims[0]=N;X=cnfCrefa(L,1,f77dims);X/**/_length=L;}
-
-/* --- Pass arguments to a FORTRAN routine --- */
-
-#undef TRAIL_ARG
-#define TRAIL_ARG(X) ,X/**/_length
-
-
-#endif /* of non ANSI redefinitions */
-
-
-/* ----------------------------------------------------------------------- */
-
-/* The standard macros defined above are known to work with the following */
-/* systems: */
-
-/*--------
-| Sun |
----------*/
-
-/* On SunOS, the ANSI definitions work with the acc and gcc compilers. */
-/* The cc compiler uses the non ANSI definitions. It also needs the K&R */
-/* definitions in the file kr.h. */
-/* On Solaris, the standard definitions work with the cc compiler. */
-
-#if defined(sun)
-
-#if !defined(__STDC__)
-#if !defined(_F77_KR)
-#define _F77_KR
-#endif
-#endif
-
-#endif /* Sun */
-
-/* -------------------- System dependent sections ------------------------- */
-
-/*------------
-| VAX/VMS |
--------------*/
-
-/* Many macros need to be changed due to the way that VMS handles external */
-/* names, passes character arguments and handles logical values. */
-
-
-#if defined(VMS)
-
-/* --- Data Types --- */
-
-/* Redefine the macro for the byte data type as signed is not valid syntax */
-/* as the VMS compiler is not ANSI compliant. */
-
-#undef F77_BYTE_TYPE
-#define F77_BYTE_TYPE char
-
-
-/* --- External Names --- */
-
-/* Macro to define the name of a Fortran routine or common block. */
-/* Fortran and C routines names are the same on VMS. */
-
-#undef F77_EXTERNAL_NAME
-#define F77_EXTERNAL_NAME(X) X
-
-
-/* --- Dummy Arguments --- */
-
-/* Macros to handle character arguments. */
-/* Character string arguments are pointers to character string descriptors */
-/* and there are no trailing arguments. */
-
-#if( VMS != 0 )
-#include <descrip.h>
-#endif
-
-
-#undef F77_CHARACTER_ARG_TYPE
-#define F77_CHARACTER_ARG_TYPE struct dsc$descriptor_s
-#undef F77_CHARACTER_ARRAY_ARG_TYPE
-#define F77_CHARACTER_ARRAY_ARG_TYPE struct dsc$descriptor_a
-#undef CHARACTER
-#define CHARACTER(X) F77_CHARACTER_ARG_TYPE *CNF_CONST X/**/_arg
-#undef TRAIL
-#define TRAIL(X)
-#undef CHARACTER_ARRAY
-#define CHARACTER_ARRAY(X) F77_CHARACTER_ARRAY_ARG_TYPE *CNF_CONST X/**/_arg
-#undef GENPTR_CHARACTER
-#define GENPTR_CHARACTER(X) \
- F77_CHARACTER_TYPE *X = X/**/_arg->dsc$a_pointer; \
- int X/**/_length = X/**/_arg->dsc$w_length;
-#undef GENPTR_CHARACTER_ARRAY
-#define GENPTR_CHARACTER_ARRAY(X) GENPTR_CHARACTER(X)
-
-
-/* --- Logical Values --- */
-
-#undef F77_TRUE
-#define F77_TRUE -1
-#undef F77_ISTRUE
-#define F77_ISTRUE(X) ( (X)&1 )
-#undef F77_ISFALSE
-#define F77_ISFALSE(X) ( ! ( (X)&1 ) )
-
-
-/* --- Common Blocks --- */
-
-#undef F77_BLANK_COMMON
-#define F77_BLANK_COMMON $BLANK
-
-
-/* --- Declare Variables --- */
-
-#undef DECLARE_CHARACTER
-#define DECLARE_CHARACTER(X,L) \
- F77_CHARACTER_TYPE X[L]; const int X/**/_length = L; \
- F77_CHARACTER_ARG_TYPE X/**/_descr = \
- { L, DSC$K_DTYPE_T, DSC$K_CLASS_S, X }; \
- F77_CHARACTER_ARG_TYPE *X/**/_arg = &X/**/_descr
-#undef DECLARE_CHARACTER_ARRAY
-#define DECLARE_CHARACTER_ARRAY(X,L,D) \
- F77_CHARACTER_TYPE X[D][L]; const int X/**/_length = L; \
- F77_CHARACTER_ARRAY_ARG_TYPE X/**/_descr = \
- { L, DSC$K_DTYPE_T, DSC$K_CLASS_S, X }; \
- F77_CHARACTER_ARRAY_ARG_TYPE *X/**/_arg = &X/**/_descr
-
-
-/* --- The dynamic allocation of character arguments --- */
-#undef DECLARE_CHARACTER_DYN
-#define DECLARE_CHARACTER_DYN(X) int X/**/_length;\
- F77_CHARACTER_ARG_TYPE *X/**/_arg;\
- F77_CHARACTER_TYPE *X
-#undef DECLARE_CHARACTER_ARRAY_DYN
-#define DECLARE_CHARACTER_ARRAY_DYN(X) int X/**/_length;\
- F77_CHARACTER_ARRAY_ARG_TYPE *X/**/_arg;\
- F77_CHARACTER_TYPE *X
-#undef F77_CREATE_CHARACTER
-#define F77_CREATE_CHARACTER(X,L) X/**/_arg = cnfCref(L);\
- X = X/**/_arg->dsc$a_pointer; \
- X/**/_length = X/**/_arg->dsc$w_length
-#undef F77_CREATE_CHARACTER_ARRAY
-#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
- {int f77dims[1];f77dims[0]=N;X/**/_arg=cnfCrefa(L,1,f77dims);X/**/_length=L;}
-#define F77_CREATE_CHARACTER_ARRAY_M(X,L,N,D) X/**/_arg = cnfCrefa(L,N,D);\
- X = X/**/_arg->dsc$a_pointer; \
- X/**/_length = X/**/_arg->dsc$w_length
-#undef F77_FREE_CHARACTER
-#define F77_FREE_CHARACTER(X) cnfFreef( X/**/_arg )
-
-/* --- Pass arguments to a FORTRAN routine --- */
-
-#undef CHARACTER_ARG
-#define CHARACTER_ARG(X) X/**/_arg
-#undef CHARACTER_ARRAY_ARG
-#define CHARACTER_ARRAY_ARG(X) X/**/_arg
-#undef TRAIL_ARG
-#define TRAIL_ARG(X)
-
-#endif /* VMS */
-
-/* ----------------------------------------------------------------------- */
-
-/*--------------------------
-| DECstation Ultrix (cc) |
-| DECstation Ultrix (c89) |
-| DECstation OSF/1 |
-| Alpha OSF/1 |
- --------------------------*/
-
-/* Do this complicated set of definitions as a single #if cannot be */
-/* continued across multiple lines. */
-
-#if defined(mips) && defined(ultrix)
-#define _dec_unix 1
-#endif
-#if defined(__mips) && defined(__ultrix)
-#define _dec_unix 1
-#endif
-#if defined(__mips__) && defined(__osf__)
-#define _dec_unix 1
-#endif
-#if defined(__alpha) && defined(__osf__)
-#define _dec_unix 1
-#endif
-
-#if _dec_unix
-
-/* The macros for Ultrix are the same as the standard ones except for ones */
-/* dealing with logical values. The ANSI definitions work with the c89 */
-/* compiler, and the non ANSI definitions work with the cc compiler. */
-/* The same applies to DEC OSF/1, except that its cc compiler is ANSI */
-/* compliant. */
-
-
-/* --- Logical Values --- */
-
-/* Redefine macros that evaluate to a C logical value, given a FORTRAN */
-/* logical value. These definitions are only valid when used with the DEC */
-/* FORTRAN for RISC compiler. If you are using the earlier FORTRAN for */
-/* RISC compiler from MIPS, then these macros should be deleted. */
-
-#undef F77_TRUE
-#define F77_TRUE -1
-#undef F77_ISTRUE
-#define F77_ISTRUE(X) ( (X)&1 )
-#undef F77_ISFALSE
-#define F77_ISFALSE(X) ( ! ( (X)&1 ) )
-
-
-#endif /* DEC Unix */
-
-/*
-*+
-* Name:
-* cnf.h
-
-* Purpose:
-* Function prototypes for cnf routines
-
-* Language:
-* ANSI C
-
-* Type of Module:
-* C include file
-
-* Description:
-* These are the prototype definitions for the functions in the CNF
-* library. They are used used in mixing C and FORTRAN programs.
-
-* Copyright:
-* Copyright (C) 1991 Science & Engineering Research Council
-
-* Authors:
-* PMA: Peter Allan (Starlink, RAL)
-* AJC: Alan Chipperfield (Starlink, RAL)
-* {enter_new_authors_here}
-
-* History:
-* 23-MAY-1991 (PMA):
-* Original version.
-* 12-JAN-1996 (AJC):
-* Add cnf_cref and cnf_freef
-* 14-JUN-1996 (AJC):
-* Add cnf_crefa, imprta, exprta
-* crela, impla, expla
-* 18-JUL-1996 (AJC):
-* Add impch and expch
-* 17-MAR-1998 (AJC):
-* Add imprtap and exprtap
-* {enter_changes_here}
-
-* Bugs:
-* {note_any_bugs_here}
-
-*-
-------------------------------------------------------------------------------
-*/
-void cnfInitRTL( int, char** );
-void *cnfCalloc( size_t, size_t );
-void cnfCopyf( const char *source_f, int source_len, char *dest_f,
- int dest_len );
-void *cnfCptr( F77_POINTER_TYPE );
-char *cnfCreat( int length );
-F77_CHARACTER_ARG_TYPE *cnfCref( int length );
-F77_CHARACTER_ARG_TYPE *cnfCrefa( int length, int ndims, const int *dims );
-char *cnfCreib( const char *source_f, int source_len );
-char *cnfCreim( const char *source_f, int source_len );
-F77_LOGICAL_TYPE *cnfCrela( int ndims, const int *dims );
-void cnfExpch( const char *source_c, char *dest_f, int nchars );
-void cnfExpla( const int *source_c, F77_LOGICAL_TYPE *dest_f, int ndims,
- const int *dims );
-void cnfExpn( const char *source_c, int max, char *dest_f, int dest_len );
-void cnfExprt( const char *source_c, char *dest_f, int dest_len );
-void cnfExprta( const char *source_c, int source_len, char *dest_f,
- int dest_len, int ndims, const int *dims );
-void cnfExprtap( char *const *source_c, char *dest_f, int dest_len,
- int ndims, const int *dims );
-F77_POINTER_TYPE cnfFptr( void *cpointer );
-void cnfFree( void * );
-void cnfFreef( F77_CHARACTER_ARG_TYPE *temp );
-void cnfImpb( const char *source_f, int source_len, char *dest_c );
-void cnfImpbn( const char *source_f, int source_len, int max, char *dest_c );
-void cnfImpch( const char *source_f, int nchars, char *dest_c );
-void cnfImpla( const F77_LOGICAL_TYPE *source_f, int *dest_c,
- int ndims, const int *dims );
-void cnfImpn( const char *source_f, int source_len, int max, char *dest_c );
-void cnfImprt( const char *source_f, int source_len, char *dest_c );
-void cnfImprta( const char *source_f, int source_len, char *dest_c,
- int dest_len, int ndims, const int *dims );
-void cnfImprtap( const char *source_f, int source_len, char *const *dest_c,
- int dest_len, int ndims, const int *dims );
-int cnfLenc( const char *source_c );
-int cnfLenf( const char *source_f, int source_len );
-void *cnfMalloc( size_t );
-void *cnfRealloc( void *, size_t );
-int cnfRegp( void * );
-void cnfUregp( void * );
-void cnfLock( void );
-void cnfUnlock( void );
-#endif
-
-#ifndef CNF_OLD_DEFINED
-#define CNF_OLD_DEFINED
-/* Define old names to be new names */
-#define cnf_calloc cnfCalloc
-#define cnf_copyf cnfCopyf
-#define cnf_cptr cnfCptr
-#define cnf_creat cnfCreat
-#define cnf_cref cnfCref
-#define cnf_crefa cnfCrefa
-#define cnf_creib cnfCreib
-#define cnf_creim cnfCreim
-#define cnf_crela cnfCrela
-#define cnf_expch cnfExpch
-#define cnf_expla cnfExpla
-#define cnf_expn cnfExpn
-#define cnf_exprt cnfExprt
-#define cnf_exprta cnfExprta
-#define cnf_exprtap cnfExprtap
-#define cnf_fptr cnfFptr
-#define cnf_free cnfFree
-#define cnf_freef cnfFreef
-#define cnf_impb cnfImpb
-#define cnf_impbn cnfImpbn
-#define cnf_impch cnfImpch
-#define cnf_impla cnfImpla
-#define cnf_impn cnfImpn
-#define cnf_imprt cnfImprt
-#define cnf_imprta cnfImprta
-#define cnf_imprtap cnfImprtap
-#define cnf_lenc cnfLenc
-#define cnf_lenf cnfLenf
-#define cnf_malloc cnfMalloc
-#define cnf_regp cnfRegp
-#define cnf_uregp cnfUregp
-
-#endif /* CNF_MACROS */