This file is indexed.

/usr/include/wcslib-5.18/getwcstab.h is in wcslib-dev 5.18-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
/*============================================================================

  WCSLIB 5.18 - an implementation of the FITS WCS standard.
  Copyright (C) 1995-2018, 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.

  Direct correspondence concerning WCSLIB to mark@calabretta.id.au

  Author: Mark Calabretta, Australia Telescope National Facility, CSIRO.
  http://www.atnf.csiro.au/people/Mark.Calabretta
  $Id: getwcstab.h,v 5.18 2018/01/10 08:32:14 mcalabre Exp $
*=============================================================================
*
* WCSLIB 5.18 - C routines that implement the FITS World Coordinate System
* (WCS) standard.  Refer to the README file provided with WCSLIB for an
* overview of the library.
*
* Summary of the getwcstab routines
* ---------------------------------
* fits_read_wcstab(), an implementation of a FITS table reading routine for
* 'TAB' coordinates, is provided for CFITSIO programmers.  It has been
* incorporated into CFITSIO as of v3.006 with the definitions in this file,
* getwcstab.h, moved into fitsio.h.
*
* fits_read_wcstab() is not included in the WCSLIB object library but the
* source code is presented here as it may be useful for programmers using an
* older version of CFITSIO than 3.006, or as a programming template for
* non-CFITSIO programmers.
*
*
* fits_read_wcstab() - FITS 'TAB' table reading routine
* ----------------------------------------------------
* fits_read_wcstab() extracts arrays from a binary table required in
* constructing 'TAB' coordinates.
*
* Given:
*   fptr      fitsfile *
*                       Pointer to the file handle returned, for example, by
*                       the fits_open_file() routine in CFITSIO.
*
*   nwtb      int       Number of arrays to be read from the binary table(s).
*
* Given and returned:
*   wtb       wtbarr *  Address of the first element of an array of wtbarr
*                       typedefs.  This wtbarr typedef is defined to match the
*                       wtbarr struct defined in WCSLIB.  An array of such
*                       structs returned by the WCSLIB function wcstab() as
*                       discussed in the notes below.
*
* Returned:
*   status    int *     CFITSIO status value.
*
* Function return value:
*             int       CFITSIO status value.
*
* Notes:
*   In order to maintain WCSLIB and CFITSIO as independent libraries it is not
*   permissible for any CFITSIO library code to include WCSLIB header files,
*   or vice versa.  However, the CFITSIO function fits_read_wcstab() accepts
*   an array of wtbarr structs defined in wcs.h within WCSLIB.
*
*   The problem therefore is to define the wtbarr struct within fitsio.h
*   without including wcs.h, especially noting that wcs.h will often (but not
*   always) be included together with fitsio.h in an applications program that
*   uses fits_read_wcstab().
*
*   The solution adopted is for WCSLIB to define "struct wtbarr" while
*   fitsio.h defines "typedef wtbarr" as an untagged struct with identical
*   members.  This allows both wcs.h and fitsio.h to define a wtbarr data type
*   without conflict by virtue of the fact that structure tags and typedef
*   names share different name spaces in C; Appendix A, Sect. A11.1 (p227) of
*   the K&R ANSI edition states that:
*
*     Identifiers fall into several name spaces that do not interfere with one
*     another; the same identifier may be used for different purposes, even in
*     the same scope, if the uses are in different name spaces.  These classes
*     are: objects, functions, typedef names, and enum constants; labels; tags
*     of structures, unions, and enumerations; and members of each structure
*     or union individually.
*
*   Therefore, declarations within WCSLIB look like
*
=     struct wtbarr *w;
*
*   while within CFITSIO they are simply
*
=     wtbarr *w;
*
*   As suggested by the commonality of the names, these are really the same
*   aggregate data type.  However, in passing a (struct wtbarr *) to
*   fits_read_wcstab() a cast to (wtbarr *) is formally required.
*
*   When using WCSLIB and CFITSIO together in C++ the situation is complicated
*   by the fact that typedefs and structs share the same namespace; C++
*   Annotated Reference Manual, Sect. 7.1.3 (p105).  In that case the wtbarr
*   struct in wcs.h is renamed by preprocessor macro substitution to wtbarr_s
*   to distinguish it from the typedef defined in fitsio.h.  However, the
*   scope of this macro substitution is limited to wcs.h itself and CFITSIO
*   programmer code, whether in C++ or C, should always use the wtbarr
*   typedef.
*
*
* wtbarr typedef
* --------------
* The wtbarr typedef is defined as a struct containing the following members:
*
*   int i
*     Image axis number.
*
*   int m
*     Array axis number for index vectors.
*
*   int kind
*     Character identifying the array type:
*       - c: coordinate array,
*       - i: index vector.
*
*   char extnam[72]
*     EXTNAME identifying the binary table extension.
*
*   int extver
*     EXTVER identifying the binary table extension.
*
*   int extlev
*     EXTLEV identifying the binary table extension.
*
*   char ttype[72]
*     TTYPEn identifying the column of the binary table that contains the
*     array.
*
*   long row
*     Table row number.
*
*   int ndim
*     Expected dimensionality of the array.
*
*   int *dimlen
*     Address of the first element of an array of int of length ndim into
*     which the array axis lengths are to be written.
*
*   double **arrayp
*     Pointer to an array of double which is to be allocated by the user
*     and into which the array is to be written.
*
*===========================================================================*/

#ifndef WCSLIB_GETWCSTAB
#define WCSLIB_GETWCSTAB

#ifdef __cplusplus
extern "C" {
#endif

#include <fitsio.h>

typedef struct {
  int  i;			/* Image axis number.                       */
  int  m;			/* Array axis number for index vectors.     */
  int  kind;			/* Array type, 'c' (coord) or 'i' (index).  */
  char extnam[72];		/* EXTNAME of binary table extension.       */
  int  extver;			/* EXTVER  of binary table extension.       */
  int  extlev;			/* EXTLEV  of binary table extension.       */
  char ttype[72];		/* TTYPEn of column containing the array.   */
  long row;			/* Table row number.                        */
  int  ndim;			/* Expected array dimensionality.           */
  int  *dimlen;			/* Where to write the array axis lengths.   */
  double **arrayp;		/* Where to write the address of the array  */
				/* allocated to store the array.            */
} wtbarr;


int fits_read_wcstab(fitsfile *fptr, int nwtb, wtbarr *wtb, int *status);


#ifdef __cplusplus
}
#endif

#endif /* WCSLIB_GETWCSTAB */