/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 */
|