summaryrefslogtreecommitdiffstats
path: root/ast/fintramap.c
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2019-05-10 19:01:49 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2019-05-10 19:01:49 (GMT)
commitbeb90b7d3f526440250bba67e5ab07bb7eb7bbc3 (patch)
tree8d0d428ac62291f834ea8927bfa82c115ff1689d /ast/fintramap.c
parenta213dadabce2b2e02eca8376765fa425f01792f5 (diff)
downloadblt-beb90b7d3f526440250bba67e5ab07bb7eb7bbc3.zip
blt-beb90b7d3f526440250bba67e5ab07bb7eb7bbc3.tar.gz
blt-beb90b7d3f526440250bba67e5ab07bb7eb7bbc3.tar.bz2
upgrade ast 8.7.1
Diffstat (limited to 'ast/fintramap.c')
-rw-r--r--ast/fintramap.c332
1 files changed, 0 insertions, 332 deletions
diff --git a/ast/fintramap.c b/ast/fintramap.c
deleted file mode 100644
index cdf3e4e..0000000
--- a/ast/fintramap.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
-*+
-* Name:
-* fintramap.c
-
-* Purpose:
-* Define a FORTRAN 77 interface to the AST IntraMap class.
-
-* Type of Module:
-* C source file.
-
-* Description:
-* This file defines FORTRAN 77-callable C functions which provide
-* a public FORTRAN 77 interface to the IntraMap class.
-
-* Routines Defined:
-* AST_INTRAMAP
-* AST_INTRAREG
-* AST_ISAINTRAMAP
-
-* Copyright:
-* Copyright (C) 1997-2006 Council for the Central Laboratory of the
-* Research Councils
-
-* Licence:
-* This program is free software: you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation, either
-* version 3 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 Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General
-* License along with this program. If not, see
-* <http://www.gnu.org/licenses/>.
-
-* Authors:
-* RFWS: R.F. Warren-Smith (Starlink)
-
-* History:
-* 18-MAR-1998 (RFWS):
-* Original version.
-* 15-SEP-1999 (RFWS):
-* Added a THIS pointer to the external transformation function
-* used by an IntraMap.
-*/
-
-/* Define the astFORTRAN77 macro which prevents error messages from
- AST C functions from reporting the file and line number where the
- error occurred (since these would refer to this file, they would
- not be useful). */
-#define astFORTRAN77
-
-/* Header files. */
-/* ============= */
-#include "f77.h" /* FORTRAN <-> C interface macros (SUN/209) */
-#include "c2f77.h" /* F77 <-> C support functions/macros */
-#include "error.h" /* Error reporting facilities */
-#include "memory.h" /* Memory handling facilities */
-#include "intramap.h" /* C interface to the IntraMap class */
-
-#include <stddef.h>
-#include <string.h>
-
-/* Prototypes for private functions. */
-/* ================================= */
-static void TranWrap( void (*)( AstMapping *, int, int, const double *[], int, int, double *[] ), AstMapping *, int, int, const double *[], int, int, double *[], int * );
-
-/* Transformation function interface. */
-/* ================================== */
-/* This is concerned with allowing FORTRAN implementations of
- transformation functions to be passed to the IntraMap class and
- invoked when necessary by C code in the main class
- implementation. All FORTRAN-specific aspects of this interface are
- encapsulated here. */
-static void TranWrap( void (* tran)( AstMapping *, int, int, const double *[],
- int, int, double *[] ),
- AstMapping *this, int npoint, int ncoord_in,
- const double *ptr_in[], int forward, int ncoord_out,
- double *ptr_out[], int *status ) {
-/*
-* Name:
-* TranWrap
-
-* Purpose:
-* Wrapper function to invoke a FORTRAN transformation function.
-
-* Type:
-* Private function.
-
-* Synopsis:
-* void TranWrap( void (* tran)( AstMapping *, int, int, const double *[],
-* int, int, double *[] ),
-* AstMapping *this, int npoint, int ncoord_in,
-* const double *ptr_in[], int forward, int ncoord_out,
-* double *ptr_out[], int *status )
-
-* Description:
-* This function invokes a FORTRAN implementation of a
-* transformation function (which resembles AST_TRANN from the
-* Mapping class FORTRAN interface) in order to make it callable by
-* C code which would prefer to call a C function that resembles
-* astTranP (from the Mapping class C interface).
-
-* Parameters:
-* tran
-* Pointer to the FORTRAN transformation function to be invoked.
-* This should result from a cast applied to a pointer to a
-* function that resembles AST_TRANN (but with the first
-* argument omitted).
-* this
-* An external Mapping ID associated with the internal (true C) pointer
-* for the IntraMap whose transformation is being evaluated.
-* npoint
-* The number of points to be transformed.
-* ncoord_in
-* The number of coordinates being supplied for each input point
-* (i.e. the number of dimensions of the space in which the
-* input points reside).
-* ptr_in
-* An array of pointers to double, with "ncoord_in"
-* elements. Element "ptr_in[coord]" should point at the first
-* element of an array of double (with "npoint" elements) which
-* contain the values of coordinate number "coord" for each
-* input (untransformed) point. The value of coordinate number
-* "coord" for input point number "point" is therefore given by
-* "ptr_in[coord][point]".
-* forward
-* A non-zero value indicates that the forward coordinate
-* transformation is to be applied, while a zero value indicates
-* that the inverse transformation should be used.
-* ncoord_out
-* The number of coordinates being generated for each output
-* point (i.e. the number of dimensions of the space in which
-* the output points reside). This need not be the same as
-* "ncoord_in".
-* ptr_out
-* An array of pointers to double, with "ncoord_out"
-* elements. Element "ptr_out[coord]" should point at the first
-* element of an array of double (with "npoint" elements) into
-* which the values of coordinate number "coord" for each output
-* (transformed) point will be written. The value of coordinate
-* number "coord" for output point number "point" will therefore
-* be found in "ptr_out[coord][point]".
-* status
-* Pointer to the inherited status value.
-*/
-
-/* Local Variables; */
- DECLARE_INTEGER(INDIM); /* First dimension size of input array */
- DECLARE_INTEGER(NCOORD_IN); /* Number of input coordinates */
- DECLARE_INTEGER(NCOORD_OUT); /* Number of output coordinates */
- DECLARE_INTEGER(NPOINT); /* Number of points */
- DECLARE_INTEGER(OUTDIM); /* First dimension size of output array */
- DECLARE_INTEGER(STATUS); /* FORTRAN error status variable */
- DECLARE_INTEGER(THIS); /* External ID for the IntraMap */
- DECLARE_LOGICAL(FORWARD); /* Use forward transformation? */
- F77_DOUBLE_TYPE *IN; /* Input coordinate array for FORTRAN */
- F77_DOUBLE_TYPE *OUT; /* Output coordinate array for FORTRAN */
- int coord; /* Loop counter for coordinates */
- int i; /* Index into FORTRAN arrays */
-
-/* Check the global error status. */
- if ( !astOK ) return;
-
-/* Assign input values to the arguments for the FORTRAN transformation
- function. */
- THIS = astP2I( this );
- NPOINT = npoint;
- NCOORD_IN = ncoord_in;
- INDIM = npoint;
- FORWARD = forward ? F77_TRUE : F77_FALSE;
- NCOORD_OUT = ncoord_out;
- OUTDIM = npoint;
-
-/* Since the input/output coordinate values may be stored in separate
- arrays, we must move them temporarily into new 2-dimensional
- arrays, as required by the FORTRAN transformation function
- interface. Allocate memory for these arrays. */
- IN = astMalloc( (size_t) ( npoint * ncoord_in ) *
- sizeof( F77_DOUBLE_TYPE ) );
- OUT = astMalloc( (size_t) ( npoint * ncoord_out ) *
- sizeof( F77_DOUBLE_TYPE ) );
-
-/* If OK, fill the input array with coordinate values. Use "memcpy" to
- avoid numerical errors if the data contain junk - this allows the
- transformation function to produce the appropriate error instead of
- it happening here. */
- if ( astOK ) {
- i = 0;
- for ( coord = 0; coord < ncoord_in; coord++ ) {
- (void) memcpy( IN + i, ptr_in[ coord ],
- (size_t) npoint * sizeof( F77_DOUBLE_TYPE ) );
- i += npoint;
- }
- }
-
-/* Cast the transformation function pointer to a pointer to the
- FORTRAN subroutine and then invoke it. Transfer the AST error
- status to and from the subroutine's error status argument. */
- if ( astOK ) {
- STATUS = astStatus;
- ( *(void (*)()) tran )( INTEGER_ARG(&THIS),
- INTEGER_ARG(&NPOINT),
- INTEGER_ARG(&NCOORD_IN),
- INTEGER_ARG(&INDIM),
- DOUBLE_ARRAY_ARG(IN),
- LOGICAL_ARG(&FORWARD),
- INTEGER_ARG(&NCOORD_OUT),
- INTEGER_ARG(&OUTDIM),
- DOUBLE_ARRAY_ARG(OUT),
- INTEGER_ARG(&STATUS) );
- astSetStatus( STATUS );
- }
-
-
-/* If OK, transfer the transformed coordinate values to the output
- arrays. */
- if ( astOK ) {
- i = 0;
- for ( coord = 0; coord < ncoord_out; coord++ ) {
- (void) memcpy( ptr_out[ coord ], OUT + i,
- (size_t) npoint * sizeof( F77_DOUBLE_TYPE ) );
- i += npoint;
- }
- }
-
-/* Free the temporary arrays. */
- astFree( IN );
- astFree( OUT );
-}
-
-/* FORTRAN interface functions. */
-/* ============================ */
-/* These functions implement the remainder of the FORTRAN interface. */
-F77_SUBROUTINE(ast_intrareg)( CHARACTER(NAME),
- INTEGER(NIN),
- INTEGER(NOUT),
- void (* TRAN)(),
- INTEGER(FLAGS),
- CHARACTER(PURPOSE),
- CHARACTER(AUTHOR),
- CHARACTER(CONTACT),
- INTEGER(STATUS)
- TRAIL(NAME)
- TRAIL(PURPOSE)
- TRAIL(AUTHOR)
- TRAIL(CONTACT) ) {
- GENPTR_CHARACTER(NAME)
- GENPTR_INTEGER(NIN)
- GENPTR_INTEGER(NOUT)
- GENPTR_INTEGER(FLAGS)
- GENPTR_CHARACTER(PURPOSE)
- GENPTR_CHARACTER(AUTHOR)
- GENPTR_CHARACTER(CONTACT)
- char *name;
- void (* tran)( AstMapping *, int, int, const double *[], int, int,
- double *[] );
- char *purpose;
- char *author;
- char *contact;
-
- astAt( "AST_INTRAREG", NULL, 0 );
- astWatchSTATUS(
- name = astString( NAME, NAME_length );
- tran =
- (void (*)( AstMapping *, int, int, const double *[], int, int,
- double *[] )) TRAN;
- purpose = astString( PURPOSE, PURPOSE_length );
- author = astString( AUTHOR, AUTHOR_length );
- contact = astString( CONTACT, CONTACT_length );
- astIntraRegFor( name, *NIN, *NOUT, tran, TranWrap, *FLAGS, purpose,
- author, contact );
- astFree( name );
- astFree( purpose );
- astFree( author );
- astFree( contact );
- )
-}
-
-F77_INTEGER_FUNCTION(ast_intramap)( CHARACTER(NAME),
- INTEGER(NIN),
- INTEGER(NOUT),
- CHARACTER(OPTIONS),
- INTEGER(STATUS)
- TRAIL(NAME)
- TRAIL(OPTIONS) ) {
- GENPTR_CHARACTER(NAME)
- GENPTR_INTEGER(NIN)
- GENPTR_INTEGER(NOUT)
- GENPTR_CHARACTER(OPTIONS)
- F77_INTEGER_TYPE(RESULT);
- char *name;
- char *options;
- int i;
-
- astAt( "AST_INTRAMAP", NULL, 0 );
- astWatchSTATUS(
- name = astString( NAME, NAME_length );
- options = astString( OPTIONS, OPTIONS_length );
-
-/* Truncate the options string to exlucde any trailing spaces. */
- astChrTrunc( options );
-
-/* Change ',' to '\n' (see AST_SET in fobject.c for why). */
- if ( astOK ) {
- for ( i = 0; options[ i ]; i++ ) {
- if ( options[ i ] == ',' ) options[ i ] = '\n';
- }
- }
- RESULT = astP2I( astIntraMap( name, *NIN, *NOUT, "%s", options ) );
- astFree( name );
- astFree( options );
- )
- return RESULT;
-}
-
-F77_LOGICAL_FUNCTION(ast_isaintramap)( INTEGER(THIS),
- INTEGER(STATUS) ) {
- GENPTR_INTEGER(THIS)
- F77_LOGICAL_TYPE(RESULT);
-
- astAt( "AST_ISAINTRAMAP", NULL, 0 );
- astWatchSTATUS(
- RESULT = astIsAIntraMap( astI2P( *THIS ) ) ? F77_TRUE : F77_FALSE;
- )
- return RESULT;
-}