File: wcs_bindc.f90

package info (click to toggle)
wcslib 8.4%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,840 kB
  • sloc: ansic: 35,156; lex: 9,453; fortran: 6,826; sh: 3,371; f90: 815; sed: 497; pascal: 204; makefile: 18
file content (134 lines) | stat: -rw-r--r-- 4,411 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
!=============================================================================
! WCSLIB 8.4 - an implementation of the FITS WCS standard.
! Copyright (C) 1995-2024, Mark Calabretta
!
! This file is part of WCSLIB.
!
! WCSLIB 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.
!
! WCSLIB 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 Public License
! along with WCSLIB.  If not, see http://www.gnu.org/licenses.
!
! Author: Mark Calabretta, Australia Telescope National Facility, CSIRO.
! http://www.atnf.csiro.au/people/Mark.Calabretta
! $Id: wcs_bindc.f90,v 8.4 2024/10/28 13:56:17 mcalabre Exp $
!=============================================================================

INTEGER FUNCTION WCSPTC (WCS, WHAT, VALUE, I, J)
  INTEGER :: WCS(*), WHAT
  CHARACTER :: VALUE(*)
  INTEGER :: I, J

  INTERFACE
    INTEGER(C_INT) FUNCTION WCSPTC_C (WCS, WHAT, VALUE, I, J) BIND (C)
      USE, INTRINSIC :: ISO_C_BINDING
      INTEGER(C_INT) :: WCS(*), WHAT
      CHARACTER(KIND=C_CHAR, LEN=1) :: VALUE(*)
      INTEGER(C_INT) :: I, J
    END FUNCTION WCSPTC_C
  END INTERFACE

  WCSPTC = WCSPTC_C (WCS, WHAT, VALUE, I, J)
END FUNCTION WCSPTC

!-----------------------------------------------------------------------------

INTEGER FUNCTION WCSGTC (WCS, WHAT, VALUE)
  INTEGER :: WCS(*), WHAT
  CHARACTER :: VALUE(*)

  INTERFACE
    INTEGER(C_INT) FUNCTION WCSGTC_C (WCS, WHAT, VALUE) BIND (C)
      USE, INTRINSIC :: ISO_C_BINDING
      INTEGER(C_INT) :: WCS(*), WHAT
      CHARACTER(KIND=C_CHAR, LEN=1) :: VALUE(*)
    END FUNCTION WCSGTC_C
  END INTERFACE

  WCSGTC = WCSGTC_C (WCS, WHAT, VALUE)
END FUNCTION WCSGTC

!-----------------------------------------------------------------------------

INTEGER FUNCTION WCSPERR (WCS, PREFIX)
  INTEGER :: WCS(*)
  CHARACTER :: PREFIX(*)

  INTERFACE
    INTEGER(C_INT) FUNCTION WCSPERR_C (WCS, PREFIX) BIND (C)
      USE, INTRINSIC :: ISO_C_BINDING
      INTEGER(C_INT) :: WCS(*)
      CHARACTER(KIND=C_CHAR, LEN=1) :: PREFIX(72)
    END FUNCTION WCSPERR_C
  END INTERFACE

  WCSPERR = WCSPERR_C (WCS, PREFIX)
END FUNCTION WCSPERR

!-----------------------------------------------------------------------------

INTEGER FUNCTION WCSCCS (WCS, LNG2P1, LAT2P1, LNG1P2, CLNG, CLAT, RADESYS, &
                         EQUINOX, ALT)
  INTEGER :: WCS(*)
  DOUBLE PRECISION :: LNG2P1, LAT2P1, LNG1P2
  CHARACTER :: CLNG(4), CLAT(4), RADESYS(71)
  DOUBLE PRECISION :: EQUINOX
  CHARACTER :: ALT(1)

  INTERFACE
    INTEGER(C_INT) FUNCTION WCSCCS_C (WCS, LNG2P1, LAT2P1, LNG1P2, CLNG, &
                                      CLAT, RADESYS, EQUINOX, ALT) BIND (C)
      USE, INTRINSIC :: ISO_C_BINDING
      INTEGER(C_INT) :: WCS(*)
      REAL(C_DOUBLE) :: LNG2P1, LAT2P1, LNG1P2
      CHARACTER(KIND=C_CHAR, LEN=1) :: CLNG(4), CLAT(4), RADESYS(71)
      REAL(C_DOUBLE) :: EQUINOX
      CHARACTER(KIND=C_CHAR, LEN=1) :: ALT(1)
    END FUNCTION WCSCCS_C
  END INTERFACE

  WCSCCS = WCSCCS_C (WCS, LNG2P1, LAT2P1, LNG1P2, CLNG, CLAT, RADESYS, &
                     EQUINOX, ALT)
END FUNCTION WCSCCS

!-----------------------------------------------------------------------------

INTEGER FUNCTION WCSSPTR (WCS, I, CTYPE)
  INTEGER :: WCS(*), I
  CHARACTER :: CTYPE(8)

  INTERFACE
    INTEGER(C_INT) FUNCTION WCSSPTR_C (WCS, I, CTYPE) BIND (C)
      USE, INTRINSIC :: ISO_C_BINDING
      INTEGER(C_INT) :: WCS(*), I
      CHARACTER(KIND=C_CHAR, LEN=1) :: CTYPE(8)
    END FUNCTION WCSSPTR_C
  END INTERFACE

  WCSSPTR = WCSSPTR_C (WCS, I, CTYPE)
END FUNCTION WCSSPTR

!-----------------------------------------------------------------------------

SUBROUTINE WCSLIB_VERSION (WCSVER, NCHR)
  CHARACTER :: WCSVER(*)
  INTEGER :: NCHR

  INTERFACE
    SUBROUTINE WCSLIB_VERSION_C (WCSVER, NCHR) BIND (C)
      USE, INTRINSIC :: ISO_C_BINDING
      CHARACTER(KIND=C_CHAR, LEN=1) :: WCSVER(*)
      INTEGER(C_INT) :: NCHR
    END SUBROUTINE WCSLIB_VERSION_C
  END INTERFACE

  CALL WCSLIB_VERSION_C (WCSVER, NCHR)
END SUBROUTINE WCSLIB_VERSION