ConfigFile.h   ConfigFile.h 
skipping to change at line 43 skipping to change at line 43
* \brief Module for general parsing of simple ASCII-based config-files. * \brief Module for general parsing of simple ASCII-based config-files.
\heading{Description} \heading{Description}
This module provides routines for reading formatted This module provides routines for reading formatted
config-files containing definitions of the form <tt>variable = value</tt>. config-files containing definitions of the form <tt>variable = value</tt>.
The general syntax is somewhat similar to the one provided by the The general syntax is somewhat similar to the one provided by the
perl-module <tt>ConfigParser</tt> (cf. perl-module <tt>ConfigParser</tt> (cf.
http://www.python.org/doc/current/lib/module-ConfigParser.html) http://www.python.org/doc/current/lib/module-ConfigParser.html)
Comments are allowed using either '<tt>\#</tt>', '<tt>;</tt>' or <tt>\%</tt >. Comments are allowed using either '<tt>\#</tt>' or <tt>\%</tt>.
You can also use line-continuation using a '<tt>\\</tt>' at the end of the line. You can also use line-continuation using a '<tt>\\</tt>' at the end of the line.
Also note that comment-signs '<tt>\#;\%</tt>' within double-quotes &quot;.. Also note that comment-signs '<tt>\#\%</tt>' within double-quotes &quot;...
.&quot; &quot;
are <em>not</em> treated as comment-characters. The general syntax is best are <em>not</em> treated as comment-characters.
illustrated Semi-colons <tt>;</tt> are ignored, but can be used to separate several ass
ignments on the same line.
The general syntax is best illustrated
using a simple example: using a simple example:
\code \code
# comment line # comment line
var1 = 1.0 ; you can also comment using semi-colons var1 = 1.0; var2 = 3.1; ## several assignments on a line, separated by '; '
somevar = some text.\ somevar = some text.\
You can also use\ You can also use\
line-continuation line-continuation
var3 = 4 # whatever that means var3 = 4 # whatever that means
note = "this is also possible, and # here does nothing" note = "this is also possible, and # here does nothing"
a_switch = true #possible values: 0,1,true,false,yes,no, case insensitive a_switch = true #possible values: 0,1,true,false,yes,no, case insensitive
... ...
\endcode \endcode
Note that TABS generally get replaced by a single space, which can be Note that TABS generally get replaced by a single space, which can be
skipping to change at line 117 skipping to change at line 119
typedef enum { typedef enum {
CONFIGFILE_IGNORE = 0, /**< ignore missing config-variable or unpar sed config-entries */ CONFIGFILE_IGNORE = 0, /**< ignore missing config-variable or unpar sed config-entries */
CONFIGFILE_WARN, /**< issue a warning but don't report an err or. */ CONFIGFILE_WARN, /**< issue a warning but don't report an err or. */
CONFIGFILE_ERROR, /**< issue an error-message and report a LAL -error */ CONFIGFILE_ERROR, /**< issue an error-message and report a LAL -error */
CONFIGFILE_LAST CONFIGFILE_LAST
} ConfigStrictness; } ConfigStrictness;
/** This structure defines a config-variable to be read in using the /** This structure defines a config-variable to be read in using the
* general-purpose reading function LALReadConfigVariable(). */ * general-purpose reading function LALReadConfigVariable(). */
#ifdef SWIG /* SWIG interface directives */ #ifdef SWIG /* SWIG interface directives */
%warnfilter(SWIGWARN_TYPEMAP_CHARLEAK) tagLALConfigVar::secName; SWIGLAL(IMMUTABLE_MEMBERS(tagLALConfigVar, secName, varName, fmt));
%warnfilter(SWIGWARN_TYPEMAP_CHARLEAK) tagLALConfigVar::varName;
%warnfilter(SWIGWARN_TYPEMAP_CHARLEAK) tagLALConfigVar::fmt;
#endif /* SWIG */ #endif /* SWIG */
typedef struct tagLALConfigVar { typedef struct tagLALConfigVar {
const CHAR *secName; /**< Section name within which to find varN ame. May be NULL */ const CHAR *secName; /**< Section name within which to find varN ame. May be NULL */
const CHAR *varName; /**< Variable-name to be read in the config- file */ const CHAR *varName; /**< Variable-name to be read in the config- file */
const CHAR *fmt; /**< Format string for reading (<tt>sscanf() </tt>-style) */ const CHAR *fmt; /**< Format string for reading (<tt>sscanf() </tt>-style) */
ConfigStrictness strictness; /**< what to do if variable not found: ignor e, warn, error */ ConfigStrictness strictness; /**< what to do if variable not found: ignor e, warn, error */
} LALConfigVar; } LALConfigVar;
/** This structure is returned by LALParseDataFile() and holds the contents of an /** This structure is returned by LALParseDataFile() and holds the contents of an
* ASCII data-file in a pre-parsed form, namely stripped from all comments ('\#', ';'), * ASCII data-file in a pre-parsed form, namely stripped from all comments ('\#', '\%'),
* spurious whitespaces, and separated into lines (taking into account line -continuation * spurious whitespaces, and separated into lines (taking into account line -continuation
* by '\\' at the end of lines). * by '\\' at the end of lines).
* This is used as the input structure in the config-variable reading routi nes. * This is used as the input structure in the config-variable reading routi nes.
*/ */
typedef struct tagLALParsedDataFile { typedef struct tagLALParsedDataFile {
TokenList *lines; /**< list of pre-parsed data-file lines */ TokenList *lines; /**< list of pre-parsed data-file lines */
BOOLEAN *wasRead; /**< keep track of successfully read lines for stric tness-checking */ BOOLEAN *wasRead; /**< keep track of successfully read lines for stric tness-checking */
} LALParsedDataFile; } LALParsedDataFile;
/* Function prototypes */ /* Function prototypes */
 End of changes. 5 change blocks. 
10 lines changed or deleted 10 lines changed or added


 Date.h   Date.h 
skipping to change at line 24 skipping to change at line 24
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with with program; see the file COPYING. If not, write to the * along with with program; see the file COPYING. If not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
#ifndef _DATE_H #ifndef _DATE_H
#define _DATE_H #define _DATE_H
/* the following two preprocessor defines are to include the prototypes for
* gmtime_r() and asctime_r() from /usr/include/time.h
* HOWEVER, they do no good if -ansi is used in gcc: warnings are generated
* that the prototypes have not been seen */
/* HP-UX and Solaris */
#ifndef _REENTRANT
# define _REENTRANT
#endif
#ifndef _POSIX_PTHREAD_SEMANTICS
# define _POSIX_PTHREAD_SEMANTICS
#endif
/* Linux */
#ifndef __USE_POSIX
# define __USE_POSIX
#endif
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h> #include <time.h>
#include <lal/LALConstants.h> #include <lal/LALConstants.h>
#include <lal/LALAtomicDatatypes.h> #include <lal/LALAtomicDatatypes.h>
#include <lal/LALDatatypes.h> #include <lal/LALDatatypes.h>
#include <lal/LALStdlib.h> #include <lal/LALStdlib.h>
#include <lal/DetectorSite.h> #include <lal/DetectorSite.h>
#ifdef __cplusplus #ifdef __cplusplus
skipping to change at line 103 skipping to change at line 83
* + utc.tm_yday*86400 + (utc.tm_year-70)*31536000 * + utc.tm_yday*86400 + (utc.tm_year-70)*31536000
* + ((utc.tm_year-69)/4)*86400 - ((utc.tm_year-1)/100)*86400 * + ((utc.tm_year-69)/4)*86400 - ((utc.tm_year-1)/100)*86400
* + ((utc.tm_year+299)/400)*86400; * + ((utc.tm_year+299)/400)*86400;
* \endcode * \endcode
* so if you were to set \c utc.tm_sec=utc.tm_min=utc.tm_hour=0, * so if you were to set \c utc.tm_sec=utc.tm_min=utc.tm_hour=0,
* \c utc.tm_yday=5, and \c utc.tm_year=80, then you get * \c utc.tm_yday=5, and \c utc.tm_year=80, then you get
* \c t=315964800. That is what this is. * \c t=315964800. That is what this is.
*/ */
#define XLAL_EPOCH_UNIX_GPS 315964800 #define XLAL_EPOCH_UNIX_GPS 315964800
#define XLAL_EPOCH_J2000_0_JD 2451545.0 /**< Julian Day of the J2000 #define XLAL_EPOCH_J2000_0_JD 2451545.0 /**< Julian Day of the J200
.0 epoch (2000 JAN 1 12h UTC). */ 0.0 epoch (2000 JAN 1 12h UTC). */
#define XLAL_EPOCH_J2000_0_TAI_UTC 32 /**< Leap seconds (TAI-UTC) #define XLAL_EPOCH_J2000_0_TAI_UTC 32 /**< Leap seconds (TAI-UTC)
on the J2000.0 epoch (2000 JAN 1 12h UTC). */ on the J2000.0 epoch (2000 JAN 1 12h UTC). */
#define XLAL_EPOCH_J2000_0_GPS 630763213 /**< GPS seconds of the J200 #define XLAL_EPOCH_J2000_0_GPS 630763213 /**< GPS seconds of the J20
0.0 epoch (2000 JAN 1 12h UTC). */ 00.0 epoch (2000 JAN 1 12h UTC). */
#define XLAL_EPOCH_GPS_JD 2444244.5 /**< Julian Day of the GPS e #define XLAL_EPOCH_GPS_JD 2444244.5 /**< Julian Day of the GPS
poch (1980 JAN 6 0h UTC) */ epoch (1980 JAN 6 0h UTC) */
#define XLAL_EPOCH_GPS_TAI_UTC 19 /**< Leap seconds (TAI-UTC) #define XLAL_EPOCH_GPS_TAI_UTC 19 /**< Leap seconds (TAI-UTC)
on the GPS epoch (1980 JAN 6 0h UTC) */ on the GPS epoch (1980 JAN 6 0h UTC) */
#define XLAL_MJD_REF 2400000.5 /**< Reference Julia #define XLAL_MJD_REF 2400000.5 /**< Reference Julian Day f
n Day for Mean Julian Day. */ or Mean Julian Day. */
#define XLAL_MODIFIED_JULIEN_DAY(utc) (XLALJulianDay(utc)-XLAL_MJD_REF) /** < Modified Julian Day for specified civil time structure. */ #define XLAL_MODIFIED_JULIEN_DAY(utc) (XLALJulianDay(utc)-XLAL_MJD_REF) /** < Modified Julian Day for specified civil time structure. */
/** This structure stores pointers to a ::LALDetector and a /** This structure stores pointers to a ::LALDetector and a
* ::LIGOTimeGPS. Its sole purpose is to aggregate these * ::LIGOTimeGPS. Its sole purpose is to aggregate these
* structures for passing to functions. * structures for passing to functions.
*/ */
typedef struct typedef struct
tagLALPlaceAndGPS tagLALPlaceAndGPS
{ {
LALDetector *p_detector; /**< pointer to a detector */ LALDetector *p_detector; /**< pointer to a detector */
LIGOTimeGPS *p_gps; /**< Pointer to a GPS time structure */ LIGOTimeGPS *p_gps; /**< Pointer to a GPS time structure */
} }
LALPlaceAndGPS; LALPlaceAndGPS;
/*@}*/ /*@}*/
/* ---------- Function prototypes : see respective source.c files for doxyg en documentation ---------- */ /* ---------- Function prototypes : see respective source.c files for doxyg en documentation ---------- */
#ifndef SWIG // exclude from SWIG interface
/* Converts GPS time to nano seconds stored as an INT8. */ /* Converts GPS time to nano seconds stored as an INT8. */
INT8 XLALGPSToINT8NS( const LIGOTimeGPS *epoch ); INT8 XLALGPSToINT8NS( const LIGOTimeGPS *epoch );
/* Converts nano seconds stored as an INT8 to GPS time. */ /* Converts nano seconds stored as an INT8 to GPS time. */
LIGOTimeGPS * XLALINT8NSToGPS( LIGOTimeGPS *epoch, INT8 ns ); LIGOTimeGPS * XLALINT8NSToGPS( LIGOTimeGPS *epoch, INT8 ns );
/* Sets GPS time given GPS integer seconds and residual nanoseconds. */ /* Sets GPS time given GPS integer seconds and residual nanoseconds. */
LIGOTimeGPS * XLALGPSSet( LIGOTimeGPS *epoch, INT4 gpssec, INT8 gpsnan ); LIGOTimeGPS * XLALGPSSet( LIGOTimeGPS *epoch, INT4 gpssec, INT8 gpsnan );
/* Sets GPS time given GPS seconds as a REAL8. */ /* Sets GPS time given GPS seconds as a REAL8. */
skipping to change at line 167 skipping to change at line 149
/* Compares two GPS times. */ /* Compares two GPS times. */
int XLALGPSCmp( const LIGOTimeGPS *t0, const LIGOTimeGPS *t1 ); int XLALGPSCmp( const LIGOTimeGPS *t0, const LIGOTimeGPS *t1 );
/* Multiply a GPS time by a REAL8 */ /* Multiply a GPS time by a REAL8 */
LIGOTimeGPS *XLALGPSMultiply( LIGOTimeGPS *gps, REAL8 x ); LIGOTimeGPS *XLALGPSMultiply( LIGOTimeGPS *gps, REAL8 x );
/* Divide a GPS time by a REAL8 */ /* Divide a GPS time by a REAL8 */
LIGOTimeGPS *XLALGPSDivide( LIGOTimeGPS *gps, REAL8 x ); LIGOTimeGPS *XLALGPSDivide( LIGOTimeGPS *gps, REAL8 x );
/* Parse an ASCII string into a LIGOTimeGPS structure */
int XLALStrToGPS(LIGOTimeGPS *t, const char *nptr, char **endptr);
/* Return a string containing the ASCII base 10 representation of a LIGOTim
eGPS. */
char *XLALGPSToStr(char *, const LIGOTimeGPS *t);
#endif // !SWIG
#ifdef SWIG // SWIG interface directives
SWIGLAL(NEW_EMPTY_ARGUMENT(LIGOTimeGPS*, gpstime));
#endif
/* This function returns the current GPS time according to the system clock
*/
LIGOTimeGPS* XLALGPSTimeNow( LIGOTimeGPS *gpstime );
#ifdef SWIG // SWIG interface directives
SWIGLAL_CLEAR(NEW_EMPTY_ARGUMENT(LIGOTimeGPS*, gpstime));
#endif
/* Returns the leap seconds TAI-UTC at a given GPS second. */ /* Returns the leap seconds TAI-UTC at a given GPS second. */
int XLALLeapSeconds( INT4 gpssec ); int XLALLeapSeconds( INT4 gpssec );
/* Returns the leap seconds GPS-UTC at a given GPS second. */ /* Returns the leap seconds GPS-UTC at a given GPS second. */
int XLALGPSLeapSeconds( INT4 gpssec ); int XLALGPSLeapSeconds( INT4 gpssec );
/* Returns the leap seconds TAI-UTC for a given UTC broken down time. */ /* Returns the leap seconds TAI-UTC for a given UTC broken down time. */
int XLALLeapSecondsUTC( const struct tm *utc ); int XLALLeapSecondsUTC( const struct tm *utc );
/* Returns the GPS seconds since the GPS epoch for a specified UTC time str ucture. */ /* Returns the GPS seconds since the GPS epoch for a specified UTC time str ucture. */
INT4 XLALUTCToGPS( const struct tm *utc ); INT4 XLALUTCToGPS( const struct tm *utc );
#ifdef SWIG // SWIG interface directives #ifdef SWIG // SWIG interface directives
SWIGLAL(EMPTY_ARGUMENT(struct tm*, utc)); SWIGLAL(EMPTY_ARGUMENT(struct tm*, utc));
SWIGLAL(RETURN_VALUE(struct tm*, XLALGPSToUTC));
#endif #endif
/* Returns a pointer to a tm structure representing the time /* Returns a pointer to a tm structure representing the time
* specified in seconds since the GPS epoch. */ * specified in seconds since the GPS epoch. */
struct tm * XLALGPSToUTC( struct tm* XLALGPSToUTC( struct tm *utc, INT4 gpssec );
struct tm *utc,
INT4 gpssec
);
#ifdef SWIG // SWIG interface directives #ifdef SWIG // SWIG interface directives
SWIGLAL_CLEAR(EMPTY_ARGUMENT(struct tm*, utc)); SWIGLAL_CLEAR(EMPTY_ARGUMENT(struct tm*, utc));
#endif #endif
/* Returns the Julian Day (JD) corresponding to the date given in a broken /* Returns the Julian Day (JD) corresponding to the date given in a broken
* down time structure. */ * down time structure. */
REAL8 XLALJulianDay( const struct tm *utc); REAL8 XLALJulianDay( const struct tm *utc );
/* Returns the Modified Julian Day (MJD) corresponding to the date given in a broken down time structure.*/ /* Returns the Modified Julian Day (MJD) corresponding to the date given in a broken down time structure.*/
INT4 XLALModifiedJulianDay( const struct tm *utc ); INT4 XLALModifiedJulianDay( const struct tm *utc );
/* Fill in missing fields of a C 'tm' broken-down time struct. */ /* Fill in missing fields of a C 'tm' broken-down time struct. */
int XLALFillBrokenDownTime(struct tm *tm); int XLALFillBrokenDownTime( struct tm *tm );
/* Returns the Greenwich mean or aparent sideral time in radians. */ /* Returns the Greenwich mean or aparent sideral time in radians. */
REAL8 XLALGreenwichSiderealTime( REAL8 XLALGreenwichSiderealTime(
const LIGOTimeGPS *gpstime, const LIGOTimeGPS *gpstime,
REAL8 equation_of_equinoxes REAL8 equation_of_equinoxes
); );
/* Returns the Greenwich Mean Sidereal Time in RADIANS for a specified GPS time. */ /* Returns the Greenwich Mean Sidereal Time in RADIANS for a specified GPS time. */
REAL8 XLALGreenwichMeanSiderealTime( REAL8 XLALGreenwichMeanSiderealTime(
const LIGOTimeGPS *gpstime const LIGOTimeGPS *gpstime
); );
/* Returns the GPS time for the given Greenwich mean sidereal time (in radi ans). */ /* Returns the GPS time for the given Greenwich mean sidereal time (in radi ans). */
LIGOTimeGPS *XLALGreenwichMeanSiderealTimeToGPS( LIGOTimeGPS *XLALGreenwichMeanSiderealTimeToGPS(
REAL8 gmst, REAL8 gmst,
LIGOTimeGPS *gps LIGOTimeGPS *gps
); );
/* Returns the GPS time for the given Greenwich sidereal time (in radians). */ /* Returns the GPS time for the given Greenwich sidereal time (in radians). */
LIGOTimeGPS *XLALGreenwichSiderealTimeToGPS( LIGOTimeGPS *XLALGreenwichSiderealTimeToGPS(
REAL8 gmst, REAL8 gmst,
REAL8 equation_of_equinoxes, REAL8 equation_of_equinoxes,
LIGOTimeGPS *gps LIGOTimeGPS *gps
); );
int XLALStrToGPS(LIGOTimeGPS *t, const char *nptr, char **endptr);
char *XLALGPSToStr(char *, const LIGOTimeGPS *t);
#ifdef SWIG // SWIG interface directives
SWIGLAL(NEW_EMPTY_ARGUMENT(LIGOTimeGPS*, gpstime));
SWIGLAL(RETURN_VALUE(LIGOTimeGPS*, XLALGPSTimeNow));
#endif
/* This function returns the current GPS time according to the system clock
*/
LIGOTimeGPS *
XLALGPSTimeNow (
LIGOTimeGPS *gpstime
);
#ifdef SWIG // SWIG interface directives
SWIGLAL_CLEAR(NEW_EMPTY_ARGUMENT(LIGOTimeGPS*, gpstime));
#endif
int
XLALINT8NanoSecIsPlayground (
INT8 ns
);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _DATE_H */ #endif /* _DATE_H */
 End of changes. 15 change blocks. 
72 lines changed or deleted 47 lines changed or added


 FileIO.h   FileIO.h 
/* /*
* Copyright (C) 2007 Jolien Creighton * Copyright (C) 2007 Jolien Creighton
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with with program; see the file COPYING. If not, write to the * along with with program; see the file COPYING. If not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
#ifndef _FILEIO_H #ifndef _FILEIO_H
#define _FILEIO_H #define _FILEIO_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
skipping to change at line 49 skipping to change at line 49
\heading{Synopsis} \heading{Synopsis}
\code \code
#include <lal/LALStdio.h> #include <lal/LALStdio.h>
#include <lal/FileIO.h> #include <lal/FileIO.h>
\endcode \endcode
Only use \ref FileIO.h in test code that links to the \c lalsupport libr ary. Only use \ref FileIO.h in test code that links to the \c lalsupport libr ary.
*/ */
/*@{*/ /*@{*/
FILE * FILE *LALOpenDataFile( const char* );
LALOpenDataFile( const char * );
typedef struct tagLALFILE LALFILE;
typedef struct tagLALFILE {
int compression;
void *fp;
} LALFILE;
LALFILE *lalstdin(void); LALFILE *lalstdin(void);
LALFILE *lalstdout(void); LALFILE *lalstdout(void);
LALFILE *lalstderr(void); LALFILE *lalstderr(void);
#define LALSTDIN (lalstdin()) #define LALSTDIN (lalstdin())
#define LALSTDOUT (lalstdout()) #define LALSTDOUT (lalstdout())
#define LALSTDERR (lalstderr()) #define LALSTDERR (lalstderr())
int XLALFileIsCompressed( const char *path ); int XLALFileIsCompressed( const char *path );
LALFILE * XLALFileOpenRead( const char *path ); LALFILE *XLALFileOpenRead( const char *path );
LALFILE * XLALFileOpenWrite( const char *path, int compression ); LALFILE *XLALFileOpenWrite( const char *path, int compression );
LALFILE * XLALFileOpenAppend( const char *path, int compression ); LALFILE *XLALFileOpenAppend( const char *path, int compression );
LALFILE * XLALFileOpen( const char *path, const char *mode ); LALFILE *XLALFileOpen( const char *path, const char *mode );
int XLALFileClose( LALFILE * file ); int XLALFileClose( LALFILE *file );
size_t XLALFileRead( void *ptr, size_t size, size_t nobj, LALFILE *file ); size_t XLALFileRead( void *ptr, size_t size, size_t nobj, LALFILE *file );
size_t XLALFileWrite( const void *ptr, size_t size, size_t nobj, LALFILE *f ile ); size_t XLALFileWrite( const void *ptr, size_t size, size_t nobj, LALFILE *f ile );
int XLALFileGetc( LALFILE *file ); int XLALFileGetc( LALFILE *file );
int XLALFilePutc( int c, LALFILE *file ); int XLALFilePutc( int c, LALFILE *file );
char * XLALFileGets( char * s, int size, LALFILE *file ); char *XLALFileGets( char *s, int size, LALFILE *file );
int XLALFilePuts( const char * s, LALFILE *file ); int XLALFilePuts( const char *s, LALFILE *file );
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
int XLALFileVPrintf( LALFILE *file, const char *fmt, va_list ap ); int XLALFileVPrintf( LALFILE *file, const char *fmt, va_list ap );
#endif /* SWIG */ #endif /* SWIG */
int XLALFilePrintf( LALFILE *file, const char *fmt, ... ); int XLALFilePrintf( LALFILE *file, const char *fmt, ... );
int XLALFileFlush( LALFILE *file ); int XLALFileFlush( LALFILE *file );
int XLALFileSeek( LALFILE *file, long offset, int whence ); int XLALFileSeek( LALFILE *file, long offset, int whence );
long XLALFileTell( LALFILE *file ); long XLALFileTell( LALFILE *file );
void XLALFileRewind( LALFILE *file ); void XLALFileRewind( LALFILE *file );
int XLALFileEOF( LALFILE *file ); int XLALFileEOF( LALFILE *file );
int XLALGzipTextFile( const char *path );
int XLALGunzipTextFile( const char *filename );
/*@}*/ /*@}*/
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _FILEIO_H */ #endif /* _FILEIO_H */
 End of changes. 6 change blocks. 
30 lines changed or deleted 30 lines changed or added


 FlatLatticeTiling.h   FlatLatticeTiling.h 
skipping to change at line 93 skipping to change at line 93
FlatLatticeTiling* tiling ///< [in] Tiling state FlatLatticeTiling* tiling ///< [in] Tiling state
); );
/// ///
/// Return the number of dimensions being tiled /// Return the number of dimensions being tiled
/// ///
size_t XLALGetFlatLatticeDimensions( size_t XLALGetFlatLatticeDimensions(
FlatLatticeTiling* tiling ///< [in] Tiling state FlatLatticeTiling* tiling ///< [in] Tiling state
); );
#ifdef SWIG // SWIG interface directives
SWIGLAL(GET_OBJECT(XLALGetFlatLatticePoint));
#endif
/// ///
/// Return the current lattice tiling parameter space point /// Return the current lattice tiling parameter space point
/// ///
const gsl_vector* XLALGetFlatLatticePoint( const gsl_vector* XLALGetFlatLatticePoint(
FlatLatticeTiling* tiling ///< [in] Tiling state FlatLatticeTiling* tiling ///< [in] Tiling state
); );
/// ///
/// Return the current number of flat lattice tiling parameter space points /// Return the current number of flat lattice tiling parameter space points
/// ///
unsigned long XLALGetFlatLatticePointCount( unsigned long XLALGetFlatLatticePointCount(
FlatLatticeTiling* tiling ///< [in] Tiling state FlatLatticeTiling* tiling ///< [in] Tiling state
); );
/// ///
/// Return the increment vectors which are used to generate the lattice.
///
gsl_matrix* XLALGetFlatLatticeIncrements(
FlatLatticeTiling* tiling ///< [in] Tiling state
);
///
/// Set a parameter space bound on the flat lattice tiling /// Set a parameter space bound on the flat lattice tiling
/// ///
int XLALSetFlatLatticeBound( int XLALSetFlatLatticeBound(
FlatLatticeTiling* tiling, ///< [in] Tiling state FlatLatticeTiling* tiling, ///< [in] Tiling state
const size_t dimension, ///< [in] Dimension on which bound a pplies const size_t dimension, ///< [in] Dimension on which bound a pplies
const bool singular, ///< [in] Is bound composed of singl e points? const bool singular, ///< [in] Is bound composed of singl e points?
const FlatLatticeBound func, ///< [in] Parameter space bound func tion const FlatLatticeBound func, ///< [in] Parameter space bound func tion
void* data ///< [in] Arbitrary data describing parameter space void* data ///< [in] Arbitrary data describing parameter space
); );
skipping to change at line 135 skipping to change at line 145
/// ///
/// Set the flat lattice tiling metric and maximum mismatch /// Set the flat lattice tiling metric and maximum mismatch
/// ///
int XLALSetFlatLatticeMetric( int XLALSetFlatLatticeMetric(
FlatLatticeTiling* tiling, ///< [in] Tiling state FlatLatticeTiling* tiling, ///< [in] Tiling state
const gsl_matrix* metric, ///< [in] Parameter space metric const gsl_matrix* metric, ///< [in] Parameter space metric
const double max_mismatch ///< [in] Maximum prescribed mismatc h const double max_mismatch ///< [in] Maximum prescribed mismatc h
); );
#ifdef SWIG // SWIG interface directives
SWIGLAL(NO_NEW_OBJECT(XLALNextFlatLatticePoint));
#endif
/// ///
/// Move to the next point in the flat lattice tiling parameter space. /// Move to the next point in the flat lattice tiling parameter space.
/// Returns the index of the lowest dimension where the point has changed, /// Returns the index of the lowest dimension where the point has changed,
/// or a negative number when the template bank is exhausted. /// or a negative number when the template bank is exhausted.
/// ///
int XLALNextFlatLatticePoint( int XLALNextFlatLatticePoint(
FlatLatticeTiling* tiling ///< [in] Tiling state FlatLatticeTiling* tiling ///< [in] Tiling state
); );
/// ///
 End of changes. 3 change blocks. 
3 lines changed or deleted 10 lines changed or added


 Grid.h   Grid.h 
skipping to change at line 27 skipping to change at line 27
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
#ifndef _GRID_H #ifndef _GRID_H
#define _GRID_H #define _GRID_H
#include <lal/LALStdlib.h> #include <lal/LALStdlib.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
/** /**
\addtogroup Grid_h \addtogroup Grid_h
\author Creighton, T. D. \author Creighton, T. D.
\brief Provides a structured datatype for a multidimensional rectilinear grid. \brief Provides a structured datatype for a multidimensional rectilinear grid.
\heading{Synopsis} \heading{Synopsis}
\code \code
skipping to change at line 140 skipping to change at line 142
<tr><td>I2</td><td> INT2</td><td> U2</td><td> UINT2</td></tr> <tr><td>I2</td><td> INT2</td><td> U2</td><td> UINT2</td></tr>
<tr><td>I4</td><td> INT4</td><td> U4</td><td> UINT4</td></tr> <tr><td>I4</td><td> INT4</td><td> U4</td><td> UINT4</td></tr>
<tr><td>I8</td><td> INT8</td><td> U8</td><td> UINT8</td></tr> <tr><td>I8</td><td> INT8</td><td> U8</td><td> UINT8</td></tr>
<tr><td> S</td><td> REAL4</td><td> C</td><td> COMPLEX8</td></tr> <tr><td> S</td><td> REAL4</td><td> C</td><td> COMPLEX8</td></tr>
<tr><td> D</td><td> REAL8</td><td> Z</td><td> COMPLEX16</td></tr> <tr><td> D</td><td> REAL8</td><td> Z</td><td> COMPLEX16</td></tr>
</table> </table>
*/ */
/*@{*/ /*@{*/
/** \name Error Codes */ /*@{*/ /** \name Error Codes *//*@{ */
#define GRIDH_ENUL 1 /**< Unexpected null pointer in arguments */ #define GRIDH_ENUL 1 /**< Unexpected null pointer in arguments */
#define GRIDH_EOUT 2 /**< Output handle points to a non-null pointer */ #define GRIDH_EOUT 2 /**< Output handle points to a non-null pointer */
#define GRIDH_EMEM 3 /**< Memory allocation error */ #define GRIDH_EMEM 3 /**< Memory allocation error */
/*@}*/ /*@}*/
/*@}*/ /*@}*/
/** \cond DONT_DOXYGEN */ /** \cond DONT_DOXYGEN */
#define GRIDH_MSGENUL "Unexpected null pointer in arguments" #define GRIDH_MSGENUL "Unexpected null pointer in arguments"
#define GRIDH_MSGEOUT "Output handle points to a non-null pointer" #define GRIDH_MSGEOUT "Output handle points to a non-null pointer"
#define GRIDH_MSGEMEM "Memory allocation error" #define GRIDH_MSGEMEM "Memory allocation error"
/** \endcond */ /** \endcond */
typedef struct tagINT2Grid { typedef struct tagINT2Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
INT2Array *data; INT2Array *data;
} INT2Grid; } INT2Grid;
typedef struct tagINT4Grid { typedef struct tagINT4Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
INT4Array *data; INT4Array *data;
} INT4Grid; } INT4Grid;
typedef struct tagINT8Grid { typedef struct tagINT8Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
INT8Array *data; INT8Array *data;
} INT8Grid; } INT8Grid;
typedef struct tagUINT2Grid { typedef struct tagUINT2Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
UINT2Array *data; UINT2Array *data;
} UINT2Grid; } UINT2Grid;
typedef struct tagUINT4Grid { typedef struct tagUINT4Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
UINT4Array *data; UINT4Array *data;
} UINT4Grid; } UINT4Grid;
typedef struct tagUINT8Grid { typedef struct tagUINT8Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
UINT8Array *data; UINT8Array *data;
} UINT8Grid; } UINT8Grid;
typedef struct tagREAL4Grid { typedef struct tagREAL4Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
REAL4Array *data; REAL4Array *data;
} REAL4Grid; } REAL4Grid;
typedef struct tagREAL8Grid { typedef struct tagREAL8Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
REAL8Array *data; REAL8Array *data;
} REAL8Grid; } REAL8Grid;
typedef struct tagCOMPLEX8Grid { typedef struct tagCOMPLEX8Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
COMPLEX8Array *data; COMPLEX8Array *data;
} COMPLEX8Grid; } COMPLEX8Grid;
typedef struct tagCOMPLEX16Grid { typedef struct tagCOMPLEX16Grid {
CHAR name[LALNameLength]; CHAR name[LALNameLength];
LALUnit sampleUnits; LALUnit sampleUnits;
LALUnit *dimUnits; LALUnit *dimUnits;
REAL8Vector *offset; REAL8Vector *offset;
REAL8Vector *interval; REAL8Vector *interval;
COMPLEX16Array *data; COMPLEX16Array *data;
} COMPLEX16Grid; } COMPLEX16Grid;
/* Function prototypes. */ /* Function prototypes. */
void void
LALI2CreateGrid( LALStatus *status, INT2Grid **grid, UINT4Vector *dimLength LALI2CreateGrid(LALStatus * status, INT2Grid ** grid,
, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALI4CreateGrid( LALStatus *status, INT4Grid **grid, UINT4Vector *dimLength LALI4CreateGrid(LALStatus * status, INT4Grid ** grid,
, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALI8CreateGrid( LALStatus *status, INT8Grid **grid, UINT4Vector *dimLength LALI8CreateGrid(LALStatus * status, INT8Grid ** grid,
, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALU2CreateGrid( LALStatus *status, UINT2Grid **grid, UINT4Vector *dimLengt LALU2CreateGrid(LALStatus * status, UINT2Grid ** grid,
h, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALU4CreateGrid( LALStatus *status, UINT4Grid **grid, UINT4Vector *dimLengt LALU4CreateGrid(LALStatus * status, UINT4Grid ** grid,
h, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALU8CreateGrid( LALStatus *status, UINT8Grid **grid, UINT4Vector *dimLengt LALU8CreateGrid(LALStatus * status, UINT8Grid ** grid,
h, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALSCreateGrid( LALStatus *status, REAL4Grid **grid, UINT4Vector *dimLength LALSCreateGrid(LALStatus * status, REAL4Grid ** grid,
, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALDCreateGrid( LALStatus *status, REAL8Grid **grid, UINT4Vector *dimLength LALDCreateGrid(LALStatus * status, REAL8Grid ** grid,
, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALCCreateGrid( LALStatus *status, COMPLEX8Grid **grid, UINT4Vector *dimLen LALCCreateGrid(LALStatus * status, COMPLEX8Grid ** grid,
gth, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void
LALZCreateGrid( LALStatus *status, COMPLEX16Grid **grid, UINT4Vector *dimLe LALZCreateGrid(LALStatus * status, COMPLEX16Grid ** grid,
ngth, UINT4 dimension ); UINT4Vector * dimLength, UINT4 dimension);
void void LALI2DestroyGrid(LALStatus * status, INT2Grid ** grid);
LALI2DestroyGrid( LALStatus *status, INT2Grid **grid );
void void LALI4DestroyGrid(LALStatus * status, INT4Grid ** grid);
LALI4DestroyGrid( LALStatus *status, INT4Grid **grid );
void void LALI8DestroyGrid(LALStatus * status, INT8Grid ** grid);
LALI8DestroyGrid( LALStatus *status, INT8Grid **grid );
void void LALU2DestroyGrid(LALStatus * status, UINT2Grid ** grid);
LALU2DestroyGrid( LALStatus *status, UINT2Grid **grid );
void void LALU4DestroyGrid(LALStatus * status, UINT4Grid ** grid);
LALU4DestroyGrid( LALStatus *status, UINT4Grid **grid );
void void LALU8DestroyGrid(LALStatus * status, UINT8Grid ** grid);
LALU8DestroyGrid( LALStatus *status, UINT8Grid **grid );
void void LALSDestroyGrid(LALStatus * status, REAL4Grid ** grid);
LALSDestroyGrid( LALStatus *status, REAL4Grid **grid );
void void LALDDestroyGrid(LALStatus * status, REAL8Grid ** grid);
LALDDestroyGrid( LALStatus *status, REAL8Grid **grid );
void void LALCDestroyGrid(LALStatus * status, COMPLEX8Grid ** grid);
LALCDestroyGrid( LALStatus *status, COMPLEX8Grid **grid );
void void LALZDestroyGrid(LALStatus * status, COMPLEX16Grid ** grid);
LALZDestroyGrid( LALStatus *status, COMPLEX16Grid **grid );
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _GRID_H */ #endif /* _GRID_H */
 End of changes. 33 change blocks. 
105 lines changed or deleted 99 lines changed or added


 IIRFilter.h   IIRFilter.h 
skipping to change at line 143 skipping to change at line 143
#define IIRFILTERH_MSGEOUT "Output handle points to a non-null pointer" #define IIRFILTERH_MSGEOUT "Output handle points to a non-null pointer"
#define IIRFILTERH_MSGEMEM "Memory allocation error" #define IIRFILTERH_MSGEMEM "Memory allocation error"
#define IIRFILTERH_MSGEPAIR "Input has unpaired nonreal poles or zeros" #define IIRFILTERH_MSGEPAIR "Input has unpaired nonreal poles or zeros"
/** \endcond */ /** \endcond */
/** This structure stores the direct and recursive REAL4 filter coefficient s, as /** This structure stores the direct and recursive REAL4 filter coefficient s, as
* well as the history of the auxiliary sequence \f$w\f$. * well as the history of the auxiliary sequence \f$w\f$.
* The length of the history vector gives the order of the filter * The length of the history vector gives the order of the filter
*/ */
#ifdef SWIG /* SWIG interface directives */ #ifdef SWIG /* SWIG interface directives */
%warnfilter(SWIGWARN_TYPEMAP_CHARLEAK) tagREAL4IIRFilter::name; SWIGLAL(IMMUTABLE_MEMBERS(tagREAL4IIRFilter, name));
#endif /* SWIG */ #endif /* SWIG */
typedef struct tagREAL4IIRFilter{ typedef struct tagREAL4IIRFilter{
const CHAR *name; /**< User assigned name. */ const CHAR *name; /**< User assigned name. */
REAL8 deltaT; /**< Sampling time interval of the filter; If \f $\leq0\f$, it will be ignored (ie it will be taken from the data stream) */ REAL8 deltaT; /**< Sampling time interval of the filter; If \f $\leq0\f$, it will be ignored (ie it will be taken from the data stream) */
REAL4Vector *directCoef; /**< The direct filter coefficients. */ REAL4Vector *directCoef; /**< The direct filter coefficients. */
REAL4Vector *recursCoef; /**< The recursive filter coefficients. */ REAL4Vector *recursCoef; /**< The recursive filter coefficients. */
REAL4Vector *history; /**< The previous values of w. */ REAL4Vector *history; /**< The previous values of w. */
} REAL4IIRFilter; } REAL4IIRFilter;
/** This structure stores the direct and recursive REAL8 filter coefficient s, as /** This structure stores the direct and recursive REAL8 filter coefficient s, as
* well as the history of the auxiliary sequence \f$w\f$. * well as the history of the auxiliary sequence \f$w\f$.
* The length of the history vector gives the order of the filter * The length of the history vector gives the order of the filter
*/ */
#ifdef SWIG /* SWIG interface directives */ #ifdef SWIG /* SWIG interface directives */
%warnfilter(SWIGWARN_TYPEMAP_CHARLEAK) tagREAL8IIRFilter::name; SWIGLAL(IMMUTABLE_MEMBERS(tagREAL8IIRFilter, name));
#endif /* SWIG */ #endif /* SWIG */
typedef struct tagREAL8IIRFilter{ typedef struct tagREAL8IIRFilter{
const CHAR *name; /**< User assigned name. */ const CHAR *name; /**< User assigned name. */
REAL8 deltaT; /**< Sampling time interval of the filter; If \f $\leq0\f$, it will be ignored (ie it will be taken from the data stream). * / REAL8 deltaT; /**< Sampling time interval of the filter; If \f $\leq0\f$, it will be ignored (ie it will be taken from the data stream). * /
REAL8Vector *directCoef; /**< The direct filter coefficients. */ REAL8Vector *directCoef; /**< The direct filter coefficients. */
REAL8Vector *recursCoef; /**< The recursive filter coefficients. */ REAL8Vector *recursCoef; /**< The recursive filter coefficients. */
REAL8Vector *history; /**< The previous values of w. */ REAL8Vector *history; /**< The previous values of w. */
} REAL8IIRFilter; } REAL8IIRFilter;
/*@}*/ /*@}*/
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 LALAtomicDatatypes.h   LALAtomicDatatypes.h 
skipping to change at line 112 skipping to change at line 112
/* Complex types */ /* Complex types */
#if defined(__cplusplus) #if defined(__cplusplus)
typedef std::complex<float> COMPLEX8; typedef std::complex<float> COMPLEX8;
typedef std::complex<double> COMPLEX16; typedef std::complex<double> COMPLEX16;
#else #else
typedef float complex COMPLEX8; /**< Single-precision floating-point co mplex number (8 bytes total) */ typedef float complex COMPLEX8; /**< Single-precision floating-point co mplex number (8 bytes total) */
typedef double complex COMPLEX16; /**< Double-precision floating-point co mplex number (16 bytes total) */ typedef double complex COMPLEX16; /**< Double-precision floating-point co mplex number (16 bytes total) */
#endif #endif
/* Complex type constructors */ /* Complex type constructors */
#if defined(__cplusplus) #if !defined(__cplusplus)
#define CX8rect( re, im) COMPLEX8( re, im ) #define crectf(re, im) (((REAL4)(re)) + _Complex_I*((REAL4)(im))) /**<
#define CX16rect(re, im) COMPLEX16( re, im ) Construct a COMPLEX8 from real and imaginary parts */
#define CX8polar( r, th) ( (r) * std::exp( CX8rect( 0, th ) ) ) #define crect(re, im) (((REAL8)(re)) + _Complex_I*((REAL8)(im))) /**<
#define CX16polar(r, th) ( (r) * std::exp( CX16rect( 0, th ) ) ) Construct a COMPLEX16 from real and imaginary parts */
#else #define cpolarf(r, th) (((REAL4)(r)) * cexpf(crectf(0, th))) /**<
#define CX8rect( re, im) ( (re) + _Complex_I * (im) ) /**< Constr Construct a COMPLEX8 from polar modulus and argument */
uct a COMPLEX8 from real and imaginary parts */ #define cpolar(r, th) (((REAL8)(r)) * cexp(crect(0, th))) /**<
#define CX16rect(re, im) ( (re) + _Complex_I * (im) ) /**< Constr Construct a COMPLEX16 from polar modulus and argument */
uct a COMPLEX16 from real and imaginary parts */
#define CX8polar( r, th) ( (r) * cexpf( CX8rect( 0, th ) ) ) /**< Constr
uct a COMPLEX8 from polar modulus and argument */
#define CX16polar(r, th) ( (r) * cexp( CX16rect( 0, th ) ) ) /**< Constr
uct a COMPLEX16 from polar modulus and argument */
#endif
/* Real and imaginary part accessors */
#if defined(__cplusplus)
#define CX8re( z) std::real(z)
#define CX16re(z) std::real(z)
#define CX8im( z) std::imag(z)
#define CX16im(z) std::imag(z)
#else
#define CX8re( z) crealf(z) /**< Get the real part of a COMPLEX8 */
#define CX16re(z) creal( z) /**< Get the real part of a COMPLEX16 */
#define CX8im( z) cimagf(z) /**< Get the imaginary part of a COMPLEX8 */
#define CX16im(z) cimag( z) /**< Get the imaginary part of a COMPLEX16 */
#endif
/* Real and imaginary part assignment */
#if !defined(__cplusplus) && defined(__GNUC__)
#define setCX8re( z, re) ( __real__(z) = (re) )
#define setCX16re(z, re) ( __real__(z) = (re) )
#define setCX8im( z, im) ( __imag__(z) = (im) )
#define setCX16im(z, im) ( __imag__(z) = (im) )
#else
#define setCX8re( z, re) ( (z) = CX8rect( re, CX8im( z) ) ) /**< Set the
real part of a COMPLEX8 */
#define setCX16re(z, re) ( (z) = CX16rect( re, CX16im(z) ) ) /**< Set the
real part of a COMPLEX16 */
#define setCX8im( z, im) ( (z) = CX8rect( CX8re( z), im ) ) /**< Set the
imaginary part of a COMPLEX8 */
#define setCX16im(z, im) ( (z) = CX16rect( CX16re(z), im ) ) /**< Set the
imaginary part of a COMPLEX16 */
#endif #endif
#else /* LAL_USE_OLD_COMPLEX_STRUCTS */ #else /* LAL_USE_OLD_COMPLEX_STRUCTS */
/** \cond DONT_DOXYGEN */ /** \cond DONT_DOXYGEN */
/* Old LAL complex structs, being phased out ... */ /* Old LAL complex structs, being phased out ... */
typedef struct tagCOMPLEX8 { REAL4 re; REAL4 im; } COMPLEX8; typedef struct tagCOMPLEX8 { REAL4 realf_FIXME; REAL4 imagf_FIXME; } COMPLE
typedef struct tagCOMPLEX16 { REAL8 re; REAL8 im; } COMPLEX16; X8;
#define crealf(z) ((z).realf_FIXME)
#define cimagf(z) ((z).imagf_FIXME)
typedef struct tagCOMPLEX16 { REAL8 real_FIXME; REAL8 imag_FIXME; } COMPLEX
16;
#define creal(z) ((z).real_FIXME)
#define cimag(z) ((z).imag_FIXME)
/** \endcond */ /** \endcond */
#endif /* LAL_USE_OLD_COMPLEX_STRUCTS */ #endif /* LAL_USE_OLD_COMPLEX_STRUCTS */
/*@}*/ /*@}*/
#endif /* SWIG */ #endif /* SWIG */
#if 0 #if 0
{ /* so that editors will match succeeding brace */ { /* so that editors will match succeeding brace */
 End of changes. 2 change blocks. 
46 lines changed or deleted 17 lines changed or added


 LALCache.h   LALCache.h 
skipping to change at line 84 skipping to change at line 84
/** Reads a LAL cache file and produces a LALCache structure. */ /** Reads a LAL cache file and produces a LALCache structure. */
LALCache *XLALCacheImport(const char *fname); LALCache *XLALCacheImport(const char *fname);
/** Globs a directory and construct LALCache from matching entries. /** Globs a directory and construct LALCache from matching entries.
* \param [in] dirstr Colon-delimited list of directories. * \param [in] dirstr Colon-delimited list of directories.
* \param [in] fnptrn Glob pattern for matching files. * \param [in] fnptrn Glob pattern for matching files.
* \returns LALCache structure. * \returns LALCache structure.
*/ */
LALCache *XLALCacheGlob(const char *dirstr, const char *fnptrn); LALCache *XLALCacheGlob(const char *dirstr, const char *fnptrn);
/** Writes a LALCache structure to an output LAL cache file. */ /** Writes a LALCache structure to output LALFILE. */
int XLALCacheFileWrite(LALFILE * fp, const LALCache * cache); int XLALCacheFileWrite(LALFILE * fp, const LALCache * cache);
/** Exports a LALCache structure to an output LAL cache file. */
int XLALCacheExport(const LALCache * cache, const char *filename);
/** Sorts entries in a LALCache structure. */ /** Sorts entries in a LALCache structure. */
int XLALCacheSort(LALCache * cache); int XLALCacheSort(LALCache * cache);
/** Prunes duplicate entries keeping the second one; cache is reduced in /** Prunes duplicate entries keeping the second one; cache is reduced in
* length if there are. Entries are duplicates if their metadata are * length if there are. Entries are duplicates if their metadata are
* the same (even if the urls are different */ * the same (even if the urls are different */
int XLALCacheUniq(LALCache * cache); int XLALCacheUniq(LALCache * cache);
/** Selects only matching entries in a LALCache structure -- other entries /** Selects only matching entries in a LALCache structure -- other entries
* are deleted from the LALCache structure. * are deleted from the LALCache structure.
 End of changes. 2 change blocks. 
1 lines changed or deleted 4 lines changed or added


 LALConfig.h   LALConfig.h 
/* include/lal/LALConfig.h. Generated from LALConfig.h.in by configure. * / /* include/lal/LALConfig.h. Generated from LALConfig.h.in by configure. * /
/* only include this file if LAL's config.h has not been included */ /* only include this file if LAL's config.h has not been included */
#ifndef CONFIG_H__LAL #ifndef CONFIG_H__LAL
#ifndef _LALCONFIG_H #ifndef _LALCONFIG_H
#define _LALCONFIG_H #define _LALCONFIG_H
/* LAL Version */ /* LAL Version */
#define LAL_VERSION "6.10.0" #define LAL_VERSION "6.11.0"
/* LAL Version Major Number */ /* LAL Version Major Number */
#define LAL_VERSION_MAJOR 6 #define LAL_VERSION_MAJOR 6
/* LAL Version Minor Number */ /* LAL Version Minor Number */
#define LAL_VERSION_MINOR 10 #define LAL_VERSION_MINOR 11
/* LAL Version Micro Number */ /* LAL Version Micro Number */
#define LAL_VERSION_MICRO 0 #define LAL_VERSION_MICRO 0
/* LAL Version Devel Number */ /* LAL Version Devel Number */
#define LAL_VERSION_DEVEL 0 #define LAL_VERSION_DEVEL 0
/* LAL Configure Arguments */ /* LAL Configure Arguments */
#define LAL_CONFIGURE_ARGS " '--enable-shared' '--prefix=/home/ut/testing/l al/6.10.0' '--exec-prefix=/home/ut/testing/lal/6.10.0' '--sysconfdir=/home/ ut/testing/lal/6.10.0' '--datadir=/home/ut/testing/lal/6.10.0/share' 'CFLAG S=-w -fpermissive' 'CXXFLAGS=-w -fpermissive'" #define LAL_CONFIGURE_ARGS " '--enable-shared' '--prefix=/home/ut/testing/l al/6.11.0' '--exec-prefix=/home/ut/testing/lal/6.11.0' '--sysconfdir=/home/ ut/testing/lal/6.11.0' '--datadir=/home/ut/testing/lal/6.11.0/share' 'CFLAG S=-w -fpermissive' 'CXXFLAGS=-w -fpermissive'"
/* LAL Configure Date */ /* LAL Configure Date */
#define LAL_CONFIGURE_DATE "2013-03-13T02:35:15+0400" #define LAL_CONFIGURE_DATE "2013-06-28T04:11:52+0400"
/* Suppress debugging code */ /* Suppress debugging code */
/* #undef LAL_NDEBUG */ /* #undef LAL_NDEBUG */
/* Use functions rather than macros */ /* Use functions rather than macros */
/* #undef NOLALMACROS */ /* #undef NOLALMACROS */
/* Use pthread mutex lock for threadsafety */ /* Use pthread mutex lock for threadsafety */
/* #undef LAL_PTHREAD_LOCK */ /* #undef LAL_PTHREAD_LOCK */
 End of changes. 4 change blocks. 
4 lines changed or deleted 4 lines changed or added


 LALConstants.h   LALConstants.h 
skipping to change at line 147 skipping to change at line 147
* given in the SI units shown. Note that the ``year'' and * given in the SI units shown. Note that the ``year'' and
* ``light-year'' have exactly defined values, and appear under * ``light-year'' have exactly defined values, and appear under
* ``Exact physical constants''. * ``Exact physical constants''.
*/ */
/*@{*/ /*@{*/
#define LAL_REARTH_SI 6.378140e6 /**< Earth equatorial radius, m */ #define LAL_REARTH_SI 6.378140e6 /**< Earth equatorial radius, m */
#define LAL_AWGS84_SI 6.378137e6 /**< Semimajor axis of WGS-84 Referen ce Ellipsoid, m */ #define LAL_AWGS84_SI 6.378137e6 /**< Semimajor axis of WGS-84 Referen ce Ellipsoid, m */
#define LAL_BWGS84_SI 6.356752314e6 /**< Semiminor axis of WGS-84 Referen ce Ellipsoid, m */ #define LAL_BWGS84_SI 6.356752314e6 /**< Semiminor axis of WGS-84 Referen ce Ellipsoid, m */
#define LAL_MEARTH_SI 5.97370e24 /**< Earth mass, kg */ #define LAL_MEARTH_SI 5.97370e24 /**< Earth mass, kg */
#define LAL_IEARTH 0.409092804 /**< Earth inclination (2000), radian s */ #define LAL_IEARTH 0.409092804 /**< Earth inclination (2000), radian s */
#define LAL_COSIEARTH 0.91748206215761919815 /**< Cosine of Earth inclina #define LAL_COSIEARTH 0.91748206215761919815 /**< Cosine of Earth inclin
tion (2000) */ ation (2000) */
#define LAL_SINIEARTH 0.39777715572793088957 /**< Sine of Earth inclinati #define LAL_SINIEARTH 0.39777715572793088957 /**< Sine of Earth inclinat
on (2000) */ ion (2000) */
#define LAL_EEARTH 0.0167 /**< Earth orbital eccentricity */ #define LAL_EEARTH 0.0167 /**< Earth orbital eccentricity */
#define LAL_RSUN_SI 6.960e8 /**< Solar equatorial radius, m */ #define LAL_RSUN_SI 6.960e8 /**< Solar equatorial radius, m */
#define LAL_MSUN_SI 1.98892e30 /**< Solar mass, kg */ #define LAL_MSUN_SI 1.98892e30 /**< Solar mass, kg */
#define LAL_MRSUN_SI 1.4766254500421874513093320107664308e3 /**< Geometri zed solar mass, m. = LAL_MSUN_SI / LAL_MPL_SI * LAL_LPL_SI */ #define LAL_MRSUN_SI 1.4766254500421874513093320107664308e3 /**< Geometri zed solar mass, m. = LAL_MSUN_SI / LAL_MPL_SI * LAL_LPL_SI */
#define LAL_MTSUN_SI 4.9254923218988636432342917247829673e-6 /**< Geometri zed solar mass, s. = LAL_MSUN_SI / LAL_MPL_SI * LAL_TPL_SI */ #define LAL_MTSUN_SI 4.9254923218988636432342917247829673e-6 /**< Geometri zed solar mass, s. = LAL_MSUN_SI / LAL_MPL_SI * LAL_TPL_SI */
#define LAL_LSUN_SI 3.846e26 /**< Solar luminosity, W */ #define LAL_LSUN_SI 3.846e26 /**< Solar luminosity, W */
#define LAL_AU_SI 1.4959787066e11 /**< Astronomical unit, m */ #define LAL_AU_SI 1.4959787066e11 /**< Astronomical unit, m */
#define LAL_PC_SI 3.0856775807e16 /**< Parsec, m */ #define LAL_PC_SI 3.0856775807e16 /**< Parsec, m */
#define LAL_YRTROP_SI 31556925.2 /**< Tropical year (1994), s */ #define LAL_YRTROP_SI 31556925.2 /**< Tropical year (1994), s */
#define LAL_YRSID_SI 31558149.8 /**< Sidereal year (1994), s */ #define LAL_YRSID_SI 31558149.8 /**< Sidereal year (1994), s */
skipping to change at line 193 skipping to change at line 193
#define LAL_VCBR_SI 3.695e5 /**< Solar velocity with respect to CBR, m s^ -1 */ #define LAL_VCBR_SI 3.695e5 /**< Solar velocity with respect to CBR, m s^ -1 */
#define LAL_RHOCBR_SI 4.177e-14 /**< Energy density of CBR, J m^-3 */ #define LAL_RHOCBR_SI 4.177e-14 /**< Energy density of CBR, J m^-3 */
#define LAL_NCBR_SI 4.109e8 /**< Number density of CBR photons, m^-3 */ #define LAL_NCBR_SI 4.109e8 /**< Number density of CBR photons, m^-3 */
#define LAL_SCBR_SI 3.993e-14 /**< Entropy density of CBR, J K^-1 m^-3 */ #define LAL_SCBR_SI 3.993e-14 /**< Entropy density of CBR, J K^-1 m^-3 */
/*@}*/ /*@}*/
/*@}*/ /*@}*/
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _LALCONSTANTS_H */ #endif /* _LALCONSTANTS_H */
 End of changes. 2 change blocks. 
5 lines changed or deleted 4 lines changed or added


 LALDatatypes.h   LALDatatypes.h 
skipping to change at line 27 skipping to change at line 27
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
// ---------- SEE LALDatatypes.dox for doxygen documentation ---------- // ---------- SEE LALDatatypes.dox for doxygen documentation ----------
#ifndef _LALDATATYPES_H #ifndef _LALDATATYPES_H
#define _LALDATATYPES_H #define _LALDATATYPES_H
#include <lal/LALAtomicDatatypes.h> #include <lal/LALAtomicDatatypes.h>
/** \addtogroup LALDatatypes */ /*@{*/ /** \addtogroup LALDatatypes *//*@{ */
/* ---------- constants ---------- */ /* ---------- constants ---------- */
/** Type size constants, see \ref LALDatatypes for more details. */ /** Type size constants, see \ref LALDatatypes for more details. */
enum enum {
{ LAL_1_BYTE_TYPE_SIZE = 000, /**< One byte size 00 = 0 */
LAL_1_BYTE_TYPE_SIZE = 000, /**< One byte size 00 = 0 */ LAL_2_BYTE_TYPE_SIZE = 001, /**< Two byte size 01 = 1 */
LAL_2_BYTE_TYPE_SIZE = 001, /**< Two byte size 01 = 1 */ LAL_4_BYTE_TYPE_SIZE = 002, /**< Four byte size 010 = 2 */
LAL_4_BYTE_TYPE_SIZE = 002, /**< Four byte size 010 = 2 */ LAL_8_BYTE_TYPE_SIZE = 003, /**< Eight byte size 011 = 3 */
LAL_8_BYTE_TYPE_SIZE = 003, /**< Eight byte size 011 = 3 */ LAL_16_BYTE_TYPE_SIZE = 004, /**< Sixteen byte size 0100 = 4 */
LAL_16_BYTE_TYPE_SIZE = 004, /**< Sixteen byte size 0100 = 4 */ LAL_TYPE_SIZE_MASK = 007 /**< Type size mask 0111 = 7 */
LAL_TYPE_SIZE_MASK = 007 /**< Type size mask 0111 = 7 */
}; };
/** Type flag constants, see \ref LALDatatypes for more details. */ /** Type flag constants, see \ref LALDatatypes for more details. */
enum enum {
{ LAL_FLTPT_TYPE_FLAG = 010, /**< Floating-point (vs integer) type 0100
LAL_FLTPT_TYPE_FLAG = 010, /**< Floating-point (vs integer) type 0100 0 = 8 */
0 = 8 */ LAL_CMPLX_TYPE_FLAG = 020, /**< Complex (vs real) type 010000 = 16 *
LAL_CMPLX_TYPE_FLAG = 020, /**< Complex (vs real) type 010000 = 16 * /
/ LAL_UNSGN_TYPE_FLAG = 040 /**< Unsigned (vs signed) type 0100000 = 3
LAL_UNSGN_TYPE_FLAG = 040 /**< Unsigned (vs signed) type 0100000 = 3 2 */
2 */
}; };
/** Type codes: use these type codes to identify a LAL atomic data type, se e \ref LALDatatypes for more details. */ /** Type codes: use these type codes to identify a LAL atomic data type, se e \ref LALDatatypes for more details. */
typedef enum typedef enum {
{ LAL_CHAR_TYPE_CODE = LAL_1_BYTE_TYPE_SIZE, /**< CHAR type code (0) */
LAL_CHAR_TYPE_CODE = LAL_1_BYTE_TYPE_SIZE, /**< CHAR type code (0) */ LAL_I2_TYPE_CODE = LAL_2_BYTE_TYPE_SIZE, /**< INT2 type code (1) */
LAL_I2_TYPE_CODE = LAL_2_BYTE_TYPE_SIZE, /**< INT2 type code (1) */ LAL_I4_TYPE_CODE = LAL_4_BYTE_TYPE_SIZE, /**< INT4 type code (2) */
LAL_I4_TYPE_CODE = LAL_4_BYTE_TYPE_SIZE, /**< INT4 type code (2) */ LAL_I8_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE, /**< INT8 type code (3) */
LAL_I8_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE, /**< INT8 type code (3) */ LAL_UCHAR_TYPE_CODE = LAL_1_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /**
LAL_UCHAR_TYPE_CODE = LAL_1_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /** < UCHAR type code (32) */
< UCHAR type code (32) */ LAL_U2_TYPE_CODE = LAL_2_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /**
LAL_U2_TYPE_CODE = LAL_2_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /** < UINT2 type code (33) */
< UINT2 type code (33) */ LAL_U4_TYPE_CODE = LAL_4_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /**
LAL_U4_TYPE_CODE = LAL_4_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /** < UINT4 type code (34) */
< UINT4 type code (34) */ LAL_U8_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /**
LAL_U8_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE | LAL_UNSGN_TYPE_FLAG, /** < UINT8 type code (35) */
< UINT8 type code (35) */ LAL_S_TYPE_CODE = LAL_4_BYTE_TYPE_SIZE | LAL_FLTPT_TYPE_FLAG, /**
LAL_S_TYPE_CODE = LAL_4_BYTE_TYPE_SIZE | LAL_FLTPT_TYPE_FLAG, /** < REAL4 type code (18) */
< REAL4 type code (18) */ LAL_D_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE | LAL_FLTPT_TYPE_FLAG, /**
LAL_D_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE | LAL_FLTPT_TYPE_FLAG, /** < REAL8 type code (19) */
< REAL8 type code (19) */ LAL_C_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE | LAL_CMPLX_TYPE_FLAG | LAL_FLTP
LAL_C_TYPE_CODE = LAL_8_BYTE_TYPE_SIZE | LAL_CMPLX_TYPE_FLAG | LAL_ T_TYPE_FLAG, /**< COMPLEX8 type code (27) */
FLTPT_TYPE_FLAG, /**< COMPLEX8 type code (27) */ LAL_Z_TYPE_CODE = LAL_16_BYTE_TYPE_SIZE | LAL_CMPLX_TYPE_FLAG | LAL_FLT
LAL_Z_TYPE_CODE = LAL_16_BYTE_TYPE_SIZE | LAL_CMPLX_TYPE_FLAG | LAL PT_TYPE_FLAG /**< COMPLEX16 type code (28) */
_FLTPT_TYPE_FLAG /**< COMPLEX16 type code (28) */ } LALTYPECODE;
}
LALTYPECODE;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
/* ---------- Vector types ---------- */ /* ---------- Vector types ---------- */
/** Vector of type CHAR, see \ref ss_Vector for more details. */ /** Vector of type CHAR, see \ref ss_Vector for more details. */
typedef struct typedef struct tagCHARVector {
tagCHARVector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(CHARVector, CHAR, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(CHAR, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ CHAR *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } CHARVector;
CHAR *data; /**< Pointer to the data array. */
}
CHARVector;
/** Vector of type CHAR*, ie 'strings', see \ref ss_Vector for more details . */ /** Vector of type CHAR*, ie 'strings', see \ref ss_Vector for more details . */
typedef struct tagLALStringVector { typedef struct tagLALStringVector {
#ifdef SWIG /* SWIG interface directives */ #ifdef SWIG /* SWIG interface directives */
SWIGLAL(1D_ARRAY(CHAR*, data, UINT4, length)); SWIGLAL(ARRAY_1D(LALStringVector, CHAR *, data, UINT4, length));
#endif /* SWIG */ #endif /* SWIG */
UINT4 length; /**< Number of elements in array. */ UINT4 length; /**< Number of elements in array. */
CHAR **data; /**< Pointer to the data array. */ CHAR **data; /**< Pointer to the data array. */
} LALStringVector; } LALStringVector;
/** Vector of type INT2, see \ref ss_Vector for more details. */ /** Vector of type INT2, see \ref ss_Vector for more details. */
typedef struct typedef struct tagINT2Vector {
tagINT2Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(INT2Vector, INT2, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(INT2, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ INT2 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } INT2Vector;
INT2 *data; /**< Pointer to the data array. */
}
INT2Vector;
/** Vector of type UINT2, see \ref ss_Vector for more details. */ /** Vector of type UINT2, see \ref ss_Vector for more details. */
typedef struct typedef struct tagUINT2Vector {
tagUINT2Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(UINT2Vector, UINT2, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(UINT2, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ UINT2 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } UINT2Vector;
UINT2 *data; /**< Pointer to the data array. */
}
UINT2Vector;
/** Vector of type INT4, see \ref ss_Vector for more details. */ /** Vector of type INT4, see \ref ss_Vector for more details. */
typedef struct typedef struct tagINT4Vector {
tagINT4Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(INT4Vector, INT4, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(INT4, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ INT4 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } INT4Vector;
INT4 *data; /**< Pointer to the data array. */
}
INT4Vector;
/** Vector of type UINT4, see \ref ss_Vector for more details. */ /** Vector of type UINT4, see \ref ss_Vector for more details. */
typedef struct typedef struct tagUINT4Vector {
tagUINT4Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(UINT4Vector, UINT4, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(UINT4, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ UINT4 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } UINT4Vector;
UINT4 *data; /**< Pointer to the data array. */
}
UINT4Vector;
/** Vector of type INT8, see \ref ss_Vector for more details. */ /** Vector of type INT8, see \ref ss_Vector for more details. */
typedef struct typedef struct tagINT8Vector {
tagINT8Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(INT8Vector, INT8, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(INT8, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ INT8 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } INT8Vector;
INT8 *data; /**< Pointer to the data array. */
}
INT8Vector;
/** Vector of type UINT8, see \ref ss_Vector for more details. */ /** Vector of type UINT8, see \ref ss_Vector for more details. */
typedef struct typedef struct tagUINT8Vector {
tagUINT8Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(UINT8Vector, UINT8, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(UINT8, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ UINT8 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } UINT8Vector;
UINT8 *data; /**< Pointer to the data array. */
}
UINT8Vector;
/** Vector of type REAL4, see \ref ss_Vector for more details. */ /** Vector of type REAL4, see \ref ss_Vector for more details. */
typedef struct typedef struct tagREAL4Vector {
tagREAL4Vector #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_1D(REAL4Vector, REAL4, data, UINT4, length));
#ifdef SWIG /* SWIG interface directives */ #endif /* SWIG */
SWIGLAL(1D_ARRAY(REAL4, data, UINT4, length)); UINT4 length; /**< Number of elements in array. */
#endif /* SWIG */ REAL4 *data; /**< Pointer to the data array. */
UINT4 length; /**< Number of elements in array. */ } REAL4Vector;
REAL4 *data; /**< Pointer to the data array. */
}
REAL4Vector;
/** Vector of type REAL8, see \ref ss_Vector for more details. */ /** Vector of type REAL8, see \ref ss_Vector for more details. */
typedef struct tagREAL8Vector typedef struct tagREAL8Vector {
{ #ifdef SWIG /* SWIG interface directives */
#ifdef SWIG /* SWIG interface directives */ SWIGLAL(ARRAY_1D(REAL8Vector, REAL8, data, UINT4, length));
SWIGLAL(1D_ARRAY(REAL8, data, UINT4, length)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< Number of elements in array. */
UINT4 length; /**< Number of elements in array. */ REAL8 *data; /**< Pointer to the data array. */
REAL8 *data; /**< Pointer to the data array. */ } REAL8Vector;
}
REAL8Vector;
/** Vector of type COMPLEX8, see \ref ss_Vector for more details. */ /** Vector of type COMPLEX8, see \ref ss_Vector for more details. */
typedef struct tagCOMPLEX8Vector typedef struct tagCOMPLEX8Vector {
{ #ifdef SWIG /* SWIG interface directives */
#ifdef SWIG /* SWIG interface directives */ SWIGLAL(ARRAY_1D(COMPLEX8Vector, COMPLEX8, data, UINT4, length));
SWIGLAL(1D_ARRAY(COMPLEX8, data, UINT4, length)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< Number of elements in array. */
UINT4 length; /**< Number of elements in array. */ COMPLEX8 *data; /**< Pointer to the data array. */
COMPLEX8 *data; /**< Pointer to the data array. */ } COMPLEX8Vector;
}
COMPLEX8Vector;
/** Vector of type COMPLEX16, see \ref ss_Vector for more details. */ /** Vector of type COMPLEX16, see \ref ss_Vector for more details. */
typedef struct tagCOMPLEX16Vector typedef struct tagCOMPLEX16Vector {
{ #ifdef SWIG /* SWIG interface directives */
#ifdef SWIG /* SWIG interface directives */ SWIGLAL(ARRAY_1D(COMPLEX16Vector, COMPLEX16, data, UINT4, length));
SWIGLAL(1D_ARRAY(COMPLEX16, data, UINT4, length)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< Number of elements in array. */
UINT4 length; /**< Number of elements in array. */ COMPLEX16 *data; /**< Pointer to the data array. */
COMPLEX16 *data; /**< Pointer to the data array. */ } COMPLEX16Vector;
}
COMPLEX16Vector;
/* ---------- Array types ---------- */ /* ---------- Array types ---------- */
/** Multidimentional array of INT2, see \ref ss_Array for more details. */ /** Multidimentional array of INT2, see \ref ss_Array for more details. */
typedef struct typedef struct tagINT2Array {
tagINT2Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ INT2 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } INT2Array;
INT2 *data; /**< Pointer to the data array. */
}
INT2Array;
/** Multidimentional array of UINT2, see \ref ss_Array for more details. */ /** Multidimentional array of UINT2, see \ref ss_Array for more details. */
typedef struct typedef struct tagUINT2Array {
tagUINT2Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ UINT2 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } UINT2Array;
UINT2 *data; /**< Pointer to the data array. */
}
UINT2Array;
/** Multidimentional array of INT4, see \ref ss_Array for more details. */ /** Multidimentional array of INT4, see \ref ss_Array for more details. */
typedef struct typedef struct tagINT4Array {
tagINT4Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ INT4 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } INT4Array;
INT4 *data; /**< Pointer to the data array. */
}
INT4Array;
/** Multidimentional array of UINT4, see \ref ss_Array for more details. */ /** Multidimentional array of UINT4, see \ref ss_Array for more details. */
typedef struct typedef struct tagUINT4Array {
tagUINT4Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ UINT4 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } UINT4Array;
UINT4 *data; /**< Pointer to the data array. */
}
UINT4Array;
/** Multidimentional array of INT8, see \ref ss_Array for more details. */ /** Multidimentional array of INT8, see \ref ss_Array for more details. */
typedef struct typedef struct tagINT8Array {
tagINT8Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ INT8 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } INT8Array;
INT8 *data; /**< Pointer to the data array. */
}
INT8Array;
/** Multidimentional array of UINT8, see \ref ss_Array for more details. */ /** Multidimentional array of UINT8, see \ref ss_Array for more details. */
typedef struct typedef struct tagUINT8Array {
tagUINT8Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ UINT8 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } UINT8Array;
UINT8 *data; /**< Pointer to the data array. */
}
UINT8Array;
/** Multidimentional array of REAL4, see \ref ss_Array for more details. */ /** Multidimentional array of REAL4, see \ref ss_Array for more details. */
typedef struct typedef struct tagREAL4Array {
tagREAL4Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ REAL4 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } REAL4Array;
REAL4 *data; /**< Pointer to the data array. */
}
REAL4Array;
/** Multidimentional array of REAL8, see \ref ss_Array for more details. */ /** Multidimentional array of REAL8, see \ref ss_Array for more details. */
typedef struct typedef struct tagREAL8Array {
tagREAL8Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ REAL8 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } REAL8Array;
REAL8 *data; /**< Pointer to the data array. */
}
REAL8Array;
/** Multidimentional array of COMPLEX8, see \ref ss_Array for more details. */ /** Multidimentional array of COMPLEX8, see \ref ss_Array for more details. */
typedef struct typedef struct tagCOMPLEX8Array {
tagCOMPLEX8Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ COMPLEX8 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } COMPLEX8Array;
COMPLEX8 *data; /**< Pointer to the data array. */
}
COMPLEX8Array;
/** Multidimentional array of COMPLEX16, see \ref ss_Array for more details . */ /** Multidimentional array of COMPLEX16, see \ref ss_Array for more details . */
typedef struct typedef struct tagCOMPLEX16Array {
tagCOMPLEX16Array UINT4Vector *dimLength; /**< Vector of array dimensions. */
{ COMPLEX16 *data; /**< Pointer to the data array. */
UINT4Vector *dimLength; /**< Vector of array dimensions. */ } COMPLEX16Array;
COMPLEX16 *data; /**< Pointer to the data array. */
} /* ---------- Sequence types ---------- */
COMPLEX16Array;
typedef CHARVector CHARSequence; /**< See \ref ss_Sequence for docum
entation */
typedef INT2Vector INT2Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef UINT2Vector UINT2Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef INT4Vector INT4Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef UINT4Vector UINT4Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef INT8Vector INT8Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef UINT8Vector UINT8Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef REAL4Vector REAL4Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef REAL8Vector REAL8Sequence; /**< See \ref ss_Sequence for docum
entation */
typedef COMPLEX8Vector COMPLEX8Sequence; /**< See \ref ss_Sequence for docu
mentation */
typedef COMPLEX16Vector COMPLEX16Sequence; /**< See \ref ss_Sequence for do
cumentation */
/* ---------- Sequence types ---------- */ /* ---------- VectorSequence types ---------- */
typedef CHARVector CHARSequence; /**< See \ref ss_Sequence for docume
ntation */
typedef INT2Vector INT2Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef UINT2Vector UINT2Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef INT4Vector INT4Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef UINT4Vector UINT4Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef INT8Vector INT8Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef UINT8Vector UINT8Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef REAL4Vector REAL4Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef REAL8Vector REAL8Sequence; /**< See \ref ss_Sequence for docume
ntation */
typedef COMPLEX8Vector COMPLEX8Sequence;/**< See \ref ss_Sequence for docu
mentation */
typedef COMPLEX16Vector COMPLEX16Sequence;/**< See \ref ss_Sequence for doc
umentation */
/* ---------- VectorSequence types ---------- */
/** Sequence of CHAR Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of CHAR Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagCHARVectorSequence {
tagCHARVectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(CHARVectorSequence, CHAR, data, UINT4, length, vectorL
#ifdef SWIG /* SWIG interface directives */ ength));
SWIGLAL(2D_ARRAY(CHAR, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ CHAR *data; /**< Pointer to the data array. Element \a i of vector \a
CHAR *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } CHARVectorSequence;
}
CHARVectorSequence;
/** Sequence of INT2 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of INT2 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagINT2VectorSequence {
tagINT2VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(INT2VectorSequence, INT2, data, UINT4, length, vectorL
#ifdef SWIG /* SWIG interface directives */ ength));
SWIGLAL(2D_ARRAY(INT2, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ INT2 *data; /**< Pointer to the data array. Element \a i of vector \a
INT2 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } INT2VectorSequence;
}
INT2VectorSequence;
/** Sequence of UINT2 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of UINT2 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagUINT2VectorSequence {
tagUINT2VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(UINT2VectorSequence, UINT2, data, UINT4, length, vecto
#ifdef SWIG /* SWIG interface directives */ rLength));
SWIGLAL(2D_ARRAY(UINT2, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ UINT2 *data; /**< Pointer to the data array. Element \a i of vector \a
UINT2 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } UINT2VectorSequence;
}
UINT2VectorSequence;
/** Sequence of INT4 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of INT4 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagINT4VectorSequence {
tagINT4VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(INT4VectorSequence, INT4, data, UINT4, length, vectorL
#ifdef SWIG /* SWIG interface directives */ ength));
SWIGLAL(2D_ARRAY(INT4, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ INT4 *data; /**< Pointer to the data array. Element \a i of vector \a
INT4 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } INT4VectorSequence;
}
INT4VectorSequence;
/** Sequence of UINT4 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of UINT4 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagUINT4VectorSequence {
tagUINT4VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(UINT4VectorSequence, UINT4, data, UINT4, length, vecto
#ifdef SWIG /* SWIG interface directives */ rLength));
SWIGLAL(2D_ARRAY(UINT4, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ UINT4 *data; /**< Pointer to the data array. Element \a i of vector \a
UINT4 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } UINT4VectorSequence;
}
UINT4VectorSequence;
/** Sequence of INT8 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of INT8 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagINT8VectorSequence {
tagINT8VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(INT8VectorSequence, INT8, data, UINT4, length, vectorL
#ifdef SWIG /* SWIG interface directives */ ength));
SWIGLAL(2D_ARRAY(INT8, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ INT8 *data; /**< Pointer to the data array. Element \a i of vector \a
INT8 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } INT8VectorSequence;
}
INT8VectorSequence;
/** Sequence of UINT8 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of UINT8 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagUINT8VectorSequence {
tagUINT8VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(UINT8VectorSequence, UINT8, data, UINT4, length, vecto
#ifdef SWIG /* SWIG interface directives */ rLength));
SWIGLAL(2D_ARRAY(UINT8, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ UINT8 *data; /**< Pointer to the data array. Element \a i of vector \a
UINT8 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } UINT8VectorSequence;
}
UINT8VectorSequence;
/** Sequence of REAL4 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of REAL4 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagREAL4VectorSequence {
tagREAL4VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(REAL4VectorSequence, REAL4, data, UINT4, length, vecto
#ifdef SWIG /* SWIG interface directives */ rLength));
SWIGLAL(2D_ARRAY(REAL4, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ REAL4 *data; /**< Pointer to the data array. Element \a i of vector \a
REAL4 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } REAL4VectorSequence;
}
REAL4VectorSequence;
/** Sequence of REAL8 Vectors, see \ref ss_VectorSequence for more details. */ /** Sequence of REAL8 Vectors, see \ref ss_VectorSequence for more details. */
typedef struct typedef struct tagREAL8VectorSequence {
tagREAL8VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(REAL8VectorSequence, REAL8, data, UINT4, length, vecto
#ifdef SWIG /* SWIG interface directives */ rLength));
SWIGLAL(2D_ARRAY(REAL8, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ REAL8 *data; /**< Pointer to the data array. Element \a i of vector \a
REAL8 *data; /**< Pointer to the data array. Element \a i of vector \a j j is \c data[ \a jn + \a i \c ]. */
is \c data[ \a jn + \a i \c ]. */ } REAL8VectorSequence;
}
REAL8VectorSequence;
/** Sequence of COMPLEX8 Vectors, see \ref ss_VectorSequence for more detai ls. */ /** Sequence of COMPLEX8 Vectors, see \ref ss_VectorSequence for more detai ls. */
typedef struct typedef struct tagCOMPLEX8VectorSequence {
tagCOMPLEX8VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(COMPLEX8VectorSequence, COMPLEX8, data, UINT4, length,
#ifdef SWIG /* SWIG interface directives */ vectorLength));
SWIGLAL(2D_ARRAY(COMPLEX8, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ COMPLEX8 *data; /**< Pointer to the data array. Element \a i of vector
COMPLEX8 *data; /**< Pointer to the data array. Element \a i of vector \ \a j is \c data[ \a jn + \a i \c ]. */
a j is \c data[ \a jn + \a i \c ]. */ } COMPLEX8VectorSequence;
}
COMPLEX8VectorSequence;
/** Sequence of COMPLEX16 Vectors, see \ref ss_VectorSequence for more deta ils. */ /** Sequence of COMPLEX16 Vectors, see \ref ss_VectorSequence for more deta ils. */
typedef struct typedef struct tagCOMPLEX16VectorSequence {
tagCOMPLEX16VectorSequence #ifdef SWIG /* SWIG interface directives */
{ SWIGLAL(ARRAY_2D(COMPLEX16VectorSequence, COMPLEX16, data, UINT4, lengt
#ifdef SWIG /* SWIG interface directives */ h, vectorLength));
SWIGLAL(2D_ARRAY(COMPLEX16, data, UINT4, length, vectorLength)); #endif /* SWIG */
#endif /* SWIG */ UINT4 length; /**< The number \a l of vectors. */
UINT4 length; /**< The number \a l of vectors. */ UINT4 vectorLength; /**< The length \a n of each vector. */
UINT4 vectorLength; /**< The length \a n of each vector. */ COMPLEX16 *data; /**< Pointer to the data array. Element \a i of vecto
COMPLEX16 *data; /**< Pointer to the data array. Element \a i of vector r \a j is \c data[ \a jn + \a i \c ]. */
\a j is \c data[ \a jn + \a i \c ]. */ } COMPLEX16VectorSequence;
}
COMPLEX16VectorSequence;
/* ---------- ArraySequence types ---------- */ /* ---------- ArraySequence types ---------- */
/** Sequence of INT2 multidimensional arrays, see \ref ss_ArraySequence for more details. */ /** Sequence of INT2 multidimensional arrays, see \ref ss_ArraySequence for more details. */
typedef struct typedef struct tagINT2ArraySequence {
tagINT2ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t INT2 *data; /**< Pointer to the data array. */
he array dimensions */ } INT2ArraySequence;
INT2 *data; /**< Pointer to the data array. */
}
INT2ArraySequence;
/** Sequence of UINT2 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */ /** Sequence of UINT2 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */
typedef struct typedef struct tagUINT2ArraySequence {
tagUINT2ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t UINT2 *data; /**< Pointer to the data array. */
he array dimensions */ } UINT2ArraySequence;
UINT2 *data; /**< Pointer to the data array. */
}
UINT2ArraySequence;
/** Sequence of INT4 multidimensional arrays, see \ref ss_ArraySequence for more details. */ /** Sequence of INT4 multidimensional arrays, see \ref ss_ArraySequence for more details. */
typedef struct typedef struct tagINT4ArraySequence {
tagINT4ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t INT4 *data; /**< Pointer to the data array. */
he array dimensions */ } INT4ArraySequence;
INT4 *data; /**< Pointer to the data array. */
}
INT4ArraySequence;
/** Sequence of UINT4 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */ /** Sequence of UINT4 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */
typedef struct typedef struct tagUINT4ArraySequence {
tagUINT4ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t UINT4 *data; /**< Pointer to the data array. */
he array dimensions */ } UINT4ArraySequence;
UINT4 *data; /**< Pointer to the data array. */
}
UINT4ArraySequence;
/** Sequence of INT8 multidimensional arrays, see \ref ss_ArraySequence for more details. */ /** Sequence of INT8 multidimensional arrays, see \ref ss_ArraySequence for more details. */
typedef struct typedef struct tagINT8ArraySequence {
tagINT8ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t INT8 *data; /**< Pointer to the data array. */
he array dimensions */ } INT8ArraySequence;
INT8 *data; /**< Pointer to the data array. */
}
INT8ArraySequence;
/** Sequence of UINT8 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */ /** Sequence of UINT8 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */
typedef struct typedef struct tagUINT8ArraySequence {
tagUINT8ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t UINT8 *data; /**< Pointer to the data array. */
he array dimensions */ } UINT8ArraySequence;
UINT8 *data; /**< Pointer to the data array. */
}
UINT8ArraySequence;
/** Sequence of REAL4 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */ /** Sequence of REAL4 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */
typedef struct typedef struct tagREAL4ArraySequence {
tagREAL4ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t REAL4 *data; /**< Pointer to the data array. */
he array dimensions */ } REAL4ArraySequence;
REAL4 *data; /**< Pointer to the data array. */
}
REAL4ArraySequence;
/** Sequence of REAL8 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */ /** Sequence of REAL8 multidimensional arrays, see \ref ss_ArraySequence fo r more details. */
typedef struct typedef struct tagREAL8ArraySequence {
tagREAL8ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t REAL8 *data; /**< Pointer to the data array. */
he array dimensions */ } REAL8ArraySequence;
REAL8 *data; /**< Pointer to the data array. */
}
REAL8ArraySequence;
/** Sequence of COMPLEX8 multidimensional arrays, see \ref ss_ArraySequence for more details. */ /** Sequence of COMPLEX8 multidimensional arrays, see \ref ss_ArraySequence for more details. */
typedef struct typedef struct tagCOMPLEX8ArraySequence {
tagCOMPLEX8ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t COMPLEX8 *data; /**< Pointer to the data array. */
he array dimensions */ } COMPLEX8ArraySequence;
COMPLEX8 *data; /**< Pointer to the data array. */
}
COMPLEX8ArraySequence;
/** Sequence of COMPLEX16 multidimensional arrays, see \ref ss_ArraySequenc e for more details. */ /** Sequence of COMPLEX16 multidimensional arrays, see \ref ss_ArraySequenc e for more details. */
typedef struct typedef struct tagCOMPLEX16ArraySequence {
tagCOMPLEX16ArraySequence UINT4 length; /**< The number \a l of vectors. */
{ UINT4 arrayDim; /**< The number of data \a N in each array element
UINT4 length; /**< The number \a l of vectors. */ (this is not the number \a m of indices). */
UINT4 arrayDim; /**< The number of data \a N in each array element UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing
(this is not the number \a m of indices). */ the array dimensions */
UINT4Vector *dimLength; /**< Pointer to a vector of length \a m storing t COMPLEX16 *data; /**< Pointer to the data array. */
he array dimensions */ } COMPLEX16ArraySequence;
COMPLEX16 *data; /**< Pointer to the data array. */
}
COMPLEX16ArraySequence;
/* ---------- Structured datatypes ---------- */ /* ---------- Structured datatypes ---------- */
/** Epoch relative to GPS epoch, see \ref ss_LIGOTimeGPS for more details * / /** Epoch relative to GPS epoch, see \ref ss_LIGOTimeGPS for more details * /
typedef struct typedef struct tagLIGOTimeGPS {
tagLIGOTimeGPS INT4 gpsSeconds; /**< Seconds since 0h UTC 6 Jan 1980. */
{ INT4 gpsNanoSeconds; /**< Residual nanoseconds. */
INT4 gpsSeconds; /**< Seconds since 0h UTC 6 Jan 1980. */ } LIGOTimeGPS;
INT4 gpsNanoSeconds; /**< Residual nanoseconds. */
}
LIGOTimeGPS;
/** Zero-initializer for LIGOTimeGPS structs */ /** Zero-initializer for LIGOTimeGPS structs */
#define LIGOTIMEGPSZERO { 0, 0 } #define LIGOTIMEGPSZERO { 0, 0 }
#ifdef SWIG /* SWIG interface directives */
/* *INDENT-OFF* */
%include <lal/lalswig_ligotimegps.i>
/* *INDENT-ON* */
#endif /* SWIG */
/** Indices of arrays corresponding to particular units. /** Indices of arrays corresponding to particular units.
* *
* The ::LALUnit structure has arrays giving the numerators * The ::LALUnit structure has arrays giving the numerators
* and denominators-minus-one of the powers of various units. * and denominators-minus-one of the powers of various units.
* These are the indices for the particular units. * These are the indices for the particular units.
*/ */
enum enum {
{ LALUnitIndexMeter, /**< The meter index. */
LALUnitIndexMeter, /**< The meter index. */ LALUnitIndexKiloGram, /**< The kilogram index. */
LALUnitIndexKiloGram, /**< The kilogram index. */ LALUnitIndexSecond, /**< The second index. */
LALUnitIndexSecond, /**< The second index. */ LALUnitIndexAmpere, /**< The ampere index. */
LALUnitIndexAmpere, /**< The ampere index. */ LALUnitIndexKelvin, /**< The kelvin index. */
LALUnitIndexKelvin, /**< The kelvin index. */ LALUnitIndexStrain, /**< The strain index. */
LALUnitIndexStrain, /**< The strain index. */ LALUnitIndexADCCount, /**< The ADC counts index. */
LALUnitIndexADCCount, /**< The ADC counts index. */ LALNumUnits /**< The number of units. */
LALNumUnits /**< The number of units. */
}; };
/** This structure stores units in the mksA system (plus Kelvin, Strain, /** This structure stores units in the mksA system (plus Kelvin, Strain,
* and ADC Count). It also stores an overall power-of-ten scaling factor. * and ADC Count). It also stores an overall power-of-ten scaling factor.
* Thus, the units are given by * Thus, the units are given by
* \f{equation}{ * \f{equation}{
* 10^p\times\textrm{m}^{N_0/(1+D_0)}\times\textrm{kg}^{N_1/(1+D_1)} * 10^p\times\textrm{m}^{N_0/(1+D_0)}\times\textrm{kg}^{N_1/(1+D_1)}
* \times\textrm{s}^{N_2/(1+D_2)}\times\textrm{A}^{N_3/(1+D_3)} * \times\textrm{s}^{N_2/(1+D_2)}\times\textrm{A}^{N_3/(1+D_3)}
* \times\textrm{K}^{N_4/(1+D_4)}\times\textrm{strain}^{N_5/(1+D_5)} * \times\textrm{K}^{N_4/(1+D_4)}\times\textrm{strain}^{N_5/(1+D_5)}
* \times\textrm{count}^{N_6/(1+D_6)} * \times\textrm{count}^{N_6/(1+D_6)}
* \f} * \f}
* *
*/ */
typedef struct typedef struct tagLALUnit {
tagLALUnit INT2 powerOfTen; /**< Overall power-of-ten scaling is 10^\c powerOfTen.
{ */
INT2 powerOfTen; /**< Overall power-of-ten scaling is 10^\c powerOfTen. INT2 unitNumerator[LALNumUnits]; /**< Array of unit power numerators. *
*/ /
INT2 unitNumerator[LALNumUnits]; /**< Array of unit power numerators. */ UINT2 unitDenominatorMinusOne[LALNumUnits]; /**< Array of unit power de
UINT2 unitDenominatorMinusOne[LALNumUnits]; /**< Array of unit power deno nominators-minus-one. */
minators-minus-one. */ } LALUnit;
}
LALUnit;
/* ---------- TimeSeries types ---------- */ /* ---------- TimeSeries types ---------- */
/** Length of name fields of LAL structured data types. */ /** Length of name fields of LAL structured data types. */
enum enumLALNameLength { LALNameLength = 64 }; enum enumLALNameLength { LALNameLength = 64 };
/** Time series of INT2 data, see \ref ss_TimeSeries for more details. */ /** Time series of INT2 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagINT2TimeSeries {
tagINT2TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time seri
LIGOTimeGPS epoch; /**< The start time of the time series. */ es in seconds. */
REAL8 deltaT; /**< The time step between samples of the time seri REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
es in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being INT2Sequence *data; /**< The sequence of sampled data. */
sampled. */ } INT2TimeSeries;
INT2Sequence *data; /**< The sequence of sampled data. */
}
INT2TimeSeries;
/** Time series of UINT2 data, see \ref ss_TimeSeries for more details. */ /** Time series of UINT2 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagUINT2TimeSeries {
tagUINT2TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time ser
LIGOTimeGPS epoch; /**< The start time of the time series. */ ies in seconds. */ REAL8 f0; /**< The heterodyning frequency, in Her
REAL8 deltaT; /**< The time step between samples of the time ser tz (zero if not heterodyned). */
ies in seconds. */ LALUnit sampleUnits; /**< The physical units of the quantity being
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not sampled. */
heterodyned). */ UINT2Sequence *data; /**< The sequence of sampled data. */
LALUnit sampleUnits; /**< The physical units of the quantity being } UINT2TimeSeries;
sampled. */
UINT2Sequence *data; /**< The sequence of sampled data. */
}
UINT2TimeSeries;
/** Time series of INT4 data, see \ref ss_TimeSeries for more details. */ /** Time series of INT4 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagINT4TimeSeries {
tagINT4TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time seri
LIGOTimeGPS epoch; /**< The start time of the time series. */ es in seconds. */
REAL8 deltaT; /**< The time step between samples of the time seri REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
es in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being INT4Sequence *data; /**< The sequence of sampled data. */
sampled. */ } INT4TimeSeries;
INT4Sequence *data; /**< The sequence of sampled data. */
}
INT4TimeSeries;
/** Time series of UINT4 data, see \ref ss_TimeSeries for more details. */ /** Time series of UINT4 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagUINT4TimeSeries {
tagUINT4TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time ser
LIGOTimeGPS epoch; /**< The start time of the time series. */ ies in seconds. */
REAL8 deltaT; /**< The time step between samples of the time ser REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
ies in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being UINT4Sequence *data; /**< The sequence of sampled data. */
sampled. */ } UINT4TimeSeries;
UINT4Sequence *data; /**< The sequence of sampled data. */
}
UINT4TimeSeries;
/** Time series of INT8 data, see \ref ss_TimeSeries for more details. */ /** Time series of INT8 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagINT8TimeSeries {
tagINT8TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time seri
LIGOTimeGPS epoch; /**< The start time of the time series. */ es in seconds. */
REAL8 deltaT; /**< The time step between samples of the time seri REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
es in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being INT8Sequence *data; /**< The sequence of sampled data. */
sampled. */ } INT8TimeSeries;
INT8Sequence *data; /**< The sequence of sampled data. */
}
INT8TimeSeries;
/** Time series of UINT8 data, see \ref ss_TimeSeries for more details. */ /** Time series of UINT8 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagUINT8TimeSeries {
tagUINT8TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time ser
LIGOTimeGPS epoch; /**< The start time of the time series. */ ies in seconds. */
REAL8 deltaT; /**< The time step between samples of the time ser REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
ies in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being UINT8Sequence *data; /**< The sequence of sampled data. */
sampled. */ } UINT8TimeSeries;
UINT8Sequence *data; /**< The sequence of sampled data. */
}
UINT8TimeSeries;
/** Time series of REAL4 data, see \ref ss_TimeSeries for more details. */ /** Time series of REAL4 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagREAL4TimeSeries {
tagREAL4TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time ser
LIGOTimeGPS epoch; /**< The start time of the time series. */ ies in seconds. */
REAL8 deltaT; /**< The time step between samples of the time ser REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
ies in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being REAL4Sequence *data; /**< The sequence of sampled data. */
sampled. */ } REAL4TimeSeries;
REAL4Sequence *data; /**< The sequence of sampled data. */
}
REAL4TimeSeries;
/** Time series of REAL8 data, see \ref ss_TimeSeries for more details. */ /** Time series of REAL8 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagREAL8TimeSeries {
tagREAL8TimeSeries CHAR name[LALNameLength]; /**< The name of the time series. */
{ LIGOTimeGPS epoch; /**< The start time of the time series. */
CHAR name[LALNameLength]; /**< The name of the time series. */ REAL8 deltaT; /**< The time step between samples of the time ser
LIGOTimeGPS epoch; /**< The start time of the time series. */ ies in seconds. */
REAL8 deltaT; /**< The time step between samples of the time ser REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not
ies in seconds. */ heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if not LALUnit sampleUnits; /**< The physical units of the quantity being
heterodyned). */ sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity being REAL8Sequence *data; /**< The sequence of sampled data. */
sampled. */ } REAL8TimeSeries;
REAL8Sequence *data; /**< The sequence of sampled data. */
}
REAL8TimeSeries;
/** Time series of COMPLEX8 data, see \ref ss_TimeSeries for more details. */ /** Time series of COMPLEX8 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagCOMPLEX8TimeSeries {
tagCOMPLEX8TimeSeries CHAR name[LALNameLength]; /**< The name of the time series.
{ */
CHAR name[LALNameLength]; /**< The name of the time series. LIGOTimeGPS epoch; /**< The start time of the time series. */
*/ REAL8 deltaT; /**< The time step between samples of the time
LIGOTimeGPS epoch; /**< The start time of the time series. */ series in seconds. */
REAL8 deltaT; /**< The time step between samples of the time REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if
series in seconds. */ not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if LALUnit sampleUnits; /**< The physical units of the quantity be
not heterodyned). */ ing sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity be COMPLEX8Sequence *data; /**< The sequence of sampled data. */
ing sampled. */ } COMPLEX8TimeSeries;
COMPLEX8Sequence *data; /**< The sequence of sampled data. */
}
COMPLEX8TimeSeries;
/** Time series of COMPLEX16 data, see \ref ss_TimeSeries for more details. */ /** Time series of COMPLEX16 data, see \ref ss_TimeSeries for more details. */
typedef struct typedef struct tagCOMPLEX16TimeSeries {
tagCOMPLEX16TimeSeries CHAR name[LALNameLength]; /**< The name of the time series.
{ */
CHAR name[LALNameLength]; /**< The name of the time series. LIGOTimeGPS epoch; /**< The start time of the time series. */
*/ REAL8 deltaT; /**< The time step between samples of the time
LIGOTimeGPS epoch; /**< The start time of the time series. */ series in seconds. */
REAL8 deltaT; /**< The time step between samples of the time REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if
series in seconds. */ not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero if LALUnit sampleUnits; /**< The physical units of the quantity b
not heterodyned). */ eing sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity b COMPLEX16Sequence *data; /**< The sequence of sampled data. */
eing sampled. */ } COMPLEX16TimeSeries;
COMPLEX16Sequence *data; /**< The sequence of sampled data. */
}
COMPLEX16TimeSeries;
/* ---------- TimeVectorSeries types ---------- */ /* ---------- TimeVectorSeries types ---------- */
/** Time series of INT2 vectors, see \ref ss_TimeVectorSeries for more deta ils. */ /** Time series of INT2 vectors, see \ref ss_TimeVectorSeries for more deta ils. */
typedef struct typedef struct tagINT2TimeVectorSeries {
tagINT2TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity INT2VectorSequence *data; /**< The sequence of sampled data vectors. */
being sampled. */ } INT2TimeVectorSeries;
INT2VectorSequence *data; /**< The sequence of sampled data vectors. */
}
INT2TimeVectorSeries;
/** Time series of UINT2 vectors, see \ref ss_TimeVectorSeries for more det ails. */ /** Time series of UINT2 vectors, see \ref ss_TimeVectorSeries for more det ails. */
typedef struct typedef struct tagUINT2TimeVectorSeries {
tagUINT2TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity UINT2VectorSequence *data; /**< The sequence of sampled data vectors. *
being sampled. */ /
UINT2VectorSequence *data; /**< The sequence of sampled data vectors. */ } UINT2TimeVectorSeries;
}
UINT2TimeVectorSeries;
/** Time series of INT4 vectors, see \ref ss_TimeVectorSeries for more deta ils. */ /** Time series of INT4 vectors, see \ref ss_TimeVectorSeries for more deta ils. */
typedef struct typedef struct tagINT4TimeVectorSeries {
tagINT4TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity INT4VectorSequence *data; /**< The sequence of sampled data vectors. */
being sampled. */ } INT4TimeVectorSeries;
INT4VectorSequence *data; /**< The sequence of sampled data vectors. */
}
INT4TimeVectorSeries;
/** Time series of UINT4 vectors, see \ref ss_TimeVectorSeries for more det ails. */ /** Time series of UINT4 vectors, see \ref ss_TimeVectorSeries for more det ails. */
typedef struct typedef struct tagUINT4TimeVectorSeries {
tagUINT4TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity UINT4VectorSequence *data; /**< The sequence of sampled data vectors. *
being sampled. */ /
UINT4VectorSequence *data; /**< The sequence of sampled data vectors. */ } UINT4TimeVectorSeries;
}
UINT4TimeVectorSeries;
/** Time series of INT8 vectors, see \ref ss_TimeVectorSeries for more deta ils. */ /** Time series of INT8 vectors, see \ref ss_TimeVectorSeries for more deta ils. */
typedef struct typedef struct tagINT8TimeVectorSeries {
tagINT8TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity INT8VectorSequence *data; /**< The sequence of sampled data vectors. */
being sampled. */ } INT8TimeVectorSeries;
INT8VectorSequence *data; /**< The sequence of sampled data vectors. */
}
INT8TimeVectorSeries;
/** Time series of UINT8 vectors, see \ref ss_TimeVectorSeries for more det ails. */ /** Time series of UINT8 vectors, see \ref ss_TimeVectorSeries for more det ails. */
typedef struct typedef struct tagUINT8TimeVectorSeries {
tagUINT8TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity UINT8VectorSequence *data; /**< The sequence of sampled data vectors. *
being sampled. */ /
UINT8VectorSequence *data; /**< The sequence of sampled data vectors. */ } UINT8TimeVectorSeries;
}
UINT8TimeVectorSeries;
/** Time series of REAL4 vectors, see \ref ss_TimeVectorSeries for more det ails. */ /** Time series of REAL4 vectors, see \ref ss_TimeVectorSeries for more det ails. */
typedef struct typedef struct tagREAL4TimeVectorSeries {
tagREAL4TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity REAL4VectorSequence *data; /**< The sequence of sampled data vectors. *
being sampled. */ /
REAL4VectorSequence *data; /**< The sequence of sampled data vectors. */ } REAL4TimeVectorSeries;
}
REAL4TimeVectorSeries;
/** Time series of REAL8 vectors, see \ref ss_TimeVectorSeries for more det ails. */ /** Time series of REAL8 vectors, see \ref ss_TimeVectorSeries for more det ails. */
typedef struct typedef struct tagREAL8TimeVectorSeries {
tagREAL8TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time serie
{ s of vectors. */
CHAR name[LALNameLength]; /**< The name of the time serie LIGOTimeGPS epoch; /**< The start time of the time series of vec
s of vectors. */ tors. */
LIGOTimeGPS epoch; /**< The start time of the time series of vec REAL8 deltaT; /**< The time step between samples of the ti
tors. */ me series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of the ti REAL8 f0; /**< The heterodyning frequency, in Hertz (zero
me series of vectors in seconds. */ if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (zero LALUnit sampleUnits; /**< The physical units of the quantity
if not heterodyned). */ being sampled. */
LALUnit sampleUnits; /**< The physical units of the quantity REAL8VectorSequence *data; /**< The sequence of sampled data vectors. *
being sampled. */ /
REAL8VectorSequence *data; /**< The sequence of sampled data vectors. */ } REAL8TimeVectorSeries;
}
REAL8TimeVectorSeries;
/** Time series of COMPLEX8 vectors, see \ref ss_TimeVectorSeries for more details. */ /** Time series of COMPLEX8 vectors, see \ref ss_TimeVectorSeries for more details. */
typedef struct typedef struct tagCOMPLEX8TimeVectorSeries {
tagCOMPLEX8TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time s
{ eries of vectors. */
CHAR name[LALNameLength]; /**< The name of the time s LIGOTimeGPS epoch; /**< The start time of the time series of
eries of vectors. */ vectors. */
LIGOTimeGPS epoch; /**< The start time of the time series of REAL8 deltaT; /**< The time step between samples of th
vectors. */ e time series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of th REAL8 f0; /**< The heterodyning frequency, in Hertz (z
e time series of vectors in seconds. */ ero if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz (z LALUnit sampleUnits; /**< The physical units of the quan
ero if not heterodyned). */ tity being sampled. */
LALUnit sampleUnits; /**< The physical units of the quan COMPLEX8VectorSequence *data; /**< The sequence of sampled data vectors
tity being sampled. */ . */
COMPLEX8VectorSequence *data; /**< The sequence of sampled data vectors. } COMPLEX8TimeVectorSeries;
*/
}
COMPLEX8TimeVectorSeries;
/** Time series of COMPLEX16 vectors, see \ref ss_TimeVectorSeries for more details. */ /** Time series of COMPLEX16 vectors, see \ref ss_TimeVectorSeries for more details. */
typedef struct typedef struct tagCOMPLEX16TimeVectorSeries {
tagCOMPLEX16TimeVectorSeries CHAR name[LALNameLength]; /**< The name of the time
{ series of vectors. */
CHAR name[LALNameLength]; /**< The name of the time LIGOTimeGPS epoch; /**< The start time of the time series o
series of vectors. */ f vectors. */
LIGOTimeGPS epoch; /**< The start time of the time series o REAL8 deltaT; /**< The time step between samples of t
f vectors. */ he time series of vectors in seconds. */
REAL8 deltaT; /**< The time step between samples of t REAL8 f0; /**< The heterodyning frequency, in Hertz (
he time series of vectors in seconds. */ zero if not heterodyned). */
REAL8 f0; /**< The heterodyning frequency, in Hertz ( LALUnit sampleUnits; /**< The physical units of the qua
zero if not heterodyned). */ ntity being sampled. */
LALUnit sampleUnits; /**< The physical units of the qua COMPLEX16VectorSequence *data; /**< The sequence of sampled data vector
ntity being sampled. */ s. */
COMPLEX16VectorSequence *data; /**< The sequence of sampled data vectors } COMPLEX16TimeVectorSeries;
. */
}
COMPLEX16TimeVectorSeries;
/* ---------- TimeArraySeries ---------- */ /* ---------- TimeArraySeries ---------- */
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagINT2TimeArraySeries {
tagINT2TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; INT2ArraySequence *data;
LALUnit sampleUnits; } INT2TimeArraySeries;
INT2ArraySequence *data;
}
INT2TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagUINT2TimeArraySeries {
tagUINT2TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; UINT2ArraySequence *data;
LALUnit sampleUnits; } UINT2TimeArraySeries;
UINT2ArraySequence *data;
}
UINT2TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagINT4TimeArraySeries {
tagINT4TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; INT4ArraySequence *data;
LALUnit sampleUnits; } INT4TimeArraySeries;
INT4ArraySequence *data;
}
INT4TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagUINT4TimeArraySeries {
tagUINT4TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; UINT4ArraySequence *data;
LALUnit sampleUnits; } UINT4TimeArraySeries;
UINT4ArraySequence *data;
}
UINT4TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagINT8TimeArraySeries {
tagINT8TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; INT8ArraySequence *data;
LALUnit sampleUnits; } INT8TimeArraySeries;
INT8ArraySequence *data;
}
INT8TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagUINT8TimeArraySeries {
tagUINT8TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; UINT8ArraySequence *data;
LALUnit sampleUnits; } UINT8TimeArraySeries;
UINT8ArraySequence *data;
}
UINT8TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagREAL4TimeArraySeries {
tagREAL4TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; REAL4ArraySequence *data;
LALUnit sampleUnits; } REAL4TimeArraySeries;
REAL4ArraySequence *data;
}
REAL4TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagREAL8TimeArraySeries {
tagREAL8TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; REAL8ArraySequence *data;
LALUnit sampleUnits; } REAL8TimeArraySeries;
REAL8ArraySequence *data;
}
REAL8TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagCOMPLEX8TimeArraySeries {
tagCOMPLEX8TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; COMPLEX8ArraySequence *data;
LALUnit sampleUnits; } COMPLEX8TimeArraySeries;
COMPLEX8ArraySequence *data;
}
COMPLEX8TimeArraySeries;
/** See \ref ss_TimeArraySeries for documentation */ /** See \ref ss_TimeArraySeries for documentation */
typedef struct typedef struct tagCOMPLEX16TimeArraySeries {
tagCOMPLEX16TimeArraySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 deltaT;
LIGOTimeGPS epoch; REAL8 f0;
REAL8 deltaT; LALUnit sampleUnits;
REAL8 f0; COMPLEX16ArraySequence *data;
LALUnit sampleUnits; } COMPLEX16TimeArraySeries;
COMPLEX16ArraySequence *data;
}
COMPLEX16TimeArraySeries;
/* ---------- FrequencySeries types ---------- */ /* ---------- FrequencySeries types ---------- */
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagINT2FrequencySeries {
tagINT2FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; INT2Sequence *data;
LALUnit sampleUnits; } INT2FrequencySeries;
INT2Sequence *data;
}
INT2FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagUINT2FrequencySeries {
tagUINT2FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; UINT2Sequence *data;
LALUnit sampleUnits; } UINT2FrequencySeries;
UINT2Sequence *data;
}
UINT2FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagINT4FrequencySeries {
tagINT4FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; INT4Sequence *data;
LALUnit sampleUnits; } INT4FrequencySeries;
INT4Sequence *data;
}
INT4FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagUINT4FrequencySeries {
tagUINT4FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; UINT4Sequence *data;
LALUnit sampleUnits; } UINT4FrequencySeries;
UINT4Sequence *data;
}
UINT4FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagINT8FrequencySeries {
tagINT8FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; INT8Sequence *data;
LALUnit sampleUnits; } INT8FrequencySeries;
INT8Sequence *data;
}
INT8FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagUINT8FrequencySeries {
tagUINT8FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; UINT8Sequence *data;
LALUnit sampleUnits; } UINT8FrequencySeries;
UINT8Sequence *data;
}
UINT8FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagREAL4FrequencySeries {
tagREAL4FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; REAL4Sequence *data;
LALUnit sampleUnits; } REAL4FrequencySeries;
REAL4Sequence *data;
}
REAL4FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagREAL8FrequencySeries {
tagREAL8FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; REAL8Sequence *data;
LALUnit sampleUnits; } REAL8FrequencySeries;
REAL8Sequence *data;
}
REAL8FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagCOMPLEX8FrequencySeries {
tagCOMPLEX8FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; COMPLEX8Sequence *data;
LALUnit sampleUnits; } COMPLEX8FrequencySeries;
COMPLEX8Sequence *data;
}
COMPLEX8FrequencySeries;
/** See \ref ss_FrequencySeries for documentation */ /** See \ref ss_FrequencySeries for documentation */
typedef struct typedef struct tagCOMPLEX16FrequencySeries {
tagCOMPLEX16FrequencySeries CHAR name[LALNameLength];
{ LIGOTimeGPS epoch;
CHAR name[LALNameLength]; REAL8 f0;
LIGOTimeGPS epoch; REAL8 deltaF;
REAL8 f0; LALUnit sampleUnits;
REAL8 deltaF; COMPLEX16Sequence *data;
LALUnit sampleUnits; } COMPLEX16FrequencySeries;
COMPLEX16Sequence *data;
}
COMPLEX16FrequencySeries;
/* ---------- ZPGFilter types ---------- */ /* ---------- ZPGFilter types ---------- */
/** See \ref ss_ZPGFilter for details */ /** See \ref ss_ZPGFilter for details */
typedef struct typedef struct tagCOMPLEX8ZPGFilter {
tagCOMPLEX8ZPGFilter CHAR name[LALNameLength];
{ REAL8 deltaT;
CHAR name[LALNameLength]; COMPLEX8Vector *zeros;
REAL8 deltaT; COMPLEX8Vector *poles;
COMPLEX8Vector *zeros; COMPLEX8 gain;
COMPLEX8Vector *poles; } COMPLEX8ZPGFilter;
COMPLEX8 gain;
}
COMPLEX8ZPGFilter;
/** See \ref ss_ZPGFilter for details */ /** See \ref ss_ZPGFilter for details */
typedef struct typedef struct tagCOMPLEX16ZPGFilter {
tagCOMPLEX16ZPGFilter CHAR name[LALNameLength];
{ REAL8 deltaT;
CHAR name[LALNameLength]; COMPLEX16Vector *zeros;
REAL8 deltaT; COMPLEX16Vector *poles;
COMPLEX16Vector *zeros; COMPLEX16 gain;
COMPLEX16Vector *poles; } COMPLEX16ZPGFilter;
COMPLEX16 gain;
}
COMPLEX16ZPGFilter;
/*@}*/ // end of LALDatatypes documentation group /*@} */// end of LALDatatypes documentation group
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
/** \ingroup LALStatusMacros_h /** \ingroup LALStatusMacros_h
* \brief LAL status structure, see \ref ss_LALStatus for more details. * \brief LAL status structure, see \ref ss_LALStatus for more details.
*/ */
typedef struct typedef struct tagLALStatus {
tagLALStatus INT4 statusCode; /**< A numerical code ident
{ ifying the type of error, or 0 for nominal status; Negative values are rese
INT4 statusCode; /**< A numerical code identi rved for certain standard error types */
fying the type of error, or 0 for nominal status; Negative values are reser const CHAR *statusDescription; /**< An explanatory string
ved for certain standard error types */ corresponding to the numerical status code */
const CHAR *statusDescription; /**< An explanatory string c volatile const CHAR *Id; /**< A character string ide
orresponding to the numerical status code */ ntifying the source file and version number of the function being reported
volatile const CHAR *Id; /**< A character string iden on */
tifying the source file and version number of the function being reported o const CHAR *function; /**< The name of the functi
n */ on */
const CHAR *function; /**< The name of the functio const CHAR *file; /**< The name of the source
n */ file containing the function code */
const CHAR *file; /**< The name of the source INT4 line; /**< The line number in the
file containing the function code */ source file where the current \c statusCode was set */
INT4 line; /**< The line number in the struct tagLALStatus *statusPtr; /**< Pointer to the next no
source file where the current \c statusCode was set */ de in the list; \c NULL if this function is not reporting a subroutine erro
struct tagLALStatus *statusPtr; /**< Pointer to the next nod r */
e in the list; \c NULL if this function is not reporting a subroutine error INT4 level; /**< The nested-function le
*/ vel where any error was reported */
INT4 level; /**< The nested-function lev } LALStatus;
el where any error was reported */
}
LALStatus;
#endif /* SWIG */ #endif /* SWIG */
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALDATATYPES_H */ #endif /* _LALDATATYPES_H */
 End of changes. 105 change blocks. 
1093 lines changed or deleted 856 lines changed or added


 LALError.h   LALError.h 
skipping to change at line 20 skipping to change at line 20
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with with program; see the file COPYING. If not, write to the * along with with program; see the file COPYING. If not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
// ---------- SEE LALError.dox for doxygen documentation ---------- /* ---------- SEE LALError.dox for doxygen documentation ---------- */
#ifndef _LALERROR_H #ifndef _LALERROR_H
#define _LALERROR_H #define _LALERROR_H
#include <lal/LALDebugLevel.h>
#include <lal/LALDatatypes.h> #include <lal/LALDatatypes.h>
#include <lal/XLALError.h> #include <lal/XLALError.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
/* lalDebugLevel bit field values: */ #ifndef SWIG /* exclude from SWIG interface */
enum
{
LALNDEBUG = 0,
LALERROR = 1,
LALWARNING = 2,
LALINFO = 4,
LALTRACE = 8,
LALMEMINFO = 16,
LALNMEMDBG = 32,
LALNMEMPAD = 64,
LALNMEMTRK = 128,
LALMEMDBG = 16384 /* convenience: don't combine with other bits */
};
/* composite lalDebugLevels: */ extern int (*lalRaiseHook) (int, const char *, ...);
enum { LALMSGLVL1 = LALERROR }; extern void (*lalAbortHook) (const char *, ...);
enum { LALMSGLVL2 = LALERROR | LALWARNING };
enum { LALMSGLVL3 = LALERROR | LALWARNING | LALINFO };
enum { LALMEMTRACE = LALTRACE | LALMEMINFO };
enum { LALALLDBG = ~( LALNMEMDBG | LALNMEMPAD | LALNMEMTRK ) };
#ifndef SWIG /* exclude from SWIG interface */ /** \addtogroup LALError_h *//*@{ */
extern int ( *lalRaiseHook )( int, const char *, ... ); int LALPrintError(const char *fmt, ...);
extern void ( *lalAbortHook )( const char *, ... );
/** \addtogroup LALError_h */ /*@{*/ int LALRaise(int sig, const char *fmt, ...);
int
LALPrintError( const char *fmt, ... );
int void LALAbort(const char *fmt, ...);
LALRaise( int sig, const char *fmt, ... );
void int LALError(LALStatus * status, const char *statement);
LALAbort( const char *fmt, ... );
int
LALError( LALStatus *status, const char *statement );
int int LALWarning(LALStatus * status, const char *warning);
LALWarning( LALStatus *status, const char *warning );
int int LALInfo(LALStatus * status, const char *info);
LALInfo( LALStatus *status, const char *info );
int int LALTrace(LALStatus * status, int exitflg);
LALTrace( LALStatus *status, int exitflg );
/*@}*/ /*@}*/
int int
LALInitStatus( LALStatus *status, const char *function, const char *id, LALInitStatus(LALStatus * status, const char *function,
const char *file, const int line ); const char *id, const char *file, const int line);
int int LALPrepareReturn(LALStatus * status, const char *file, const int line);
LALPrepareReturn( LALStatus *status, const char *file, const int line );
int int
LALAttatchStatusPtr( LALStatus *status, const char *file, const int line ); LALAttatchStatusPtr(LALStatus * status, const char *file, const int line);
int int
LALDetatchStatusPtr( LALStatus *status, const char *file, const int line ); LALDetatchStatusPtr(LALStatus * status, const char *file, const int line);
int int
LALPrepareAbort( LALStatus *status, const INT4 code, const char *mesg, LALPrepareAbort(LALStatus * status, const INT4 code, const char *mesg,
const char *file, const int line ); const char *file, const int line);
int int
LALPrepareAssertFail( LALStatus *status, const INT4 code, const char *mesg, LALPrepareAssertFail(LALStatus * status, const INT4 code,
const char *statement, const char *file, const char *mesg, const char *statement,
const int line ); const char *file, const int line);
int int
LALCheckStatusPtr( LALStatus *status, const char *statement, const char *fi LALCheckStatusPtr(LALStatus * status, const char *statement,
le, const char *file, const int line);
const int line );
#ifdef NOLALMACROS #ifdef NOLALMACROS
void void FREESTATUSPTR(LALStatus * status);
FREESTATUSPTR( LALStatus *status );
void void REPORTSTATUS(LALStatus * status);
REPORTSTATUS( LALStatus *status );
#endif #endif
#ifdef NDEBUG #ifdef NDEBUG
#define LALError( statusptr, statement ) 0 #define LALError( statusptr, statement ) 0
#define LALWarning( statusptr, warning ) 0 #define LALWarning( statusptr, warning ) 0
#define LALInfo( statusptr, info ) 0 #define LALInfo( statusptr, info ) 0
#define LALTrace( statusptr, exitflg ) 0 #define LALTrace( statusptr, exitflg ) 0
skipping to change at line 167 skipping to change at line 140
(statusptr)->function, (statusptr)->file, (statusptr)->line, \ (statusptr)->function, (statusptr)->file, (statusptr)->line, \
(statusptr)->Id ) \ (statusptr)->Id ) \
: 0 ) : 0 )
#endif /* NOLALMACROS */ #endif /* NOLALMACROS */
#endif /* NDEBUG */ #endif /* NDEBUG */
#endif /* SWIG */ #endif /* SWIG */
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALERROR_H */ #endif /* _LALERROR_H */
 End of changes. 23 change blocks. 
59 lines changed or deleted 33 lines changed or added


 LALGSL.h   LALGSL.h 
skipping to change at line 127 skipping to change at line 127
#include <lal/LALMalloc.h> #include <lal/LALMalloc.h>
#include <lal/LALDatatypes.h> #include <lal/LALDatatypes.h>
#include <lal/LALError.h> #include <lal/LALError.h>
#include <lal/XLALGSL.h> #include <lal/XLALGSL.h>
#include <gsl/gsl_errno.h> #include <gsl/gsl_errno.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
extern LALStatus * lalGSLGlobalStatusPtr; extern LALStatus *lalGSLGlobalStatusPtr;
#endif /* SWIG */ #endif /* SWIG */
void void
LALGSLErrorHandler( LALGSLErrorHandler(const char *reason,
const char *reason, const char *file, int line, int errnum);
const char *file,
int line,
int errnum
);
#ifdef LAL_PTHREAD_LOCK #ifdef LAL_PTHREAD_LOCK
#include <pthread.h> #include <pthread.h>
extern pthread_mutex_t lalGSLPthreadMutex; extern pthread_mutex_t lalGSLPthreadMutex;
#define LALGSL_PTHREAD_MUTEX_LOCK pthread_mutex_lock( &lalGSLPthreadMutex ) #define LALGSL_PTHREAD_MUTEX_LOCK pthread_mutex_lock( &lalGSLPthreadMutex )
#define LALGSL_PTHREAD_MUTEX_UNLOCK pthread_mutex_unlock( &lalGSLPthreadMut ex ) #define LALGSL_PTHREAD_MUTEX_UNLOCK pthread_mutex_unlock( &lalGSLPthreadMut ex )
#else #else
#define LALGSL_PTHREAD_MUTEX_LOCK ((void)(0)) #define LALGSL_PTHREAD_MUTEX_LOCK ((void)(0))
#define LALGSL_PTHREAD_MUTEX_UNLOCK ((void)(0)) #define LALGSL_PTHREAD_MUTEX_UNLOCK ((void)(0))
#endif #endif
skipping to change at line 207 skipping to change at line 205
(void) LALError( statusptr, "Statement \"" #statement "\" failed:" ); \ (void) LALError( statusptr, "Statement \"" #statement "\" failed:" ); \
(void) LALTrace( statusptr, 1 ); \ (void) LALTrace( statusptr, 1 ); \
return; \ return; \
} \ } \
} \ } \
else \ else \
lalAbortHook( "Abort: CALLGSL, file %s, line %d\n" \ lalAbortHook( "Abort: CALLGSL, file %s, line %d\n" \
" Null status pointer passed to CALLGSL\n", \ " Null status pointer passed to CALLGSL\n", \
__FILE__, __LINE__ ) __FILE__, __LINE__ )
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALGSL_H */ #endif /* _LALGSL_H */
 End of changes. 5 change blocks. 
10 lines changed or deleted 9 lines changed or added


 LALMalloc.h   LALMalloc.h 
skipping to change at line 28 skipping to change at line 28
*/ */
#ifndef _LALMALLOC_H #ifndef _LALMALLOC_H
#define _LALMALLOC_H #define _LALMALLOC_H
#include <stddef.h> #include <stddef.h>
#include <lal/LALConfig.h> #include <lal/LALConfig.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
/** \addtogroup LALMalloc_h */ /*@{*/ /** \addtogroup LALMalloc_h *//*@{ */
void *XLALMalloc( size_t n ); void *XLALMalloc(size_t n);
void *XLALMallocLong( size_t n, const char *file, int line ); void *XLALMallocLong(size_t n, const char *file, int line);
void *XLALCalloc( size_t m, size_t n ); void *XLALCalloc(size_t m, size_t n);
void *XLALCallocLong( size_t m, size_t n, const char *file, int line ); void *XLALCallocLong(size_t m, size_t n, const char *file, int line);
void *XLALRealloc( void *p, size_t n ); void *XLALRealloc(void *p, size_t n);
void *XLALReallocLong( void *p, size_t n, const char *file, int line ); void *XLALReallocLong(void *p, size_t n, const char *file, int line);
void XLALFree( void *p ); void XLALFree(void *p);
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
#define XLALMalloc( n ) XLALMallocLong( n, __FILE__, __LINE__ ) #define XLALMalloc( n ) XLALMallocLong( n, __FILE__, __LINE__ )
#define XLALCalloc( m, n ) XLALCallocLong( m, n, __FILE__, __LINE__ ) #define XLALCalloc( m, n ) XLALCallocLong( m, n, __FILE__, __LINE__ )
#define XLALRealloc( p, n ) XLALReallocLong( p, n, __FILE__, __LINE__ ) #define XLALRealloc( p, n ) XLALReallocLong( p, n, __FILE__, __LINE__ )
#endif /* SWIG */ #endif /* SWIG */
/*@}*/ /*@}*/
#if defined NDEBUG || defined LAL_NDEBUG #if defined NDEBUG || defined LAL_NDEBUG
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
#define LALMalloc malloc #define LALMalloc malloc
#define LALMallocShort malloc #define LALMallocShort malloc
#define LALMallocLong( n, file, line ) malloc( n ) #define LALMallocLong( n, file, line ) malloc( n )
#define LALCalloc calloc #define LALCalloc calloc
#define LALCallocShort calloc #define LALCallocShort calloc
#define LALCallocLong( m, n, file, line ) calloc( m, n ) #define LALCallocLong( m, n, file, line ) calloc( m, n )
#define LALRealloc realloc #define LALRealloc realloc
#define LALReallocShort realloc #define LALReallocShort realloc
#define LALReallocLong( p, n, file, line ) realloc( p, n ) #define LALReallocLong( p, n, file, line ) realloc( p, n )
#define LALFree free #define LALFree free
#define LALCheckMemoryLeaks() #define LALCheckMemoryLeaks()
#endif /* SWIG */ #endif /* SWIG */
#else #else
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
#define LALMalloc( n ) LALMallocLong( n, __FILE__, __LINE__ ) #define LALMalloc( n ) LALMallocLong( n, __FILE__, __LINE__ )
#define LALCalloc( m, n ) LALCallocLong( m, n, __FILE__, __LINE__ ) #define LALCalloc( m, n ) LALCallocLong( m, n, __FILE__, __LINE__ )
#define LALRealloc( p, n ) LALReallocLong( p, n, __FILE__, __LINE__ ) #define LALRealloc( p, n ) LALReallocLong( p, n, __FILE__, __LINE__ )
#endif /* SWIG */ #endif /* SWIG */
/* global variables to assist in memory debugging */ /* global variables to assist in memory debugging */
/* watch the value of these variables to find a particular alloc/free */ /* watch the value of these variables to find a particular alloc/free */
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
extern char *lalMemDbgArgPtr; /* set to ptr arg in free or realloc */ extern char *lalMemDbgArgPtr; /* set to ptr arg in free or realloc */
extern char *lalMemDbgRetPtr; /* set to ptr returned in alloc functions extern char *lalMemDbgRetPtr; /* set to ptr returned in alloc functions *
*/ /
extern char *lalMemDbgPtr; /* set in both cases */ extern char *lalMemDbgPtr; /* set in both cases */
extern char *lalMemDbgUsrPtr; /* avaliable global memory pointer for use extern char *lalMemDbgUsrPtr; /* avaliable global memory pointer for user
r */ */
extern void **lalMemDbgUsrHndl; /* avaliable global memory handle for user extern void **lalMemDbgUsrHndl; /* avaliable global memory handle for user
*/ */
extern int lalIsMemDbgArgPtr; /* ( lalMemDbgUsrPtr == lalMemDbgArgPtr ) extern int lalIsMemDbgArgPtr; /* ( lalMemDbgUsrPtr == lalMemDbgArgPtr ) *
*/ /
extern int lalIsMemDbgRetPtr; /* ( lalMemDbgUsrPtr == lalMemDbgRetPtr ) extern int lalIsMemDbgRetPtr; /* ( lalMemDbgUsrPtr == lalMemDbgRetPtr ) *
*/ /
extern int lalIsMemDbgPtr; /* ( lalMemDbgUsrPtr == lalMemDbgPtr ) */ extern int lalIsMemDbgPtr; /* ( lalMemDbgUsrPtr == lalMemDbgPtr ) */
#endif /* SWIG */ #endif /* SWIG */
// ----- Prototypes /** \addtogroup LALMalloc_h *//*@{ */
/** \addtogroup LALMalloc_h */ /*@{*/ void *LALMallocShort(size_t n);
void *LALMallocShort( size_t n ); void *LALMallocLong(size_t n, const char *file, int line);
void *LALMallocLong( size_t n, const char *file, int line ); void *LALCallocShort(size_t m, size_t n);
void *LALCallocShort( size_t m, size_t n ); void LALFree(void *p);
void LALFree( void *p ); void *LALCallocLong(size_t m, size_t n, const char *file, int line);
void *LALCallocLong( size_t m, size_t n, const char *file, int line ); void *LALReallocShort(void *p, size_t n);
void *LALReallocShort( void *p, size_t n ); void *LALReallocLong(void *p, size_t n, const char *file, int line);
void *LALReallocLong( void *p, size_t n, const char *file, int line );
/*@}*/ /*@}*/
#endif /* NDEBUG || LAL_NDEBUG */ #endif /* NDEBUG || LAL_NDEBUG */
void (LALCheckMemoryLeaks)( void ); void (LALCheckMemoryLeaks) (void);
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALMALLOC_H */ #endif /* _LALMALLOC_H */
 End of changes. 9 change blocks. 
37 lines changed or deleted 39 lines changed or added


 LALStatusMacros.h   LALStatusMacros.h 
skipping to change at line 35 skipping to change at line 35
#include <lal/LALConfig.h> #include <lal/LALConfig.h>
#ifdef NDEBUG #ifdef NDEBUG
#ifndef LAL_NDEBUG #ifndef LAL_NDEBUG
#define LAL_NDEBUG #define LAL_NDEBUG
#endif #endif
#endif #endif
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <lal/LALDebugLevel.h>
#include <lal/LALMalloc.h> #include <lal/LALMalloc.h>
#include <lal/LALDatatypes.h> #include <lal/LALDatatypes.h>
#include <lal/LALError.h> #include <lal/LALError.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
extern int lalDebugLevel; /**< Global LAL debug level, see \ref ss_lal DebugLevel for more details */
extern const int lalNoDebug; extern const int lalNoDebug;
#define LAL_EXLAL 16384 #define LAL_EXLAL 16384
#define LAL_MSGEXLAL "Failure in an XLAL routine" #define LAL_MSGEXLAL "Failure in an XLAL routine"
#define ABORTXLAL(sp) ABORT(sp,LAL_EXLAL,LAL_MSGEXLAL) #define ABORTXLAL(sp) ABORT(sp,LAL_EXLAL,LAL_MSGEXLAL)
#ifndef NOLALMACROS #ifndef NOLALMACROS
#define INITSTATUS( statusptr ) \ #define INITSTATUS( statusptr ) \
do { if ( (statusptr) ) \ do { if ( (statusptr) ) \
skipping to change at line 263 skipping to change at line 265
} while ( 0 ) } while ( 0 )
#define SETSTATUSFILELINE( statusptr ) \ #define SETSTATUSFILELINE( statusptr ) \
( ( void ) ( (statusptr)->file = __FILE__, (statusptr)->line = __LINE__ ) ) ( ( void ) ( (statusptr)->file = __FILE__, (statusptr)->line = __LINE__ ) )
#define SETSTATUS( statusptr, code, mesg ) \ #define SETSTATUS( statusptr, code, mesg ) \
( SETSTATUSFILELINE( statusptr ), \ ( SETSTATUSFILELINE( statusptr ), \
(statusptr)->statusDescription = (mesg), \ (statusptr)->statusDescription = (mesg), \
(statusptr)->statusCode = (code) ) (statusptr)->statusCode = (code) )
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALSTATUSMACROS_H */ #endif /* _LALSTATUSMACROS_H */
 End of changes. 5 change blocks. 
3 lines changed or deleted 6 lines changed or added


 LALStdio.h   LALStdio.h 
skipping to change at line 41 skipping to change at line 41
*/ */
#ifndef _LALSTDIO_H #ifndef _LALSTDIO_H
#define _LALSTDIO_H #define _LALSTDIO_H
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
#include <inttypes.h> #include <inttypes.h>
#include <lal/LALConfig.h> #include <lal/LALConfig.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
#if LAL_BOINC_ENABLED #if LAL_BOINC_ENABLED
extern FILE* boinc_fopen(const char* path, const char* mode); extern FILE *boinc_fopen(const char *path, const char *mode);
#define LALFopen boinc_fopen #define LALFopen boinc_fopen
#else #else
#define LALFopen fopen #define LALFopen fopen
#endif #endif
#define LALFclose fclose #define LALFclose fclose
#define LAL_INT2_PRId PRId16 #define LAL_INT2_PRId PRId16
#define LAL_INT2_PRIi PRIi16 #define LAL_INT2_PRIi PRIi16
#define LAL_INT2_PRIo PRIo16 #define LAL_INT2_PRIo PRIo16
#define LAL_INT2_PRIu PRIu16 #define LAL_INT2_PRIu PRIu16
skipping to change at line 103 skipping to change at line 105
* either scanf or printf (decimal integers only) */ * either scanf or printf (decimal integers only) */
#define LAL_INT2_FORMAT LAL_INT2_SCNd #define LAL_INT2_FORMAT LAL_INT2_SCNd
#define LAL_INT4_FORMAT LAL_INT4_SCNd #define LAL_INT4_FORMAT LAL_INT4_SCNd
#define LAL_INT8_FORMAT LAL_INT8_SCNd #define LAL_INT8_FORMAT LAL_INT8_SCNd
#define LAL_UINT2_FORMAT LAL_INT2_SCNu #define LAL_UINT2_FORMAT LAL_INT2_SCNu
#define LAL_UINT4_FORMAT LAL_INT4_SCNu #define LAL_UINT4_FORMAT LAL_INT4_SCNu
#define LAL_UINT8_FORMAT LAL_INT8_SCNu #define LAL_UINT8_FORMAT LAL_INT8_SCNu
#define LAL_REAL4_FORMAT "g" #define LAL_REAL4_FORMAT "g"
#define LAL_REAL8_FORMAT "lg" #define LAL_REAL8_FORMAT "lg"
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALSTDIO_H */ #endif /* _LALSTDIO_H */
 End of changes. 5 change blocks. 
4 lines changed or deleted 7 lines changed or added


 LALString.h   LALString.h 
skipping to change at line 24 skipping to change at line 24
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with with program; see the file COPYING. If not, write to the * along with with program; see the file COPYING. If not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
#ifndef _LALSTRING_H #ifndef _LALSTRING_H
#define _LALSTRING_H #define _LALSTRING_H
#include <stddef.h> #include <stddef.h>
#include <lal/LALAtomicDatatypes.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
char * XLALStringAppend( char *s, const char *append ); char *XLALStringAppend(char *s, const char *append);
char * XLALStringDuplicate( const char *s ); char *XLALStringDuplicate(const char *s);
size_t XLALStringCopy( char *dst, const char *src, size_t size ); size_t XLALStringCopy(char *dst, const char *src, size_t size);
size_t XLALStringConcatenate( char *dst, const char *src, size_t size ); size_t XLALStringConcatenate(char *dst, const char *src, size_t size);
int XLALStringToLowerCase ( CHAR *string ); int XLALStringToLowerCase(CHAR * string);
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALSTRING_H */ #endif /* _LALSTRING_H */
 End of changes. 5 change blocks. 
9 lines changed or deleted 13 lines changed or added


 LALVCSInfo.h   LALVCSInfo.h 
skipping to change at line 33 skipping to change at line 33
#define _LALVCSINFO_H #define _LALVCSINFO_H
#include <lal/LALLibVCSInfo.h> #include <lal/LALLibVCSInfo.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* vcs information defines */ /* vcs information defines */
#define LAL_NAME "LAL" #define LAL_NAME "LAL"
#define LAL_VCS_ID "ac12d6c15bf45da08381cf3d1eb119d6b613e278" #define LAL_VCS_ID "93c2cc4647065f8954108d6fdb68b3497c5ee798"
#define LAL_VCS_DATE "2013-03-12 15:51:25 +0000" #define LAL_VCS_DATE "2013-06-27 15:59:46 +0000"
#define LAL_VCS_BRANCH "lalsuite-v6.15_release_prep" #define LAL_VCS_BRANCH "None"
#define LAL_VCS_TAG "None" #define LAL_VCS_TAG "lal-v6.11.0"
#define LAL_VCS_AUTHOR "Steffen Grunewald <steffen.grunewald@aei.mpg.de>" #define LAL_VCS_AUTHOR "Adam Mercer <adam.mercer@ligo.org>"
#define LAL_VCS_COMMITTER "Adam Mercer <adam.mercer@ligo.org>" #define LAL_VCS_COMMITTER "Adam Mercer <adam.mercer@ligo.org>"
#define LAL_VCS_STATUS "CLEAN: All modifications committed" #define LAL_VCS_STATUS "CLEAN: All modifications committed"
/* vcs information defines - identable*/ /* vcs information defines - identable*/
#define LAL_VCS_IDENT_ID "$" "LALId: ac12d6c15bf45da08381cf3d1eb119d6b613e2 #define LAL_VCS_IDENT_ID "$" "LALId: 93c2cc4647065f8954108d6fdb68b3497c5ee7
78 " "$" 98 " "$"
#define LAL_VCS_IDENT_DATE "$" "LALDate: 2013-03-12 15:51:25 +0000 " "$" #define LAL_VCS_IDENT_DATE "$" "LALDate: 2013-06-27 15:59:46 +0000 " "$"
#define LAL_VCS_IDENT_BRANCH "$" "LALBranch: lalsuite-v6.15_release_prep " #define LAL_VCS_IDENT_BRANCH "$" "LALBranch: None " "$"
"$" #define LAL_VCS_IDENT_TAG "$" "LALTag: lal-v6.11.0 " "$"
#define LAL_VCS_IDENT_TAG "$" "LALTag: None " "$" #define LAL_VCS_IDENT_AUTHOR "$" "LALAuthor: Adam Mercer <adam.mercer@ligo.
#define LAL_VCS_IDENT_AUTHOR "$" "LALAuthor: Steffen Grunewald <steffen.gru org> " "$"
newald@aei.mpg.de> " "$"
#define LAL_VCS_IDENT_COMMITTER "$" "LALCommitter: Adam Mercer <adam.mercer @ligo.org> " "$" #define LAL_VCS_IDENT_COMMITTER "$" "LALCommitter: Adam Mercer <adam.mercer @ligo.org> " "$"
#define LAL_VCS_IDENT_STATUS "$" "LALStatus: CLEAN: All modifications commi tted " "$" #define LAL_VCS_IDENT_STATUS "$" "LALStatus: CLEAN: All modifications commi tted " "$"
/* header vcs information structure */ /* header vcs information structure */
static const struct tagLALVCSInfo lalHeaderVCSInfo = { \ static const struct tagLALVCSInfo lalHeaderVCSInfo = { \
LAL_NAME, \ LAL_NAME, \
LAL_VERSION, \ LAL_VERSION, \
LAL_VCS_ID, \ LAL_VCS_ID, \
LAL_VCS_DATE, \ LAL_VCS_DATE, \
LAL_VCS_BRANCH, \ LAL_VCS_BRANCH, \
 End of changes. 2 change blocks. 
13 lines changed or deleted 12 lines changed or added


 LALVersion.h   LALVersion.h 
skipping to change at line 25 skipping to change at line 25
* along with with program; see the file COPYING. If not, write to the * along with with program; see the file COPYING. If not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
#ifndef _LALVERSION_H #ifndef _LALVERSION_H
#define _LALVERSION_H #define _LALVERSION_H
#include <lal/LALDatatypes.h> #include <lal/LALDatatypes.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
/** /**
\addtogroup LALVersion_h \addtogroup LALVersion_h
\brief Provides routines for reporting the LAL version. \brief Provides routines for reporting the LAL version.
\heading{Synopsis} \heading{Synopsis}
\code \code
#include <lal/LALVersion.h> #include <lal/LALVersion.h>
skipping to change at line 53 skipping to change at line 55
extern const int lalVersionMajor; extern const int lalVersionMajor;
extern const int lalVersionMinor; extern const int lalVersionMinor;
extern const char *lalConfigureArgs; extern const char *lalConfigureArgs;
extern const char *lalConfigureDate; extern const char *lalConfigureDate;
\endcode \endcode
These constant variables are set at compile time and included into the LAL These constant variables are set at compile time and included into the LAL
library. They contain the information about the version of LAL and the library. They contain the information about the version of LAL and the
configuration information. configuration information.
*/ /*@{*/ *//*@{ */
/**\name Error Codes */ /*@{*/ /**\name Error Codes *//*@{ */
#define LALVERSIONH_ENULL 1 /**< Null string pointer */ #define LALVERSIONH_ENULL 1 /**< Null string pointer */
#define LALVERSIONH_ESIZE 2 /**< Zero string size */ #define LALVERSIONH_ESIZE 2 /**< Zero string size */
#define LALVERSIONH_ESPRN 4 /**< Error in snprintf */ #define LALVERSIONH_ESPRN 4 /**< Error in snprintf */
#define LALVERSIONH_ESHRT 8 /**< String too short */ #define LALVERSIONH_ESHRT 8 /**< String too short */
/*@}*/ /*@}*/
/*@}*/ /*@}*/
#define LALVERSIONH_MSGENULL "Null string pointer." #define LALVERSIONH_MSGENULL "Null string pointer."
#define LALVERSIONH_MSGESIZE "Zero string size." #define LALVERSIONH_MSGESIZE "Zero string size."
#define LALVERSIONH_MSGESPRN "Error in snprintf." #define LALVERSIONH_MSGESPRN "Error in snprintf."
#define LALVERSIONH_MSGESHRT "String too short." #define LALVERSIONH_MSGESHRT "String too short."
extern const char *const lalVersion; extern const char *const lalVersion;
extern const int lalVersionMajor; extern const int lalVersionMajor;
extern const int lalVersionMinor; extern const int lalVersionMinor;
extern const int lalVersionMicro; extern const int lalVersionMicro;
extern const int lalVersionDevel; extern const int lalVersionDevel;
extern const char *const lalBuildDate; extern const char *const lalBuildDate;
extern const char *const lalConfigureArgs; extern const char *const lalConfigureArgs;
extern const char *const lalConfigureDate; extern const char *const lalConfigureDate;
void void LALVersion(LALStatus * status, CHAR * message, UINT4 size,
LALVersion( LALStatus *status, CHAR *message, UINT4 size, INT4 verbose ); INT4 verbose);
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* _LALVERSION_H */ #endif /* _LALVERSION_H */
 End of changes. 9 change blocks. 
15 lines changed or deleted 18 lines changed or added


 Segments.h   Segments.h 
skipping to change at line 215 skipping to change at line 215
LALSeg * LALSeg *
XLALSegListSearch( LALSegList *seglist, const LIGOTimeGPS *gps ); XLALSegListSearch( LALSegList *seglist, const LIGOTimeGPS *gps );
INT4 INT4
XLALSegListShift( LALSegList *seglist, const LIGOTimeGPS *shift ); XLALSegListShift( LALSegList *seglist, const LIGOTimeGPS *shift );
INT4 INT4
XLALSegListKeep( LALSegList *seglist, const LIGOTimeGPS *start, const LIGO TimeGPS *end ); XLALSegListKeep( LALSegList *seglist, const LIGOTimeGPS *start, const LIGO TimeGPS *end );
LALSeg *
XLALSegListGet( LALSegList *seglist, UINT4 indx );
int XLALSegListIsInitialized ( const LALSegList *seglist ); int XLALSegListIsInitialized ( const LALSegList *seglist );
int XLALSegListInitSimpleSegments ( LALSegList *seglist, LIGOTimeGPS startT ime, UINT4 Nseg, REAL8 Tseg ); int XLALSegListInitSimpleSegments ( LALSegList *seglist, LIGOTimeGPS startT ime, UINT4 Nseg, REAL8 Tseg );
char *XLALSegList2String ( const LALSegList *seglist ); char *XLALSegList2String ( const LALSegList *seglist );
/*@}*/ /*@}*/
#if 0 #if 0
{ /* so that editors will match succeeding brace */ { /* so that editors will match succeeding brace */
#elif defined(__cplusplus) #elif defined(__cplusplus)
} }
 End of changes. 1 change blocks. 
0 lines changed or deleted 3 lines changed or added


 SimulateCoherentGW.h   SimulateCoherentGW.h 
skipping to change at line 26 skipping to change at line 26
* Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, * Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA * MA 02111-1307 USA
*/ */
#ifndef _SIMULATECOHERENTGW_H #ifndef _SIMULATECOHERENTGW_H
#define _SIMULATECOHERENTGW_H #define _SIMULATECOHERENTGW_H
#include <lal/LALStdlib.h> #include <lal/LALStdlib.h>
#include <lal/DetectorSite.h> #include <lal/DetectorSite.h>
#include <lal/SkyCoordinates.h> #include <lal/SkyCoordinates.h>
#include <lal/LALBarycenter.h>
#if defined(__cplusplus) #if defined(__cplusplus)
extern "C" { extern "C" {
#elif 0 #elif 0
} /* so that editors will match preceding brace */ } /* so that editors will match preceding brace */
#endif #endif
/** /**
\addtogroup SimulateCoherentGW_h \addtogroup SimulateCoherentGW_h
\author Creighton, T. D. \author Creighton, T. D.
\deprecated This module is deprecated, please see LALSimulation for a re
placement.
*/
/*
\brief Provides routines to simulate generic gravitational waveforms \brief Provides routines to simulate generic gravitational waveforms
originating from a particular source. originating from a particular source.
\heading{Synopsis} \heading{Synopsis}
\code \code
#include <lal/SimulateCoherentGW.h> #include <lal/SimulateCoherentGW.h>
\endcode \endcode
This header covers generic routines and structures to represent and This header covers generic routines and structures to represent and
simulate the effects of a plane gravitational wave propagating from a simulate the effects of a plane gravitational wave propagating from a
skipping to change at line 248 skipping to change at line 249
of waveforms that are "effectively monochromatic" over some of waveforms that are "effectively monochromatic" over some
coherence timescale \f$t_\mathrm{coh}\f$; i.e.\ in any timespan coherence timescale \f$t_\mathrm{coh}\f$; i.e.\ in any timespan
\f$t_\mathrm{coh}\f$ there is a fixed-frequency sinusoid that is never \f$t_\mathrm{coh}\f$ there is a fixed-frequency sinusoid that is never
more than \f$90^\circ\f$ out of phase with the waveform. This is more more than \f$90^\circ\f$ out of phase with the waveform. This is more
retrictive even than our concept of quasiperiodic waves; for retrictive even than our concept of quasiperiodic waves; for
smoothly-varying waveforms one has \f$t_\mathrm{coh}\sim\dot{f}^{-1/2}\f $, smoothly-varying waveforms one has \f$t_\mathrm{coh}\sim\dot{f}^{-1/2}\f $,
which is much shorter than the evolution timescale \f$\tau\sim which is much shorter than the evolution timescale \f$\tau\sim
f/\dot{f}\f$ (provided \f$\tau\gg1/f\f$, as we have assumed). f/\dot{f}\f$ (provided \f$\tau\gg1/f\f$, as we have assumed).
*/ */
/*@{*/
/** \name Error Codes */ /* This structure stores a representation of a plane
/*@{*/
#define SIMULATECOHERENTGWH_ENUL 1 /**< Unexpected null pointer in argu
ments */
#define SIMULATECOHERENTGWH_EBAD 2 /**< A sampling interval is (effecti
vely) zero */
#define SIMULATECOHERENTGWH_ESIG 3 /**< Input signal must specify ampli
tude and phase functions */
#define SIMULATECOHERENTGWH_EDIM 4 /**< Amplitude must be a 2-dimension
al vector */
#define SIMULATECOHERENTGWH_EMEM 5 /**< Memory allocation error */
#define SIMULATECOHERENTGWH_EUNIT 6 /**< Bad input units */
/*@} */
/** \cond DONT_DOXYGEN */
#define SIMULATECOHERENTGWH_MSGENUL "Unexpected null pointer in arguments"
#define SIMULATECOHERENTGWH_MSGEBAD "A sampling interval is (effectively)
zero"
#define SIMULATECOHERENTGWH_MSGESIG "Input signal must specify amplitude a
nd phase functions"
#define SIMULATECOHERENTGWH_MSGEDIM "Amplitude must be a 2-dimensional vec
tor"
#define SIMULATECOHERENTGWH_MSGEMEM "Memory allocation error"
#define SIMULATECOHERENTGWH_MSGEUNIT "Bad input units"
/** \endcond */
/** This structure stores a representation of a plane
* gravitational wave propagating from a particular point on the sky. * gravitational wave propagating from a particular point on the sky.
* Several alternate representations are permitted to allow a more * Several alternate representations are permitted to allow a more
* natural characterization of quasiperiodic waveforms. * natural characterization of quasiperiodic waveforms.
* *
* \note It is permissible to set only some of the * \note It is permissible to set only some of the
* \c REAL4TimeSeries or \c REAL4TimeVectorSeries fields above, * \c REAL4TimeSeries or \c REAL4TimeVectorSeries fields above,
* but the waveform is treated as being zero except during those times * but the waveform is treated as being zero except during those times
* when either \c h, or both \c a and \c phi, are defined. * when either \c h, or both \c a and \c phi, are defined.
* Where \c shift is not specified, it is assumed that \f$\Phi\f$ is * Where \c shift is not specified, it is assumed that \f$\Phi\f$ is
* zero; where \c f is not specified but \c phi is, \f$f(t)\f$ can be * zero; where \c f is not specified but \c phi is, \f$f(t)\f$ can be
* computed as \f$\dot{\phi}(t)/2\pi\f$. Where \c f and \c phi * computed as \f$\dot{\phi}(t)/2\pi\f$. Where \c f and \c phi
* overlap, or where \c h and any other time series overlap, they * overlap, or where \c h and any other time series overlap, they
* must be defined consistently. * must be defined consistently.
* *
*/ */
typedef struct tagCoherentGW { typedef struct tagCoherentGW {
SkyPosition position; /**< The location of the source in the sky; thi SkyPosition position; /*< The location of the source in the sky; this
s should be in equatorial celestial coordinates, but routines may be able t should be in equatorial celestial coordinates, but routines may be able to
o do the conversion */ do the conversion */
REAL4 psi; /**< The polarization angle \f$\psi\f$, in radi REAL4 psi; /*< The polarization angle \f$\psi\f$, in radia
ans, as defined in Appendix B of [\ref Anderson_W2000] */ ns, as defined in Appendix B of [\ref Anderson_W2000] */
REAL4TimeVectorSeries *h; /**< A time-sampled two-dimensional vector stor REAL4TimeVectorSeries *h; /*< A time-sampled two-dimensional vector stori
ing the waveforms \f$h_+(t)\f$ and \f$h_\times(t)\f$, in dimensionless stra ng the waveforms \f$h_+(t)\f$ and \f$h_\times(t)\f$, in dimensionless strai
in */ n */
REAL4TimeVectorSeries *a; /**< A time-sampled two-dimensional vector stor REAL4TimeVectorSeries *a; /*< A time-sampled two-dimensional vector stori
ing the amplitudes \f$A_1(t)\f$ and \f$A_2(t)\f$, in dimensionless strain * ng the amplitudes \f$A_1(t)\f$ and \f$A_2(t)\f$, in dimensionless strain */
/ REAL4TimeSeries *f; /*< A time-sampled sequence storing the instant
REAL4TimeSeries *f; /**< A time-sampled sequence storing the instan aneous frequency \f$f(t)\f$, in Hz. */
taneous frequency \f$f(t)\f$, in Hz. */ REAL8TimeSeries *phi; /*< A time-sampled sequence storing the phase f
REAL8TimeSeries *phi; /**< A time-sampled sequence storing the phase unction \f$\phi(t)\f$, in radians */
function \f$\phi(t)\f$, in radians */ REAL4TimeSeries *shift; /*< A time-sampled sequence storing the polariz
REAL4TimeSeries *shift; /**< A time-sampled sequence storing the polari ation shift \f$\Phi(t)\f$, in radians */
zation shift \f$\Phi(t)\f$, in radians */ UINT4 dtDelayBy2; /*< A user specified half-interval time step fo
UINT4 dtDelayBy2; /**< A user specified half-interval time step f r the Doppler delay look-up table (will default to 400s if set to 0) */
or the Doppler delay look-up table (will default to 400s if set to 0) */ UINT4 dtPolBy2; /*< A user defined half-interval time step for
UINT4 dtPolBy2; /**< A user defined half-interval time step for the polarisation response look-up table (will default to 300s if set to 0)
the polarisation response look-up table (will default to 300s if set to 0) */
*/
} CoherentGW; } CoherentGW;
/** This structure contains information required to determine the response /* This structure contains information required to determine the response
* of a detector to a gravitational waveform. * of a detector to a gravitational waveform.
*/ */
typedef struct tagDetectorResponse { typedef struct tagDetectorResponse {
COMPLEX8FrequencySeries *transfer; /**< The frequency-dependent transf er function of the interferometer, in ADC counts per unit strain amplitude at any given frequency; COMPLEX8FrequencySeries *transfer; /*< The frequency-dependent transfe r function of the interferometer, in ADC counts per unit strain amplitude a t any given frequency;
* if absent, the response will be given in raw strain rather than ADC output */ * if absent, the response will be given in raw strain rather than ADC output */
LALDetector *site; /**< A structure storing site and p olarization information, used to compute the polarization response and the propagation delay; LALDetector *site; /*< A structure storing site and po larization information, used to compute the polarization response and the p ropagation delay;
* if absent, the response will be computed to the plus mode waveform with no time delay */ * if absent, the response will be computed to the plus mode waveform with no time delay */
EphemerisData *ephemerides; /**< A structure storing the positi LIGOTimeGPS heterodyneEpoch; /*< A reference time for heterodyne
ons, velocities, and accelerations of the Earth and Sun centres of mass, us d detector output time series, where the phase of the mixing signal is zero
ed to compute .
* the propagation delay to the sol
ar system barycentre;
* if absent, the propagation delay
will be computed to the Earth centre (rather than a true barycentre) */
LIGOTimeGPS heterodyneEpoch; /**< A reference time for heterodyn
ed detector output time series, where the phase of the mixing signal is zer
o.
* This parameter is only used when generating detector output time series with nonzero heterodyne frequency \ c f0. * This parameter is only used when generating detector output time series with nonzero heterodyne frequency \ c f0.
* (Note: This should really be a p arameter stored in the \c TimeSeries structure along with \c f0, but it isn t, so we * (Note: This should really be a p arameter stored in the \c TimeSeries structure along with \c f0, but it isn t, so we
* have to add it here.) * have to add it here.)
*/ */
} DetectorResponse; } DetectorResponse;
/* Function prototypes. */ /* Function prototypes. */
/** \deprecated This function is deprecated, please see LALSimulation for a replacement. */
void void
LALSimulateCoherentGW( LALStatus *status, LALSimulateCoherentGW( LALStatus *status,
REAL4TimeSeries *output, REAL4TimeSeries *output,
CoherentGW *input, CoherentGW *input,
DetectorResponse *detector ); DetectorResponse *detector );
/*@}*/
#if 0 #if 0
{ /* so that editors will match succeeding brace */ { /* so that editors will match succeeding brace */
#elif defined(__cplusplus) #elif defined(__cplusplus)
} }
#endif #endif
#endif /* _SIMULATECOHERENTGW_H */ #endif /* _SIMULATECOHERENTGW_H */
 End of changes. 11 change blocks. 
67 lines changed or deleted 33 lines changed or added


 Skymap.h   Skymap.h 
skipping to change at line 23 skipping to change at line 23
* Public License for more details. * Public License for more details.
* *
* You should have received a copy of the GNU General Public License along * 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., * with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/ */
#ifndef SKYMAP_H #ifndef SKYMAP_H
#define SKYMAP_H #define SKYMAP_H
/* Special cases for Python bindings of functions defined in this header.
* FIXME: add Octave section, or modify function declarations to work more
* smoothly with stock swiglal typemaps. */
#if defined(SWIG) && defined(SWIGPYTHON)
// special typemaps for XLALSkymapPlanConstruct
%typemap(in, noblock=1) (int n, int *detectors) (int i, PyObject *seq) {
seq = PySequence_Fast($input, "expected detectors to be a sequence");
if (!seq) SWIG_fail;
$1 = PySequence_Fast_GET_SIZE(seq);
$2 = ($2_type) calloc($1, sizeof($*2_type));
if (!$2)
{
Py_DECREF(seq);
SWIG_exception(SWIG_MemoryError,
"failed to allocate temporary memory");
}
for (i = 0; i < $1; i ++)
{
long longValue = PyInt_AsLong(PySequence_Fast_GET_ITEM(seq, i));
if (longValue == -1 && PyErr_Occurred())
{
Py_DECREF(seq);
SWIG_fail;
}
$2[i] = longValue;
}
Py_DECREF(seq);
}
%typemap(freearg, noblock=1) (int n, int *detectors) {
free($2);
}
%typemap(argout, noblock=1) (int n, int *detectors) "";
// special typemaps for XLALSkymapKernelConstruct
// and XLALSkymapUncertainKernelConstruct
%typemap(in, noblock=1) double *wSw (int i, int n, PyObject *seq) {
seq = PySequence_Fast($input, "expected direction to be a sequence");
if (!seq) SWIG_fail;
n = PySequence_Fast_GET_SIZE(seq);
$1 = ($1_type) calloc(n, sizeof($*1_type));
if (!$1)
{
Py_DECREF(seq);
SWIG_exception(SWIG_MemoryError,
"failed to allocate temporary memory");
}
for (i = 0; i < n; i ++)
{
double doubleValue = PyFloat_AsDouble(PySequence_Fast_GET_ITEM(seq,
i));
if (doubleValue == -1 && PyErr_Occurred())
{
Py_DECREF(seq);
SWIG_fail;
}
$1[i] = doubleValue;
}
Py_DECREF(seq);
}
%typemap(freearg, noblock=1) double *wSw {
free($1);
}
%typemap(argout, noblock=1) double *wSw "";
%apply double *wSw { double *error };
// special typemaps for XLALSkymapApply
%typemap(in, noblock=1) double **xSw (PyObject *seq, int n, int i) {
seq = PySequence_Fast($input, "expected xSw to be a sequence");
if (!seq) SWIG_fail;
n = PySequence_Fast_GET_SIZE(seq);
$1 = ($1_type) calloc(n, sizeof($*1_type));
if (!$1)
{
Py_DECREF(seq);
SWIG_exception(SWIG_MemoryError,
"failed to allocate temporary memory");
}
for (i = 0; i < n; i ++)
{
PyObject *arr;
int len;
void *data;
arr = PyArray_CheckFromAny(PySequence_Fast_GET_ITEM(seq, i),
PyArray_DescrFromType(NPY_DOUBLE), 1, 1,
NPY_IN_ARRAY | NPY_NOTSWAPPED, NULL);
if (!arr)
{
Py_DECREF(seq);
SWIG_fail;
}
len = PyArray_SIZE(arr);
data = malloc(len * sizeof(double));
if (!data)
{
Py_DECREF(arr);
Py_DECREF(seq);
SWIG_exception(SWIG_MemoryError,
"failed to allocate temporary memory");
}
memcpy(data, PyArray_DATA(arr), len * sizeof(double));
Py_DECREF(arr);
$1[i] = ($*1_type) data;
}
Py_DECREF(seq);
}
%typemap(argout, noblock=1) double **xSw {
}
%typemap(freearg, noblock=1) double **xSw (int i) {
for (i = 0; i < n$argnum; i ++)
free($1[i]);
free($1);
}
%typemap(in, noblock=1, numinputs=0) double *logPosterior (double ret) {
$1 = &ret;
}
%typemap(argout, noblock=1) double *logPosterior {
$result = PyFloat_FromDouble(*$1);
}
#endif
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <lal/LALDetectors.h> #include <lal/LALDetectors.h>
// Manipulate log-represented values without overflowing // Manipulate log-represented values without overflowing
double XLALSkymapLogSumExp(double a, double b); double XLALSkymapLogSumExp(double a, double b);
double XLALSkymapLogTotalExp(double* begin, double* end); double XLALSkymapLogTotalExp(double* begin, double* end);
 End of changes. 1 change blocks. 
132 lines changed or deleted 0 lines changed or added


 StringInput.h   StringInput.h 
skipping to change at line 29 skipping to change at line 29
#ifndef _STRINGINPUT_H #ifndef _STRINGINPUT_H
#define _STRINGINPUT_H #define _STRINGINPUT_H
#include <lal/LALStdlib.h> #include <lal/LALStdlib.h>
#include <lal/LALStdio.h> #include <lal/LALStdio.h>
#if defined(__cplusplus) #if defined(__cplusplus)
extern "C" { extern "C" {
#elif 0 #elif 0
} /* so that editors will match preceding brace */ } /* so that editors will match preceding brace */
#endif #endif
/** /**
\addtogroup StringInput_h \addtogroup StringInput_h
\author Creighton, T. D. \author Creighton, T. D.
\brief Provides routines to parse \c CHARVectors into other LAL datatype s. \brief Provides routines to parse \c CHARVectors into other LAL datatype s.
\heading{Synopsis} \heading{Synopsis}
\code \code
skipping to change at line 116 skipping to change at line 116
<tr><td>#LAL_UINT2_FORMAT</td><td><tt>"hu"</tt></td></tr> <tr><td>#LAL_UINT2_FORMAT</td><td><tt>"hu"</tt></td></tr>
<tr><td>#LAL_UINT4_FORMAT</td><td><tt>"u"</tt> or <tt>"lu"</tt></td></tr> <tr><td>#LAL_UINT4_FORMAT</td><td><tt>"u"</tt> or <tt>"lu"</tt></td></tr>
<tr><td>#LAL_UINT8_FORMAT</td><td><tt>"lu"</tt> or <tt>"llu"</tt></td></tr> <tr><td>#LAL_UINT8_FORMAT</td><td><tt>"lu"</tt> or <tt>"llu"</tt></td></tr>
<tr><td>#LAL_REAL4_FORMAT</td><td><tt>"f"</tt></td></tr> <tr><td>#LAL_REAL4_FORMAT</td><td><tt>"f"</tt></td></tr>
<tr><td>#LAL_REAL8_FORMAT</td><td><tt>"lf"</tt></td></tr> <tr><td>#LAL_REAL8_FORMAT</td><td><tt>"lf"</tt></td></tr>
</table> </table>
*/ */
/*@{*/ /*@{*/
/** \name Error Codes */ /*@{*/ /** \name Error Codes *//*@{ */
#define STRINGINPUTH_ENUL 1 /**< Unexpected null pointer in arguments */ #define STRINGINPUTH_ENUL 1 /**< Unexpected null pointer in arguments *
#define STRINGINPUTH_EOUT 2 /**< Output handle points to a non-null poin /
ter */ #define STRINGINPUTH_EOUT 2 /**< Output handle points to a non-null poi
#define STRINGINPUTH_EMEM 3 /**< Memory allocation error */ nter */
#define STRINGINPUTH_EMEM 3 /**< Memory allocation error */
/*@}*/ /*@}*/
/** \cond DONT_DOXYGEN */ /** \cond DONT_DOXYGEN */
#define STRINGINPUTH_MSGENUL "Unexpected null pointer in arguments" #define STRINGINPUTH_MSGENUL "Unexpected null pointer in arguments"
#define STRINGINPUTH_MSGEOUT "Output handle points to a non-null pointer" #define STRINGINPUTH_MSGEOUT "Output handle points to a non-null pointer"
#define STRINGINPUTH_MSGEMEM "Memory allocation error" #define STRINGINPUTH_MSGEMEM "Memory allocation error"
/** \endcond */ /** \endcond */
/** /**
* This structure stores a number of null-terminated strings of arbitrary * This structure stores a number of null-terminated strings of arbitrary
* length. The entire list is stored flattened in a \c CHARVector, * length. The entire list is stored flattened in a \c CHARVector,
* and individual tokens are pointed to by a <tt>CHAR *[]</tt> handle. * and individual tokens are pointed to by a <tt>CHAR *[]</tt> handle.
*/ */
typedef struct tagTokenList { typedef struct tagTokenList {
UINT4 nTokens; /**< The number of tokens in the list */ UINT4 nTokens; /**< The number of tokens in the list */
CHAR **tokens; /**< A list of pointers to the individual tokens; CHAR **tokens; /**< A list of pointers to the individual tokens;
* the elements <tt>tokens[0..nTokens-1]</tt> point to tokens, and * the elements <tt>tokens[0..nTokens-1]</tt> point to tokens, and
* the element <tt>tokens[nTokens]</tt> is explicitly \ c NULL (as is * the element <tt>tokens[nTokens]</tt> is explicitly \ c NULL (as is
the convention for an \c argv argument list */ the convention for an \c argv argument list */
CHARVector *list; /**< The flattened list of tokens, separated by (and te CHARVector *list;
rminated with) <tt>'\0'</tt> characters */ /**< The flattened list of tokens, separated by (and te
rminated with) <tt>'\0'</tt> characters */
} TokenList; } TokenList;
/*@}*/ /*@}*/
/* Function prototypes. */ /* Function prototypes. */
void void
LALCreateTokenList( LALStatus *status, LALCreateTokenList(LALStatus * status,
TokenList **list, TokenList ** list,
const CHAR *string, const CHAR * string, const CHAR * delimiters);
const CHAR *delimiters );
void void LALDestroyTokenList(LALStatus * status, TokenList ** list);
LALDestroyTokenList( LALStatus *status,
TokenList **list );
int int
XLALCreateTokenList( TokenList **list, XLALCreateTokenList(TokenList ** list,
const CHAR *string, const CHAR * string, const CHAR * delimiters);
const CHAR *delimiters );
void void XLALDestroyTokenList(TokenList * list);
XLALDestroyTokenList( TokenList *list );
void void
LALStringToU2( LALStatus *status, UINT2 *value, const CHAR *string, CHAR ** LALStringToU2(LALStatus * status, UINT2 * value, const CHAR * string,
endptr ); CHAR ** endptr);
void void
LALStringToU4( LALStatus *status, UINT4 *value, const CHAR *string, CHAR ** LALStringToU4(LALStatus * status, UINT4 * value, const CHAR * string,
endptr ); CHAR ** endptr);
void void
LALStringToU8( LALStatus *status, UINT8 *value, const CHAR *string, CHAR ** LALStringToU8(LALStatus * status, UINT8 * value, const CHAR * string,
endptr ); CHAR ** endptr);
void void
LALStringToI2( LALStatus *status, INT2 *value, const CHAR *string, CHAR **e LALStringToI2(LALStatus * status, INT2 * value, const CHAR * string,
ndptr ); CHAR ** endptr);
void void
LALStringToI4( LALStatus *status, INT4 *value, const CHAR *string, CHAR **e LALStringToI4(LALStatus * status, INT4 * value, const CHAR * string,
ndptr ); CHAR ** endptr);
void void
LALStringToI8( LALStatus *status, INT8 *value, const CHAR *string, CHAR **e LALStringToI8(LALStatus * status, INT8 * value, const CHAR * string,
ndptr ); CHAR ** endptr);
void void
LALStringToS( LALStatus *status, REAL4 *value, const CHAR *string, CHAR **e LALStringToS(LALStatus * status, REAL4 * value, const CHAR * string,
ndptr ); CHAR ** endptr);
void void
LALStringToD( LALStatus *status, REAL8 *value, const CHAR *string, CHAR **e LALStringToD(LALStatus * status, REAL8 * value, const CHAR * string,
ndptr ); CHAR ** endptr);
void void
LALStringToC( LALStatus *status, COMPLEX8 *value, const CHAR *string, CHAR LALStringToC(LALStatus * status, COMPLEX8 * value, const CHAR * string,
**endptr ); CHAR ** endptr);
void void
LALStringToZ( LALStatus *status, COMPLEX16 *value, const CHAR *string, CHAR LALStringToZ(LALStatus * status, COMPLEX16 * value, const CHAR * string,
**endptr ); CHAR ** endptr);
void void
LALStringToGPS( LALStatus *status, LIGOTimeGPS *value, const CHAR *string, LALStringToGPS(LALStatus * status, LIGOTimeGPS * value,
CHAR **endptr ); const CHAR * string, CHAR ** endptr);
#if 0 #if 0
{ /* so that editors will match succeeding brace */ { /* so that editors will match succeeding brace */
#elif defined(__cplusplus) #elif defined(__cplusplus)
} }
#endif #endif
#endif /* _STRINGINPUT_H */ #endif /* _STRINGINPUT_H */
 End of changes. 20 change blocks. 
45 lines changed or deleted 42 lines changed or added


 TriggerInterpolation.h   TriggerInterpolation.h 
skipping to change at line 134 skipping to change at line 134
* Perform interpolation using the allocated workspace. * Perform interpolation using the allocated workspace.
* *
* Perform interpolation around the matched-filter output data pointed to b y * Perform interpolation around the matched-filter output data pointed to b y
* \c y. There should exist \c window samples before and \c window samples * \c y. There should exist \c window samples before and \c window samples
* after this pointer. * after this pointer.
* *
* On success, set \c *tmax to the interpolated time, \c *ymax to the * On success, set \c *tmax to the interpolated time, \c *ymax to the
* complex interpolated signal, and return 0. On failure, return a non-zero GSL * complex interpolated signal, and return 0. On failure, return a non-zero GSL
* error code. * error code.
*/ */
int XLALApplyCubicSplineTriggerInterpolant( int XLALCOMPLEX16ApplyCubicSplineTriggerInterpolant(
CubicSplineTriggerInterpolant *interp, CubicSplineTriggerInterpolant *interp,
double *tmax, double *tmax,
COMPLEX16 *ymax, COMPLEX16 *ymax,
const COMPLEX16 *y); const COMPLEX16 *y);
int XLALCOMPLEX8ApplyCubicSplineTriggerInterpolant(
CubicSplineTriggerInterpolant *interp,
double *tmax,
COMPLEX8 *ymax,
const COMPLEX8 *y);
int XLALREAL8ApplyCubicSplineTriggerInterpolant(
CubicSplineTriggerInterpolant *interp,
double *tmax,
REAL8 *ymax,
const REAL8 *y);
int XLALREAL4ApplyCubicSplineTriggerInterpolant(
CubicSplineTriggerInterpolant *interp,
double *tmax,
REAL4 *ymax,
const REAL4 *y);
/* \} */ /* \} */
/** /**
* Lanczos interpolation * Lanczos interpolation
* *
* Convolve the data with a Lanczos reconstruction kernel and find the maxi mum * Convolve the data with a Lanczos reconstruction kernel and find the maxi mum
* of the absolute value using a one-dimensional numerical method. * of the absolute value using a one-dimensional numerical method.
* *
* \addtogroup LanczosTriggerInterpolant * \addtogroup LanczosTriggerInterpolant
* \{ * \{
skipping to change at line 181 skipping to change at line 199
* Perform interpolation using the allocated workspace. * Perform interpolation using the allocated workspace.
* *
* Perform interpolation around the matched-filter output data pointed to b y * Perform interpolation around the matched-filter output data pointed to b y
* \c y. There should exist \c window samples before and \c window samples * \c y. There should exist \c window samples before and \c window samples
* after this pointer. * after this pointer.
* *
* On success, set \c *tmax to the interpolated time, \c *ymax to the * On success, set \c *tmax to the interpolated time, \c *ymax to the
* complex interpolated signal, and return 0. On failure, return a non-zero GSL * complex interpolated signal, and return 0. On failure, return a non-zero GSL
* error code. * error code.
*/ */
int XLALApplyLanczosTriggerInterpolant( int XLALCOMPLEX16ApplyLanczosTriggerInterpolant(
LanczosTriggerInterpolant *interp, LanczosTriggerInterpolant *interp,
double *tmax, double *tmax,
COMPLEX16 *ymax, COMPLEX16 *ymax,
const COMPLEX16 *y); const COMPLEX16 *y);
int XLALCOMPLEX8ApplyLanczosTriggerInterpolant(
LanczosTriggerInterpolant *interp,
double *tmax,
COMPLEX8 *ymax,
const COMPLEX8 *y);
int XLALREAL8ApplyLanczosTriggerInterpolant(
LanczosTriggerInterpolant *interp,
double *tmax,
REAL8 *ymax,
const REAL8 *y);
int XLALREAL4ApplyLanczosTriggerInterpolant(
LanczosTriggerInterpolant *interp,
double *tmax,
REAL4 *ymax,
const REAL4 *y);
/* \} */ /* \} */
/** /**
* Nearest-neighbor interpolation * Nearest-neighbor interpolation
* *
* Perform trivial, nearest-neighbor interpolation. * Perform trivial, nearest-neighbor interpolation.
* Always sets <tt>*tmax = 0, *ymax = data[0]</tt>. * Always sets <tt>*tmax = 0, *ymax = data[0]</tt>.
* *
* \warning It is an error to request a nearest-neighbor workspace with a w indow * \warning It is an error to request a nearest-neighbor workspace with a w indow
* size not equal to 0. * size not equal to 0.
skipping to change at line 234 skipping to change at line 270
* Perform interpolation using the allocated workspace. * Perform interpolation using the allocated workspace.
* *
* Perform interpolation around the matched-filter output data pointed to b y * Perform interpolation around the matched-filter output data pointed to b y
* \c y. There should exist \c window samples before and \c window samples * \c y. There should exist \c window samples before and \c window samples
* after this pointer. * after this pointer.
* *
* On success, set \c *tmax to the interpolated time, \c *ymax to the * On success, set \c *tmax to the interpolated time, \c *ymax to the
* complex interpolated signal, and return 0. On failure, return a non-zero GSL * complex interpolated signal, and return 0. On failure, return a non-zero GSL
* error code. * error code.
*/ */
int XLALApplyNearestNeighborTriggerInterpolant( int XLALCOMPLEX16ApplyNearestNeighborTriggerInterpolant(
NearestNeighborTriggerInterpolant *interp, NearestNeighborTriggerInterpolant *interp,
double *tmax, double *tmax,
COMPLEX16 *ymax, COMPLEX16 *ymax,
const COMPLEX16 *y); const COMPLEX16 *y);
int XLALCOMPLEX8ApplyNearestNeighborTriggerInterpolant(
NearestNeighborTriggerInterpolant *interp,
double *tmax,
COMPLEX8 *ymax,
const COMPLEX8 *y);
int XLALREAL8ApplyNearestNeighborTriggerInterpolant(
NearestNeighborTriggerInterpolant *interp,
double *tmax,
REAL8 *ymax,
const REAL8 *y);
int XLALREAL4ApplyNearestNeighborTriggerInterpolant(
NearestNeighborTriggerInterpolant *interp,
double *tmax,
REAL4 *ymax,
const REAL4 *y);
/* \} */ /* \} */
/** /**
* Quadratic fit * Quadratic fit
* *
* Fit a quadratic function to the absolute value of the data. Report the s ample * Fit a quadratic function to the absolute value of the data. Report the s ample
* index of the vertex if the vertex is a maximum. Note that this is not * index of the vertex if the vertex is a maximum. Note that this is not
* actually an interpolant because it is not guaranteed to agree with the i nput * actually an interpolant because it is not guaranteed to agree with the i nput
* data points, and that it always sets *ymax = data[0]. * data points, and that it always sets *ymax = data[0].
* *
skipping to change at line 283 skipping to change at line 337
* Perform interpolation using the allocated workspace. * Perform interpolation using the allocated workspace.
* *
* Perform interpolation around the matched-filter output data pointed to b y * Perform interpolation around the matched-filter output data pointed to b y
* \c y. There should exist \c window samples before and \c window samples * \c y. There should exist \c window samples before and \c window samples
* after this pointer. * after this pointer.
* *
* On success, set \c *tmax to the interpolated time, \c *ymax to the * On success, set \c *tmax to the interpolated time, \c *ymax to the
* complex interpolated signal, and return 0. On failure, return a non-zero GSL * complex interpolated signal, and return 0. On failure, return a non-zero GSL
* error code. * error code.
*/ */
int XLALApplyQuadraticFitTriggerInterpolant( int XLALCOMPLEX16ApplyQuadraticFitTriggerInterpolant(
QuadraticFitTriggerInterpolant *interp, QuadraticFitTriggerInterpolant *interp,
double *tmax, double *tmax,
COMPLEX16 *ymax, COMPLEX16 *ymax,
const COMPLEX16 *y); const COMPLEX16 *y);
int XLALCOMPLEX8ApplyQuadraticFitTriggerInterpolant(
QuadraticFitTriggerInterpolant *interp,
double *tmax,
COMPLEX8 *ymax,
const COMPLEX8 *y);
int XLALREAL8ApplyQuadraticFitTriggerInterpolant(
QuadraticFitTriggerInterpolant *interp,
double *tmax,
REAL8 *ymax,
const REAL8 *y);
int XLALREAL4ApplyQuadraticFitTriggerInterpolant(
QuadraticFitTriggerInterpolant *interp,
double *tmax,
REAL4 *ymax,
const REAL4 *y);
/* \} */ /* \} */
/* \} */ /* \} */
#if 0 #if 0
{ /* so that editors will match succeeding brace */ { /* so that editors will match succeeding brace */
#elif defined(__cplusplus) #elif defined(__cplusplus)
} /* extern "C" */ } /* extern "C" */
#endif #endif
 End of changes. 8 change blocks. 
4 lines changed or deleted 76 lines changed or added


 Units.h   Units.h 
skipping to change at line 182 skipping to change at line 182
/* end: Units_h */ /* end: Units_h */
/********************************************************* /*********************************************************
* * * *
* Functions to manipulate unit structures * * Functions to manipulate unit structures *
* * * *
*********************************************************/ *********************************************************/
/* XLAL routines */ /* XLAL routines */
char * XLALUnitAsString( char *string, UINT4 length, const LALUnit *input ) ; char * XLALUnitAsString( char *string, UINT4 length, const LALUnit *input ) ;
char * XLALUnitToString( const LALUnit *input );
LALUnit * XLALParseUnitString( LALUnit *output, const char *string ); LALUnit * XLALParseUnitString( LALUnit *output, const char *string );
int XLALUnitNormalize( LALUnit *unit ); int XLALUnitNormalize( LALUnit *unit );
int XLALUnitCompare( const LALUnit *unit1, const LALUnit *unit2 ); int XLALUnitCompare( const LALUnit *unit1, const LALUnit *unit2 );
LALUnit * XLALUnitMultiply( LALUnit *output, const LALUnit *unit1, LALUnit * XLALUnitMultiply( LALUnit *output, const LALUnit *unit1,
const LALUnit *unit2 ); const LALUnit *unit2 );
LALUnit * XLALUnitDivide( LALUnit *output, const LALUnit *unit1, LALUnit * XLALUnitDivide( LALUnit *output, const LALUnit *unit1,
const LALUnit *unit2 ); const LALUnit *unit2 );
LALUnit * XLALUnitRaiseRAT4( LALUnit *output, const LALUnit *input, LALUnit * XLALUnitRaiseRAT4( LALUnit *output, const LALUnit *input,
const RAT4 *power ); const RAT4 *power );
LALUnit * XLALUnitRaiseINT2( LALUnit *output, const LALUnit *input, LALUnit * XLALUnitRaiseINT2( LALUnit *output, const LALUnit *input,
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 UserInput.h   UserInput.h 
skipping to change at line 49 skipping to change at line 49
This module provides simple function and macros to 'register' a set of C-v ariables as 'User Variables', This module provides simple function and macros to 'register' a set of C-v ariables as 'User Variables',
which can then be read in from the commandline and/or an input config file , as parsed by \ref ConfigFile_h. which can then be read in from the commandline and/or an input config file , as parsed by \ref ConfigFile_h.
The module handles generating and outputting a help-string on the availabl e inputs when requested, and The module handles generating and outputting a help-string on the availabl e inputs when requested, and
can deal with required inputs and providing defaults. can deal with required inputs and providing defaults.
\heading{Usage} \heading{Usage}
The general approach consists of these steps The general approach consists of these steps
<ol> <ol>
<li> read log-level from user-input using XLALGetDebugLevel() [<b>Note:</b > this must happend before and (X)LAL memory allocation!!]</li>
<li> set default-value for optional user-variables</li> <li> set default-value for optional user-variables</li>
<li> \c register all user-variables using calls to \c XLALRegister<TYPE>Us erVar(), or more conveniently, using the shortcut-macros <li> \c register all user-variables using calls to \c XLALRegister<TYPE>Us erVar(), or more conveniently, using the shortcut-macros
XLALreg<TYPE>UserStruct() that assume a struct-pointer named 'uvar' c ontaining all user-variables as 'uvar->UserVariable'.</li> XLALreg<TYPE>UserStruct() that assume a struct-pointer named 'uvar' c ontaining all user-variables as 'uvar->UserVariable'.</li>
<li> parse all user-input using XLALUserVarReadAllInput()</li> <li> parse all user-input using XLALUserVarReadAllInput()</li>
<li> At the end, free user-input structure</li> <li> At the end, free user-input structure</li>
</ol> </ol>
One can use XLALUserVarWasSet() to determine wheter the user specified inp ut for a given (optional) variable, or if it still has just its default val ue. One can use XLALUserVarWasSet() to determine wheter the user specified inp ut for a given (optional) variable, or if it still has just its default val ue.
The function XLALUserVarGetLog() can be used to obtain a log-string contai ning the full user-input, either in \c commandline- or \c ConfigFile format . The function XLALUserVarGetLog() can be used to obtain a log-string contai ning the full user-input, either in \c commandline- or \c ConfigFile format .
skipping to change at line 82 skipping to change at line 81
REAL8 specialGeekSwitch; REAL8 specialGeekSwitch;
} UserInput_t; } UserInput_t;
UserInput_t empty_UserInput; // this is zero-intialized! UserInput_t empty_UserInput; // this is zero-intialized!
int main(int argc,char *argv[]) int main(int argc,char *argv[])
{ {
UserInput_t UserVariables = empty_UserInput; // initializes this struct to {0} UserInput_t UserVariables = empty_UserInput; // initializes this struct to {0}
UserInput_t *uvar = &UserVariables; // struct-pointer allows us to use the XLALreg<TYPE>UserStruct() macros... UserInput_t *uvar = &UserVariables; // struct-pointer allows us to use the XLALreg<TYPE>UserStruct() macros...
// 1. step: read lal-debug level, using short-option '-v' // 1. step: set default-values for optional user-input variables
if ( XLALGetDebugLevel ( argc, argv, 'v') != XLAL_SUCCESS )
XLAL_ERROR ( XLAL_EFUNC );
// 2. step: set default-values for optional user-input variables
uvar->anInteger = 0; uvar->anInteger = 0;
uvar->andAString = NULL; // Note: need to assign allocated strings h ere as default!! uvar->andAString = NULL; // Note: need to assign allocated strings h ere as default!!
// 3. step: Register all user-variables using the shortcut macros: // 2. step: Register all user-variables using the shortcut macros:
XLALregBOOLUserStruct ( help, 'h', UVAR_HELP, "Outpu t this help-message"); XLALregBOOLUserStruct ( help, 'h', UVAR_HELP, "Outpu t this help-message");
XLALregINTUserStruct ( anInteger, 'i', UVAR_OPTIONAL, "An ex ample user-variable of an optional integer"); XLALregINTUserStruct ( anInteger, 'i', UVAR_OPTIONAL, "An ex ample user-variable of an optional integer");
XLALregREALUserStruct ( aDoubleVar, 'r', UVAR_REQUIRED, "This REAL8 user-variable is required"); XLALregREALUserStruct ( aDoubleVar, 'r', UVAR_REQUIRED, "This REAL8 user-variable is required");
XLALregSTRINGUserStruct( andAString, 0, UVAR_OPTIONAL, "Optio nal string-input, has no short-option"); XLALregSTRINGUserStruct( andAString, 0, UVAR_OPTIONAL, "Optio nal string-input, has no short-option");
XLALregREALUserStruct ( specialGeekSwitch, 'g', UVAR_DEVELOPER, "Thi s REAL8 user-variable is required"); XLALregREALUserStruct ( specialGeekSwitch, 'g', UVAR_DEVELOPER, "Thi s REAL8 user-variable is required");
// 4. step: parse all user-input, from either config-file if given, or c ommandline (overloads config-file values) // 3. step: parse all user-input, from either config-file if given, or c ommandline (overloads config-file values)
if ( XLALUserVarReadAllInput ( argc, argv ) != XLAL_SUCCESS ) if ( XLALUserVarReadAllInput ( argc, argv ) != XLAL_SUCCESS )
XLAL_ERROR ( XLAL_EFUNC ); XLAL_ERROR ( XLAL_EFUNC );
if (uvar->help) // if user had requested help, then we're already d one here if (uvar->help) // if user had requested help, then we're already d one here
return 0; return 0;
printf ("User-input was: anInteger = %d, aDoubleVar = %f, andAString = % s\n", uvar->anInteger, uvar->aDoubleVar, uvar->andAString ); printf ("User-input was: anInteger = %d, aDoubleVar = %f, andAString = % s\n", uvar->anInteger, uvar->aDoubleVar, uvar->andAString );
// 5. step: free user-input module memory // 4. step: free user-input module memory
XLALDestroyUserVars(); XLALDestroyUserVars();
LALCheckMemoryLeaks(); LALCheckMemoryLeaks();
return 0; return 0;
} // main() } // main()
\endcode \endcode
\note This code can be compiled <b>as is</b> within lalapps, and yields \note This code can be compiled <b>as is</b> within lalapps, and yields
\code \code
skipping to change at line 193 skipping to change at line 188
} UserVarLogFormat; } UserVarLogFormat;
/* Function prototypes */ /* Function prototypes */
void XLALDestroyUserVars( void ); void XLALDestroyUserVars( void );
int XLALUserVarReadCmdline (int argc, char *argv[]); int XLALUserVarReadCmdline (int argc, char *argv[]);
int XLALUserVarReadCfgfile ( const CHAR *cfgfile ); int XLALUserVarReadCfgfile ( const CHAR *cfgfile );
CHAR *XLALUserVarHelpString ( const CHAR *progname ); CHAR *XLALUserVarHelpString ( const CHAR *progname );
int XLALUserVarReadAllInput ( int argc, char *argv[] ); int XLALUserVarReadAllInput ( int argc, char *argv[] );
int XLALUserVarCheckRequired( void ); int XLALUserVarCheckRequired( void );
int XLALUserVarWasSet (const void *cvar); int XLALUserVarWasSet (const void *cvar);
int XLALGetDebugLevel (int argc, char *argv[], CHAR optchar);
CHAR * XLALUserVarGetLog ( UserVarLogFormat format ); CHAR * XLALUserVarGetLog ( UserVarLogFormat format );
/* type-specific wrappers to XLALRegisterUserVar() to allow type-checking! */ /* type-specific wrappers to XLALRegisterUserVar() to allow type-checking! */
int XLALRegisterREALUserVar ( const CHAR *name, CHAR optchar, UserVarState flag, const CHAR *helpstr, REAL8 *cvar ); int XLALRegisterREALUserVar ( const CHAR *name, CHAR optchar, UserVarState flag, const CHAR *helpstr, REAL8 *cvar );
int XLALRegisterINTUserVar ( const CHAR *name, CHAR optchar, UserVarState f lag, const CHAR *helpstr, INT4 *cvar ); int XLALRegisterINTUserVar ( const CHAR *name, CHAR optchar, UserVarState f lag, const CHAR *helpstr, INT4 *cvar );
int XLALRegisterBOOLUserVar ( const CHAR *name, CHAR optchar, UserVarState flag, const CHAR *helpstr, BOOLEAN *cvar ); int XLALRegisterBOOLUserVar ( const CHAR *name, CHAR optchar, UserVarState flag, const CHAR *helpstr, BOOLEAN *cvar );
int XLALRegisterSTRINGUserVar ( const CHAR *name, CHAR optchar, UserVarStat e flag, const CHAR *helpstr, CHAR **cvar ); int XLALRegisterSTRINGUserVar ( const CHAR *name, CHAR optchar, UserVarStat e flag, const CHAR *helpstr, CHAR **cvar );
int XLALRegisterLISTUserVar ( const CHAR *name, CHAR optchar, UserVarState flag, const CHAR *helpstr, LALStringVector **cvar); int XLALRegisterLISTUserVar ( const CHAR *name, CHAR optchar, UserVarState flag, const CHAR *helpstr, LALStringVector **cvar);
/* ========== Deprecated LAL interface wrappers ========== */ /* ========== Deprecated LAL interface wrappers ========== */
skipping to change at line 288 skipping to change at line 282
void LALDestroyUserVars (LALStatus *); void LALDestroyUserVars (LALStatus *);
void LALUserVarReadAllInput(LALStatus *, int argc, char *argv[]); void LALUserVarReadAllInput(LALStatus *, int argc, char *argv[]);
void LALUserVarReadCmdline (LALStatus *, int argc, char *argv[]); void LALUserVarReadCmdline (LALStatus *, int argc, char *argv[]);
void LALUserVarReadCfgfile (LALStatus *, const CHAR *cfgfile); void LALUserVarReadCfgfile (LALStatus *, const CHAR *cfgfile);
void LALUserVarHelpString (LALStatus *, CHAR **helpstring, const CHAR *prog name); void LALUserVarHelpString (LALStatus *, CHAR **helpstring, const CHAR *prog name);
void LALUserVarCheckRequired (LALStatus *); void LALUserVarCheckRequired (LALStatus *);
INT4 LALUserVarWasSet (const void *cvar); INT4 LALUserVarWasSet (const void *cvar);
void LALGetDebugLevel (LALStatus *, int argc, char *argv[], CHAR optchar);
void LALUserVarGetLog (LALStatus *, CHAR **logstr, UserVarLogFormat format ); void LALUserVarGetLog (LALStatus *, CHAR **logstr, UserVarLogFormat format );
#if 0 #if 0
void LALUserVarGetProcParamsTable (LALStatus *status, ProcessParamsTable ** out, CHAR *progname); void LALUserVarGetProcParamsTable (LALStatus *status, ProcessParamsTable ** out, CHAR *progname);
#endif #endif
/*@}*/ /*@}*/
/*@}*/ /*@}*/
#ifdef __cplusplus #ifdef __cplusplus
 End of changes. 7 change blocks. 
11 lines changed or deleted 4 lines changed or added


 XLALError.h   XLALError.h 
skipping to change at line 30 skipping to change at line 30
#ifndef XLALERROR_H #ifndef XLALERROR_H
#define XLALERROR_H #define XLALERROR_H
#include <stdarg.h> #include <stdarg.h>
#include <stddef.h> #include <stddef.h>
#include <lal/LALAtomicDatatypes.h> #include <lal/LALAtomicDatatypes.h>
#if defined(__cplusplus) #if defined(__cplusplus)
extern "C" { extern "C" {
#elif 0 #elif 0
} /* so that editors will match preceding brace */ } /* so that editors will match preceding brace */
#endif #endif
/** /**
* \addtogroup XLALError_h * \addtogroup XLALError_h
* \author Creighton, J. D. E. * \author Creighton, J. D. E.
* \date 2005 * \date 2005
* \brief This header covers routines to provide the XLAL interface error * \brief This header covers routines to provide the XLAL interface error
* handling. * handling.
* *
* \heading{XLAL Errors} * \heading{XLAL Errors}
skipping to change at line 158 skipping to change at line 158
/** Prints an error message if error printing is enabled by lalDebugLevel. */ /** Prints an error message if error printing is enabled by lalDebugLevel. */
int XLALPrintError(const char *fmt, ...); int XLALPrintError(const char *fmt, ...);
/** Prints a warning message if warning printing is enabled by lalDebugLeve l. */ /** Prints a warning message if warning printing is enabled by lalDebugLeve l. */
int XLALPrintWarning(const char *fmt, ...); int XLALPrintWarning(const char *fmt, ...);
/** Prints an info message if info printing is enabled by lalDebugLevel. */ /** Prints an info message if info printing is enabled by lalDebugLevel. */
int XLALPrintInfo(const char *fmt, ...); int XLALPrintInfo(const char *fmt, ...);
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
/** Prints an error message if error printing is enabled by lalDebugLevel. */ /** Prints an error message if error printing is enabled by lalDebugLevel. */
int XLALVPrintError(const char *fmt, va_list ap); int XLALVPrintError(const char *fmt, va_list ap);
/** Prints a warning message if warning printing is enabled by lalDebugLeve l. */ /** Prints a warning message if warning printing is enabled by lalDebugLeve l. */
int XLALVPrintWarning(const char *fmt, va_list ap); int XLALVPrintWarning(const char *fmt, va_list ap);
/** Prints an info message if info printing is enabled by lalDebugLevel. */ /** Prints an info message if info printing is enabled by lalDebugLevel. */
int XLALVPrintInfo(const char *fmt, va_list ap); int XLALVPrintInfo(const char *fmt, va_list ap);
#endif /* SWIG */ #endif /* SWIG */
/* /*
* *
* Miscelaneous routines to print information with standard formatting. * Miscelaneous routines to print information with standard formatting.
* *
*/ */
/** Print an error message with standard XLAL formatting (if error messages /** Print an error message with standard XLAL formatting (if error messages
* are enabled by lalDebugLevel). */ * are enabled by lalDebugLevel). */
void XLALPrintErrorMessage(const char *func, const char *file, int line, co void XLALPrintErrorMessage(const char *func, const char *file, int line,
nst char *fmt, ...); const char *fmt, ...);
/** Print an warning message with standard XLAL formatting (if warning mess ages /** Print an warning message with standard XLAL formatting (if warning mess ages
* are enabled by lalDebugLevel). */ * are enabled by lalDebugLevel). */
void XLALPrintWarningMessage(const char *func, const char *file, int line, void XLALPrintWarningMessage(const char *func, const char *file, int line,
const char *fmt, ...); const char *fmt, ...);
/** Print an info message with standard XLAL formatting (if info messages /** Print an info message with standard XLAL formatting (if info messages
* are enabled by lalDebugLevel). */ * are enabled by lalDebugLevel). */
void XLALPrintInfoMessage(const char *func, const char *file, int line, con void XLALPrintInfoMessage(const char *func, const char *file, int line,
st char *fmt, ...); const char *fmt, ...);
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
/** Print an error message with standard XLAL formatting (if error messages /** Print an error message with standard XLAL formatting (if error messages
* are enabled by lalDebugLevel). */ * are enabled by lalDebugLevel). */
void XLALVPrintErrorMessage(const char *func, const char *file, int line, c void XLALVPrintErrorMessage(const char *func, const char *file, int line,
onst char *fmt, va_list ap); const char *fmt, va_list ap);
/** Print an warning message with standard XLAL formatting (if warning mess ages /** Print an warning message with standard XLAL formatting (if warning mess ages
* are enabled by lalDebugLevel). */ * are enabled by lalDebugLevel). */
void XLALVPrintWarningMessage(const char *func, const char *file, int line, void XLALVPrintWarningMessage(const char *func, const char *file, int line,
const char *fmt, va_list ap); const char *fmt, va_list ap);
/** Print an error message with standard XLAL formatting (if error messages /** Print an error message with standard XLAL formatting (if error messages
* are enabled by lalDebugLevel). */ * are enabled by lalDebugLevel). */
void XLALVPrintInfoMessage(const char *func, const char *file, int line, co void XLALVPrintInfoMessage(const char *func, const char *file, int line,
nst char *fmt, va_list ap); const char *fmt, va_list ap);
#endif /* SWIG */ #endif /* SWIG */
/** Prints a progress bar at the "info" verbosity level. */ /** Prints a progress bar at the "info" verbosity level. */
int XLALPrintProgressBar(double); int XLALPrintProgressBar(double);
/** Prints a deprecation warning at the "warning" verbosity level. */ /** Prints a deprecation warning at the "warning" verbosity level. */
int XLALPrintDeprecationWarning(const char *old, const char *replacement); int XLALPrintDeprecationWarning(const char *old, const char *replacement);
/* /*
skipping to change at line 297 skipping to change at line 303
/* /*
* The floating point values themselves are returned by static functions th at * The floating point values themselves are returned by static functions th at
* can be easily inlined by the compiler; similarly, the routines to test i f a * can be easily inlined by the compiler; similarly, the routines to test i f a
* value is the LAL failure NaN can also be inlined. * value is the LAL failure NaN can also be inlined.
*/ */
/** Returns the value of the XLAL <tt>REAL4</tt> failure NaN. */ /** Returns the value of the XLAL <tt>REAL4</tt> failure NaN. */
static REAL4 UNUSED XLALREAL4FailNaN(void) static REAL4 UNUSED XLALREAL4FailNaN(void)
{ {
volatile const union { INT4 i; REAL4 x; } val = { XLAL_REAL4_FAIL_NA volatile const union {
N_INT } ; INT4 i;
return val.x; REAL4 x;
} val = {
XLAL_REAL4_FAIL_NAN_INT};
return val.x;
} }
/** Returns the value of the XLAL <tt>REAL8</tt> failure NaN. */ /** Returns the value of the XLAL <tt>REAL8</tt> failure NaN. */
static REAL8 UNUSED XLALREAL8FailNaN(void) static REAL8 UNUSED XLALREAL8FailNaN(void)
{ {
volatile const union { INT8 i; REAL8 x; } val = { XLAL_REAL8_FAIL_NA volatile const union {
N_INT } ; INT8 i;
return val.x; REAL8 x;
} val = {
XLAL_REAL8_FAIL_NAN_INT};
return val.x;
} }
/** Tests if a value is an XLAL <tt>REAL4</tt> failure NaN. */ /** Tests if a value is an XLAL <tt>REAL4</tt> failure NaN. */
static int UNUSED XLALIsREAL4FailNaN(REAL4 val) static int UNUSED XLALIsREAL4FailNaN(REAL4 val)
{ {
volatile const union { INT4 i; unsigned char s[4]; } a = { XLAL_REAL volatile const union {
4_FAIL_NAN_INT } ; INT4 i;
volatile union { REAL4 x; unsigned char s[4]; } b; unsigned char s[4];
size_t n; } a = {
b.x = val; XLAL_REAL4_FAIL_NAN_INT};
for (n = 0; n < sizeof(val); ++n) volatile union {
if (a.s[n] != b.s[n]) REAL4 x;
return 0; unsigned char s[4];
return 1; } b;
size_t n;
b.x = val;
for (n = 0; n < sizeof(val); ++n)
if (a.s[n] != b.s[n])
return 0;
return 1;
} }
/** Tests if a value is an XLAL <tt>REAL8</tt> failure NaN. */ /** Tests if a value is an XLAL <tt>REAL8</tt> failure NaN. */
static int UNUSED XLALIsREAL8FailNaN(REAL8 val) static int UNUSED XLALIsREAL8FailNaN(REAL8 val)
{ {
volatile const union { INT8 i; unsigned char s[8]; } a = { XLAL_REAL volatile const union {
8_FAIL_NAN_INT } ; INT8 i;
volatile union { REAL8 x; unsigned char s[8]; } b; unsigned char s[8];
size_t n; } a = {
b.x = val; XLAL_REAL8_FAIL_NAN_INT};
for (n = 0; n < sizeof(val); ++n) volatile union {
if (a.s[n] != b.s[n]) REAL8 x;
return 0; unsigned char s[8];
return 1; } b;
size_t n;
b.x = val;
for (n = 0; n < sizeof(val); ++n)
if (a.s[n] != b.s[n])
return 0;
return 1;
} }
#undef UNUSED #undef UNUSED
/* Here are the macro constants for the fail NaNs. */ /* Here are the macro constants for the fail NaNs. */
#define XLAL_REAL4_FAIL_NAN ( XLALREAL4FailNaN() ) /**< Floating-point valu e of the XLAL <tt>REAL4</tt> failure NaN. */ #define XLAL_REAL4_FAIL_NAN ( XLALREAL4FailNaN() ) /**< Floating-point valu e of the XLAL <tt>REAL4</tt> failure NaN. */
#define XLAL_REAL8_FAIL_NAN ( XLALREAL8FailNaN() ) /**< Floating-point valu e of the XLAL <tt>REAL8</tt> failure NaN. */ #define XLAL_REAL8_FAIL_NAN ( XLALREAL8FailNaN() ) /**< Floating-point valu e of the XLAL <tt>REAL8</tt> failure NaN. */
/* Here are the macros to test for fail NaNs. */ /* Here are the macros to test for fail NaNs. */
#define XLAL_IS_REAL4_FAIL_NAN(val) XLALIsREAL4FailNaN(val) /**< Tests if < tt>val</tt> is a XLAL <tt>REAL4</tt> failure NaN. */ #define XLAL_IS_REAL4_FAIL_NAN(val) XLALIsREAL4FailNaN(val) /**< Tests if < tt>val</tt> is a XLAL <tt>REAL4</tt> failure NaN. */
#define XLAL_IS_REAL8_FAIL_NAN(val) XLALIsREAL8FailNaN(val) /**< Tests if < tt>val</tt> is a XLAL <tt>REAL8</tt> failure NaN. */ #define XLAL_IS_REAL8_FAIL_NAN(val) XLALIsREAL8FailNaN(val) /**< Tests if < tt>val</tt> is a XLAL <tt>REAL8</tt> failure NaN. */
/** XLAL error numbers and return values. */ /** XLAL error numbers and return values. */
enum XLALErrorValue { enum XLALErrorValue {
XLAL_SUCCESS = 0, /**< Success return value (not an error number) * XLAL_SUCCESS = 0, /**< Success return value (not an error number)
/ */
XLAL_FAILURE = -1, /**< Failure return value (not an error number) * XLAL_FAILURE = -1, /**< Failure return value (not an error number)
/ */
/* these are standard error numbers */ /* these are standard error numbers */
XLAL_EIO = 5, /**< I/O error */ XLAL_EIO = 5, /**< I/O error */
XLAL_ENOMEM = 12, /**< Memory allocation error */ XLAL_ENOMEM = 12, /**< Memory allocation error */
XLAL_EFAULT = 14, /**< Invalid pointer */ XLAL_EFAULT = 14, /**< Invalid pointer */
XLAL_EINVAL = 22, /**< Invalid argument */ XLAL_EINVAL = 22, /**< Invalid argument */
XLAL_EDOM = 33, /**< Input domain error */ XLAL_EDOM = 33, /**< Input domain error */
XLAL_ERANGE = 34, /**< Output range error */ XLAL_ERANGE = 34, /**< Output range error */
/* extended error numbers start at 128 ... /* extended error numbers start at 128 ...
* should be beyond normal errnos */ * should be beyond normal errnos */
/* these are common errors for XLAL functions */ /* these are common errors for XLAL functions */
XLAL_EFAILED = 128, /**< Generic failure */ XLAL_EFAILED = 128, /**< Generic failure */
XLAL_EBADLEN = 129, /**< Inconsistent or invalid length */ XLAL_EBADLEN = 129, /**< Inconsistent or invalid length */
XLAL_ESIZE = 130, /**< Wrong size */ XLAL_ESIZE = 130, /**< Wrong size */
XLAL_EDIMS = 131, /**< Wrong dimensions */ XLAL_EDIMS = 131, /**< Wrong dimensions */
XLAL_ETYPE = 132, /**< Wrong or unknown type */ XLAL_ETYPE = 132, /**< Wrong or unknown type */
XLAL_ETIME = 133, /**< Invalid time */ XLAL_ETIME = 133, /**< Invalid time */
XLAL_EFREQ = 134, /**< Invalid freqency */ XLAL_EFREQ = 134, /**< Invalid freqency */
XLAL_EUNIT = 135, /**< Invalid units */ XLAL_EUNIT = 135, /**< Invalid units */
XLAL_ENAME = 136, /**< Wrong name */ XLAL_ENAME = 136, /**< Wrong name */
XLAL_EDATA = 137, /**< Invalid data */ XLAL_EDATA = 137, /**< Invalid data */
/* user-defined errors */ /* user-defined errors */
XLAL_EUSR0 = 200, /**< User-defined error 0 */ XLAL_EUSR0 = 200, /**< User-defined error 0 */
XLAL_EUSR1 = 201, /**< User-defined error 1 */ XLAL_EUSR1 = 201, /**< User-defined error 1 */
XLAL_EUSR2 = 202, /**< User-defined error 2 */ XLAL_EUSR2 = 202, /**< User-defined error 2 */
XLAL_EUSR3 = 203, /**< User-defined error 3 */ XLAL_EUSR3 = 203, /**< User-defined error 3 */
XLAL_EUSR4 = 204, /**< User-defined error 4 */ XLAL_EUSR4 = 204, /**< User-defined error 4 */
XLAL_EUSR5 = 205, /**< User-defined error 5 */ XLAL_EUSR5 = 205, /**< User-defined error 5 */
XLAL_EUSR6 = 206, /**< User-defined error 6 */ XLAL_EUSR6 = 206, /**< User-defined error 6 */
XLAL_EUSR7 = 207, /**< User-defined error 7 */ XLAL_EUSR7 = 207, /**< User-defined error 7 */
XLAL_EUSR8 = 208, /**< User-defined error 8 */ XLAL_EUSR8 = 208, /**< User-defined error 8 */
XLAL_EUSR9 = 209, /**< User-defined error 9 */ XLAL_EUSR9 = 209, /**< User-defined error 9 */
/* external or internal errors */ /* external or internal errors */
XLAL_ESYS = 254, /**< System error */ XLAL_ESYS = 254, /**< System error */
XLAL_EERR = 255, /**< Internal error */ XLAL_EERR = 255, /**< Internal error */
/* specific mathematical and numerical errors start at 256 */ /* specific mathematical and numerical errors start at 256 */
/* IEEE floating point errors */ /* IEEE floating point errors */
XLAL_EFPINVAL = 256, /**< IEEE Invalid floating point operation, eg XLAL_EFPINVAL = 256, /**< IEEE Invalid floating point operation, e
sqrt(-1), 0/0 */ g sqrt(-1), 0/0 */
XLAL_EFPDIV0 = 257, /**< IEEE Division by zero floating point erro XLAL_EFPDIV0 = 257, /**< IEEE Division by zero floating point err
r */ or */
XLAL_EFPOVRFLW = 258, /**< IEEE Floating point overflow error */ XLAL_EFPOVRFLW = 258, /**< IEEE Floating point overflow error */
XLAL_EFPUNDFLW = 259, /**< IEEE Floating point underflow error */ XLAL_EFPUNDFLW = 259, /**< IEEE Floating point underflow error */
XLAL_EFPINEXCT = 260, /**< IEEE Floating point inexact error */ XLAL_EFPINEXCT = 260, /**< IEEE Floating point inexact error */
/* numerical algorithm errors */ /* numerical algorithm errors */
XLAL_EMAXITER = 261, /**< Exceeded maximum number of iterations */ XLAL_EMAXITER = 261, /**< Exceeded maximum number of iterations */
XLAL_EDIVERGE = 262, /**< Series is diverging */ XLAL_EDIVERGE = 262, /**< Series is diverging */
XLAL_ESING = 263, /**< Apparent singularity detected */ XLAL_ESING = 263, /**< Apparent singularity detected */
XLAL_ETOL = 264, /**< Failed to reach specified tolerance */ XLAL_ETOL = 264, /**< Failed to reach specified tolerance */
XLAL_ELOSS = 265, /**< Loss of accuracy */ XLAL_ELOSS = 265, /**< Loss of accuracy */
/* failure from within a function call: "or" error number with this /* failure from within a function call: "or" error number with this */
*/ XLAL_EFUNC = 1024 /**< Internal function call failed bit: "or"
XLAL_EFUNC = 1024 /**< Internal function call failed bit: "or" t this with existing error number */
his with existing error number */
}; };
/* /*
* *
* These functions provide message associated with an error code and print * These functions provide message associated with an error code and print
* an error message associated with the error code. The macro XLAL_PERROR * an error message associated with the error code. The macro XLAL_PERROR
* fills in the current file and line information and uses the current * fills in the current file and line information and uses the current
* value of xlalErrno as the error number. * value of xlalErrno as the error number.
* *
*/ */
/** Returns the error message associated with an error number. */ /** Returns the error message associated with an error number. */
const char * XLALErrorString(int errnum); const char *XLALErrorString(int errnum);
/** Prints an error message for a particular error code in a standard forma t. */ /** Prints an error message for a particular error code in a standard forma t. */
void XLALPerror(const char *func, const char *file, int line, int errnum); void XLALPerror(const char *func, const char *file, int line, int errnum);
/** Prints an error message for the current value of <tt>xlalErrno</tt>. */ /** Prints an error message for the current value of <tt>xlalErrno</tt>. */
#define XLAL_PERROR( ) XLALPerror(__func__, __FILE__, __LINE__, xlalErrno) #define XLAL_PERROR( ) XLALPerror(__func__, __FILE__, __LINE__, xlalErrno)
/* /*
* *
* Here is the XLAL error handler type and the routines that set it. * Here is the XLAL error handler type and the routines that set it.
* Also provide is the default error handler. * Also provide is the default error handler.
* *
*/ */
#ifndef SWIG /* exclude from SWIG interface */ #ifndef SWIG /* exclude from SWIG interface */
/** The XLAL error handler type. */ /** The XLAL error handler type. */
typedef void XLALErrorHandlerType(const char *func, const char *file, int l typedef void XLALErrorHandlerType(const char *func, const char *file,
ine, int errnum); int line, int errnum);
/** The default XLAL error handler. */ /** The default XLAL error handler. */
void XLALDefaultErrorHandler(const char *func, const char *file, int line, void XLALDefaultErrorHandler(const char *func, const char *file, int line,
int errnum); int errnum);
/** A silent XLAL error handler. */ /** A silent XLAL error handler. */
void XLALSilentErrorHandler(const char *func, const char *file, int line, i void XLALSilentErrorHandler(const char *func, const char *file, int line,
nt errnum); int errnum);
/* Other useful XLAL error handlers. */ /* Other useful XLAL error handlers. */
/** The XLAL error handler that raises SIGABRT. */ /** The XLAL error handler that raises SIGABRT. */
void XLALAbortErrorHandler(const char *func, const char *file, int line, in void XLALAbortErrorHandler(const char *func, const char *file, int line,
t errnum); int errnum);
/** The XLAL error handler that calls exit. */ /** The XLAL error handler that calls exit. */
void XLALExitErrorHandler(const char *func, const char *file, int line, int void XLALExitErrorHandler(const char *func, const char *file, int line,
errnum); int errnum);
/** The XLAL error handler that prints a function call backtrace then raise s SIGABRT. */ /** The XLAL error handler that prints a function call backtrace then raise s SIGABRT. */
void XLALBacktraceErrorHandler(const char *func, const char *file, int line void XLALBacktraceErrorHandler(const char *func, const char *file,
, int errnum); int line, int errnum);
/** Function to return pointer to the XLAL error handler function pointer. */ /** Function to return pointer to the XLAL error handler function pointer. */
XLALErrorHandlerType ** XLALGetErrorHandlerPtr( void ); XLALErrorHandlerType **XLALGetErrorHandlerPtr(void);
/** Sets the error handler to a new handler and returns the old handler. */ /** Sets the error handler to a new handler and returns the old handler. */
XLALErrorHandlerType * XLALSetErrorHandler(XLALErrorHandlerType *newHandler XLALErrorHandlerType *XLALSetErrorHandler(XLALErrorHandlerType *
); newHandler);
/** Sets the error handler to the default handler and returns the old handl er. */ /** Sets the error handler to the default handler and returns the old handl er. */
XLALErrorHandlerType * XLALSetDefaultErrorHandler(void); XLALErrorHandlerType *XLALSetDefaultErrorHandler(void);
/** Sets the error handler to a silent handler and returns the old handler. */ /** Sets the error handler to a silent handler and returns the old handler. */
XLALErrorHandlerType * XLALSetSilentErrorHandler(void); XLALErrorHandlerType *XLALSetSilentErrorHandler(void);
#endif /* SWIG */ #endif /* SWIG */
/* /*
* *
* Here are the routines that set or clear the XLAL error number. * Here are the routines that set or clear the XLAL error number.
* *
*/ */
#ifdef SWIG /* SWIG interface directives */ #ifdef SWIG /* SWIG interface directives */
SWIGLAL(DISABLE_EXCEPTIONS(XLALSetErrno, XLALGetBaseErrno, XLALClearErrno)) ; SWIGLAL(DISABLE_EXCEPTIONS(XLALSetErrno, XLALGetBaseErrno, XLALClearErrno)) ;
#endif /* SWIG */ #endif /* SWIG */
/** Sets the XLAL error number to errnum, returns the new value. */ /** Sets the XLAL error number to errnum, returns the new value. */
int XLALSetErrno(int errnum); int XLALSetErrno(int errnum);
/** Gets the XLAL base error number ignoring the internal-function-failed f lag. */ /** Gets the XLAL base error number ignoring the internal-function-failed f lag. */
int XLALGetBaseErrno(void); int XLALGetBaseErrno(void);
/** Clears the XLAL error number, returns the old value. */ /** Clears the XLAL error number, returns the old value. */
skipping to change at line 494 skipping to change at line 530
* The LAL specifiation requires that the XLAL error number be a modifiable * The LAL specifiation requires that the XLAL error number be a modifiable
* lvalue. Similarly, the function pointer to the XLAL error handler is * lvalue. Similarly, the function pointer to the XLAL error handler is
* a modifiable lvalue. These are implemented as macros that dereference * a modifiable lvalue. These are implemented as macros that dereference
* pointers to the current value (in the current thread). The pointer is * pointers to the current value (in the current thread). The pointer is
* returned by the functions XLALGetErrnoPtr and XLALGetErrorHandlerPtr. * returned by the functions XLALGetErrnoPtr and XLALGetErrorHandlerPtr.
* Here these functions and macros are defined. * Here these functions and macros are defined.
* *
*/ */
/** Function to return pointer to the XLAL error number. */ /** Function to return pointer to the XLAL error number. */
int * XLALGetErrnoPtr(void); int *XLALGetErrnoPtr(void);
/* these are the modifiable lvalues for xlalErrno and XLALErrorHandler */ /* these are the modifiable lvalues for xlalErrno and XLALErrorHandler */
#define xlalErrno ( * XLALGetErrnoPtr() ) /**< Modifiable lvalue containing the XLAL error number */ #define xlalErrno ( * XLALGetErrnoPtr() ) /**< Modifiable lvalue containing the XLAL error number */
#define XLALErrorHandler ( * XLALGetErrorHandlerPtr() ) /**< Modifiable lva lue containing the XLAL error handler */ #define XLALErrorHandler ( * XLALGetErrorHandlerPtr() ) /**< Modifiable lva lue containing the XLAL error handler */
/** /**
* *
* A macro to (i) disable the XLAL error handling and preserve the * A macro to (i) disable the XLAL error handling and preserve the
* current value of xlalErrno (ii) perform a statement that involves an * current value of xlalErrno (ii) perform a statement that involves an
* XLAL function call and (iii) restore the XLAL error handler and value of * XLAL function call and (iii) restore the XLAL error handler and value of
skipping to change at line 534 skipping to change at line 570
* Here are the routines and macros that are used to report errors when * Here are the routines and macros that are used to report errors when
* an XLAL function fails. They (i) set the XLAL error number and (ii) * an XLAL function fails. They (i) set the XLAL error number and (ii)
* invoke the XLAL error handler. The macros also (iii) return the * invoke the XLAL error handler. The macros also (iii) return the
* appropriate failure codes. The macros should be used to report all * appropriate failure codes. The macros should be used to report all
* failures. * failures.
* *
*/ */
/** Routine to set the XLAL error number and invoke the XLAL error handler. /** Routine to set the XLAL error number and invoke the XLAL error handler.
* It is used by the error macros. */ * It is used by the error macros. */
void XLALError( void XLALError(const char *func,
const char *func, /**< name of function where the error occurs */ /**< name of function where the error occurs */
const char *file, /**< source file name (use the __FILE__ macro) */ const char *file,
int line, /**< source line number (use the __LINE__ macro) * /**< source file name (use the __FILE__ macro) */
/ int line, /**< source line number (use the __LINE__ macro)
int errnum /**< error code */ */
); int errnum /**< error code */
);
/** \brief Macro to invoke the <tt>XLALError()</tt> function and return /** \brief Macro to invoke the <tt>XLALError()</tt> function and return
* with code val (it should not really be used itself, but forms the basis for * with code val (it should not really be used itself, but forms the basis for
* other macros). * other macros).
* *
* Prototype: <b>XLAL_ERROR_VAL(val, errnum [, fmt [, ...]])</b> * Prototype: <b>XLAL_ERROR_VAL(val, errnum [, fmt [, ...]])</b>
* *
* \b Parameters:<ul> * \b Parameters:<ul>
* <li> \b val The value to return. * <li> \b val The value to return.
* <li> \b errnum The XLAL error number to set. * <li> \b errnum The XLAL error number to set.
skipping to change at line 734 skipping to change at line 771
* <li> \b fmt (Optional) Format string for additional error information. * <li> \b fmt (Optional) Format string for additional error information.
* <li> \b ... (Optional) Additional arguments for printf-like format. * <li> \b ... (Optional) Additional arguments for printf-like format.
* </ul> * </ul>
*/ */
#define XLAL_CHECK_REAL8(assertion, ...) \ #define XLAL_CHECK_REAL8(assertion, ...) \
XLAL_CHECK_VAL(XLAL_REAL8_FAIL_NAN, assertion, __VA_ARGS__) XLAL_CHECK_VAL(XLAL_REAL8_FAIL_NAN, assertion, __VA_ARGS__)
/*@}*/ /*@}*/
#if 0 #if 0
{ /* so that editors will match succeeding brace */ { /* so that editors will match succeeding brace */
#elif defined(__cplusplus) #elif defined(__cplusplus)
} }
#endif #endif
#endif /* XLALERROR_H */ #endif /* XLALERROR_H */
 End of changes. 33 change blocks. 
132 lines changed or deleted 151 lines changed or added


 XLALGSL.h   XLALGSL.h 
skipping to change at line 28 skipping to change at line 28
*/ */
#ifndef XLALGSL_H #ifndef XLALGSL_H
#define XLALGSL_H #define XLALGSL_H
#include <gsl/gsl_errno.h> #include <gsl/gsl_errno.h>
#include <lal/LALConfig.h> #include <lal/LALConfig.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#elif 0
} /* so that editors will match preceding brace */
#endif #endif
#ifdef LAL_PTHREAD_LOCK #ifdef LAL_PTHREAD_LOCK
#include <pthread.h> #include <pthread.h>
extern pthread_mutex_t lalGSLPthreadMutex; extern pthread_mutex_t lalGSLPthreadMutex;
#define XLALGSL_PTHREAD_MUTEX_LOCK pthread_mutex_lock( &lalGSLPthreadMutex ) #define XLALGSL_PTHREAD_MUTEX_LOCK pthread_mutex_lock( &lalGSLPthreadMutex )
#define XLALGSL_PTHREAD_MUTEX_UNLOCK pthread_mutex_unlock( &lalGSLPthreadMu tex ) #define XLALGSL_PTHREAD_MUTEX_UNLOCK pthread_mutex_unlock( &lalGSLPthreadMu tex )
#else #else
#define XLALGSL_PTHREAD_MUTEX_LOCK ((void)(0)) #define XLALGSL_PTHREAD_MUTEX_LOCK ((void)(0))
#define XLALGSL_PTHREAD_MUTEX_UNLOCK ((void)(0)) #define XLALGSL_PTHREAD_MUTEX_UNLOCK ((void)(0))
skipping to change at line 50 skipping to change at line 52
#define XLAL_CALLGSL( statement ) \ #define XLAL_CALLGSL( statement ) \
do { \ do { \
gsl_error_handler_t *saveGSLErrorHandler_; \ gsl_error_handler_t *saveGSLErrorHandler_; \
XLALGSL_PTHREAD_MUTEX_LOCK; \ XLALGSL_PTHREAD_MUTEX_LOCK; \
saveGSLErrorHandler_ = gsl_set_error_handler_off(); \ saveGSLErrorHandler_ = gsl_set_error_handler_off(); \
statement; \ statement; \
gsl_set_error_handler( saveGSLErrorHandler_ ); \ gsl_set_error_handler( saveGSLErrorHandler_ ); \
XLALGSL_PTHREAD_MUTEX_UNLOCK; \ XLALGSL_PTHREAD_MUTEX_UNLOCK; \
} while (0) } while (0)
#ifdef __cplusplus #if 0
{ /* so that editors will match succeeding brace */
#elif defined(__cplusplus)
} }
#endif #endif
#endif /* XLALGSL_H */ #endif /* XLALGSL_H */
 End of changes. 3 change blocks. 
2 lines changed or deleted 5 lines changed or added


 lalswig_error.i   lalswig_error.i 
skipping to change at line 34 skipping to change at line 34
#ifdef SWIG #ifdef SWIG
// Replace default LAL raise/abort hooks with custom handlers which // Replace default LAL raise/abort hooks with custom handlers which
// translate them into an XLAL error, so that they will be caught // translate them into an XLAL error, so that they will be caught
// by the SWIG %exception handler. // by the SWIG %exception handler.
%header %{ %header %{
#include <signal.h> #include <signal.h>
// Print the supplied error message, then raise an XLAL error. // Print the supplied error message, then raise an XLAL error.
int lalswig_LALRaise(int sig, const char *fmt, ...) { static int lalswig_LALRaise(int sig, const char *fmt, ...) {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);
(void) vfprintf(stderr, fmt, ap); (void) vfprintf(stderr, fmt, ap);
va_end(ap); va_end(ap);
(void) fprintf(stderr, "LALRaise: %s\n", strsignal(sig)); (void) fprintf(stderr, "LALRaise: %s\n", strsignal(sig));
swiglal_XLAL_error(); XLALSetErrno(XLAL_EFAILED);
return 0; return 0;
} }
// Print the supplied error message, then raise an XLAL error. // Print the supplied error message, then raise an XLAL error.
void lalswig_LALAbort(const char *fmt, ...) { static void lalswig_LALAbort(const char *fmt, ...) {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);
(void) vfprintf(stderr, fmt, ap); (void) vfprintf(stderr, fmt, ap);
va_end(ap); va_end(ap);
swiglal_XLAL_error(); XLALSetErrno(XLAL_EFAILED);
} }
%} %}
%init %{ %init %{
lalRaiseHook = lalswig_LALRaise; lalRaiseHook = lalswig_LALRaise;
lalAbortHook = lalswig_LALAbort; lalAbortHook = lalswig_LALAbort;
%} %}
#endif // SWIG #endif // SWIG
 End of changes. 4 change blocks. 
4 lines changed or deleted 4 lines changed or added


 lalswig_gsl.i   lalswig_gsl.i 
skipping to change at line 40 skipping to change at line 40
%header %{ %header %{
#include <gsl/gsl_vector.h> #include <gsl/gsl_vector.h>
#include <gsl/gsl_matrix.h> #include <gsl/gsl_matrix.h>
#include <gsl/gsl_rng.h> #include <gsl/gsl_rng.h>
%} %}
////////// Error handling ////////// ////////// Error handling //////////
// Set custom GSL error handler which raises an XLAL error (instead of abor ting). // Set custom GSL error handler which raises an XLAL error (instead of abor ting).
%header %{ %header %{
void swiglal_gsl_error_handler(const char *reason, const char *file, int line, int errnum) { static void swiglal_gsl_error_handler(const char *reason, const char *fil e, int line, int errnum) {
XLALPrintError("GSL function failed: %s (errnum=%i)\n", reason, errnum) ; XLALPrintError("GSL function failed: %s (errnum=%i)\n", reason, errnum) ;
XLALError("<GSL function>", file, line, XLAL_EFAILED); XLALError("<GSL function>", file, line, XLAL_EFAILED);
} }
%} %}
%init %{ %init %{
gsl_set_error_handler(swiglal_gsl_error_handler); gsl_set_error_handler(swiglal_gsl_error_handler);
%} %}
////////// GSL vectors and matrices ////////// ////////// GSL vectors and matrices //////////
skipping to change at line 69 skipping to change at line 69
} }
gsl_vector##NAME(gsl_vector##NAME *v0) { gsl_vector##NAME(gsl_vector##NAME *v0) {
gsl_vector##NAME *v = gsl_vector##NAME##_alloc(v0->size); gsl_vector##NAME *v = gsl_vector##NAME##_alloc(v0->size);
gsl_vector##NAME##_memcpy(v, v0); gsl_vector##NAME##_memcpy(v, v0);
return v; return v;
} }
~gsl_vector##NAME() { ~gsl_vector##NAME() {
%swiglal_call_dtor(gsl_vector##NAME##_free, $self); %swiglal_call_dtor(gsl_vector##NAME##_free, $self);
} }
} }
%swiglal_array_dynamic_1D(TYPE, size_t, data, size, arg1->stride); %swiglal_array_dynamic_size(size_t, size);
%swiglal_array_dynamic_1D(gsl_vector##NAME, TYPE, size_t, data, arg1->s
ize, arg1->stride);
} gsl_vector##NAME; } gsl_vector##NAME;
// GSL matrix of type NAME. // GSL matrix of type NAME.
typedef struct { typedef struct {
%extend { %extend {
gsl_matrix##NAME(const size_t n1, const size_t n2) { gsl_matrix##NAME(const size_t n1, const size_t n2) {
return gsl_matrix##NAME##_calloc(n1, n2); return gsl_matrix##NAME##_calloc(n1, n2);
} }
gsl_matrix##NAME(gsl_matrix##NAME *m0) { gsl_matrix##NAME(gsl_matrix##NAME *m0) {
gsl_matrix##NAME *m = gsl_matrix##NAME##_alloc(m0->size1, m0->size2 ); gsl_matrix##NAME *m = gsl_matrix##NAME##_alloc(m0->size1, m0->size2 );
gsl_matrix##NAME##_memcpy(m, m0); gsl_matrix##NAME##_memcpy(m, m0);
return m; return m;
} }
~gsl_matrix##NAME() { ~gsl_matrix##NAME() {
%swiglal_call_dtor(gsl_matrix##NAME##_free, $self); %swiglal_call_dtor(gsl_matrix##NAME##_free, $self);
} }
} }
%swiglal_array_dynamic_2D(TYPE, size_t, data, size1, size2, arg1->tda, %swiglal_array_dynamic_size(size_t, size1);
1); %swiglal_array_dynamic_size(size_t, size2);
%swiglal_array_dynamic_2D(gsl_matrix##NAME, TYPE, size_t, data, arg1->s
ize1, arg1->size2, arg1->tda, 1);
} gsl_matrix##NAME; } gsl_matrix##NAME;
%enddef // %lalswig_gsl_vector_matrix %enddef // %lalswig_gsl_vector_matrix
// GSL integer vectors and matrices. // GSL integer vectors and matrices.
%lalswig_gsl_vector_matrix(short, _short); %lalswig_gsl_vector_matrix(short, _short);
%lalswig_gsl_vector_matrix(unsigned short, _ushort); %lalswig_gsl_vector_matrix(unsigned short, _ushort);
%lalswig_gsl_vector_matrix(int, _int); %lalswig_gsl_vector_matrix(int, _int);
%lalswig_gsl_vector_matrix(unsigned int, _uint); %lalswig_gsl_vector_matrix(unsigned int, _uint);
%lalswig_gsl_vector_matrix(long, _long); %lalswig_gsl_vector_matrix(long, _long);
 End of changes. 3 change blocks. 
4 lines changed or deleted 8 lines changed or added


 lalswig_ligotimegps.i   lalswig_ligotimegps.i 
skipping to change at line 24 skipping to change at line 24
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with with program; see the file COPYING. If not, write to the // along with with program; see the file COPYING. If not, write to the
// Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, // Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
// MA 02111-1307 USA // MA 02111-1307 USA
// //
// SWIG methods and operators for LAL GPS time class // SWIG methods and operators for LAL GPS time class
// Author: Karl Wette // Author: Karl Wette
// Only in SWIG interface. // Only in SWIG interface.
#ifdef SWIG #if defined(SWIG) && !defined(SWIGXML)
// Specialised input typemaps for LIGOTimeGPS structs.
// Accepts a SWIG-wrapped LIGOTimeGPS or a double as input.
%typemap(in, noblock=1, fragment=SWIG_AsVal_frag(double))
LIGOTimeGPS (void *argp = 0, int res = 0),
const LIGOTimeGPS (void *argp = 0, int res = 0)
{
res = SWIG_ConvertPtr($input, &argp, $&descriptor, $disown | %convertptr_
flags);
if (!SWIG_IsOK(res)) {
double val = 0;
res = SWIG_AsVal(double)($input, &val);
if (!SWIG_IsOK(res)) {
%argument_fail(res, "$type", $symname, $argnum);
} else {
XLALGPSSetREAL8(&$1, val);
}
} else {
if (!argp) {
%argument_nullref("$type", $symname, $argnum);
} else {
$&ltype temp = %reinterpret_cast(argp, $&ltype);
$1 = *temp;
if (SWIG_IsNewObj(res)) {
%delete(temp);
}
}
}
}
%typemap(freearg) LIGOTimeGPS, const LIGOTimeGPS "";
// Specialised input typemaps for pointers to LIGOTimeGPS.
// Accepts a SWIG-wrapped LIGOTimeGPS or a double as input.
%typemap(in, noblock=1, fragment=SWIG_AsVal_frag(double))
LIGOTimeGPS* (LIGOTimeGPS tmp, void *argp = 0, int res = 0),
const LIGOTimeGPS* (LIGOTimeGPS tmp, void *argp = 0, int res = 0)
{
res = SWIG_ConvertPtr($input, &argp, $descriptor, $disown | %convertptr_f
lags);
if (!SWIG_IsOK(res)) {
double val = 0;
res = SWIG_AsVal(double)($input, &val);
if (!SWIG_IsOK(res)) {
%argument_fail(res, "$type", $symname, $argnum);
} else {
$1 = %reinterpret_cast(XLALGPSSetREAL8(&tmp, val), $ltype);
}
} else {
$1 = %reinterpret_cast(argp, $ltype);
}
}
%typemap(freearg) LIGOTimeGPS*, const LIGOTimeGPS* "";
// Allocate a new LIGOTimeGPS. // Allocate a new LIGOTimeGPS.
#define %lalswig_new_LIGOTimeGPS() (LIGOTimeGPS*)(XLALCalloc(1, sizeof(LIGO TimeGPS))) #define %lalswig_new_LIGOTimeGPS() (LIGOTimeGPS*)(XLALCalloc(1, sizeof(LIGO TimeGPS)))
// Extend the LIGOTimeGPS class. // Extend the LIGOTimeGPS class.
// Uses some code from PyLAL: Copyright (C) 2006 Kipp Cannon // Uses some code from PyLAL: Copyright (C) 2006 Kipp Cannon
%extend tagLIGOTimeGPS { %extend tagLIGOTimeGPS {
// Construct a new LIGOTimeGPS from a real number. // Construct a new LIGOTimeGPS from a real number.
tagLIGOTimeGPS(REAL8 t) { tagLIGOTimeGPS(REAL8 t) {
skipping to change at line 47 skipping to change at line 97
// Construct a new LIGOTimeGPS from integer seconds and nanoseconds. // Construct a new LIGOTimeGPS from integer seconds and nanoseconds.
tagLIGOTimeGPS(INT4 gpssec) { tagLIGOTimeGPS(INT4 gpssec) {
return XLALGPSSet(%lalswig_new_LIGOTimeGPS(), gpssec, 0); return XLALGPSSet(%lalswig_new_LIGOTimeGPS(), gpssec, 0);
} }
tagLIGOTimeGPS(INT4 gpssec, INT8 gpsnan) { tagLIGOTimeGPS(INT4 gpssec, INT8 gpsnan) {
return XLALGPSSet(%lalswig_new_LIGOTimeGPS(), gpssec, gpsnan); return XLALGPSSet(%lalswig_new_LIGOTimeGPS(), gpssec, gpsnan);
} }
// Construct a new LIGOTimeGPS from a string // Construct a new LIGOTimeGPS from a string
tagLIGOTimeGPS(const char* str) { tagLIGOTimeGPS(const char *str) {
LIGOTimeGPS *gps = %lalswig_new_LIGOTimeGPS(); LIGOTimeGPS *gps = %lalswig_new_LIGOTimeGPS();
char *end = NULL; char *end = NULL;
if (XLALStrToGPS(gps, str, &end) < 0 || end == str) { if (XLALStrToGPS(gps, str, &end) < 0 || *end != '\0') {
XLALFree(gps); XLALFree(gps);
xlalErrno = XLAL_EFUNC; // Silently signal an error to constructor
return NULL; return NULL;
} }
return gps; return gps;
} }
// Operators are implemented by defining Python-style __operator__ // Operators are implemented by defining Python-style __operator__
// methods (since LAL is C99, we don't have C++ operators available). // methods (since LAL is C99, we don't have C++ operators available).
// Many SWIG language modules will automatically map these functions // Many SWIG language modules will automatically map these functions
// to scripting-language operations in their runtime code. In some // to scripting-language operations in their runtime code. In some
// cases (ironically, Python itself when using -builtin!) additional // cases (ironically, Python itself when using -builtin!) additional
skipping to change at line 247 skipping to change at line 298
%enddef %enddef
// Comparison operators // Comparison operators
%lalswig_LIGOTimeGPS_comparison_operator(lt, < ); %lalswig_LIGOTimeGPS_comparison_operator(lt, < );
%lalswig_LIGOTimeGPS_comparison_operator(le, <=); %lalswig_LIGOTimeGPS_comparison_operator(le, <=);
%lalswig_LIGOTimeGPS_comparison_operator(eq, ==); %lalswig_LIGOTimeGPS_comparison_operator(eq, ==);
%lalswig_LIGOTimeGPS_comparison_operator(ne, !=); %lalswig_LIGOTimeGPS_comparison_operator(ne, !=);
%lalswig_LIGOTimeGPS_comparison_operator(gt, > ); %lalswig_LIGOTimeGPS_comparison_operator(gt, > );
%lalswig_LIGOTimeGPS_comparison_operator(ge, >=); %lalswig_LIGOTimeGPS_comparison_operator(ge, >=);
// Return the number of nanoseconds in a LIGOTimeGPS
INT8 ns() {
return XLALGPSToINT8NS($self);
}
} // %extend tagLIGOTimeGPS } // %extend tagLIGOTimeGPS
#endif // SWIG #endif // SWIG
 End of changes. 5 change blocks. 
3 lines changed or deleted 61 lines changed or added


 lalswig_test.i   lalswig_test.i 
skipping to change at line 19 skipping to change at line 19
lalswig_test_enum_c lalswig_test_enum_c
} lalswig_test_enum; } lalswig_test_enum;
typedef struct taglalswig_test_struct { typedef struct taglalswig_test_struct {
INT4 i; INT4 i;
REAL4 f; REAL4 f;
CHAR str[10]; CHAR str[10];
INT4 vec[3]; INT4 vec[3];
INT4 mat[2][3]; INT4 mat[2][3];
lalswig_test_enum evec[3]; lalswig_test_enum evec[3];
} lalswig_test_struct; } lalswig_test_struct;
const lalswig_test_struct lalswig_test_struct_const = { static const lalswig_test_struct lalswig_test_struct_const = {
3, 5.7, "abcde", {1,2,3}, {{4,5,6},{7,8,9}}, 3, 5.7, "abcde", {1,2,3}, {{4,5,6},{7,8,9}},
{lalswig_test_enum_a,lalswig_test_enum_b,lalswig_test_enum_c} {lalswig_test_enum_a,lalswig_test_enum_b,lalswig_test_enum_c}
}; };
lalswig_test_struct lalswig_test_struct_vector[3]; static lalswig_test_struct lalswig_test_struct_vector[3];
lalswig_test_struct lalswig_test_struct_matrix[2][3]; static lalswig_test_struct lalswig_test_struct_matrix[2][3];
lalswig_test_enum lalswig_test_enum_vector[3]; static lalswig_test_enum lalswig_test_enum_vector[3];
lalswig_test_enum lalswig_test_enum_matrix[2][3]; static lalswig_test_enum lalswig_test_enum_matrix[2][3];
INT4 lalswig_test_INT4_vector[3]; static INT4 lalswig_test_empty_INT4_vector[0];
INT4 lalswig_test_INT4_matrix[2][3]; static INT4 lalswig_test_INT4_vector[3];
const INT4 lalswig_test_INT4_const_vector[3] = {1, 2, 4}; static INT4 lalswig_test_INT4_matrix[2][3];
const INT4 lalswig_test_INT4_const_matrix[2][3] = {{1, 2, 4}, {2, 4, 8}}; static const INT4 lalswig_test_INT4_const_vector[3] = {1, 2, 4};
REAL8 lalswig_test_REAL8_vector[3]; static const INT4 lalswig_test_INT4_const_matrix[2][3] = {{1, 2, 4}, {2, 4,
REAL8 lalswig_test_REAL8_matrix[2][3]; 8}};
COMPLEX8 lalswig_test_COMPLEX8_vector[3]; static REAL8 lalswig_test_REAL8_vector[3];
COMPLEX8 lalswig_test_COMPLEX8_matrix[2][3]; static REAL8 lalswig_test_REAL8_matrix[2][3];
static COMPLEX8 lalswig_test_COMPLEX8_vector[3];
static COMPLEX8 lalswig_test_COMPLEX8_matrix[2][3];
// Test dynamic array of pointer access
typedef struct taglalswig_test_arrayofdata {
#ifdef SWIG
SWIGLAL(ARRAY_1D(lalswig_test_arrayofdata, INT4, data, UINT4, length));
#endif // SWIG
UINT4 length;
INT4 *data;
} lalswig_test_arrayofdata;
typedef struct taglalswig_test_arrayofptrs {
#ifdef SWIG
SWIGLAL(ARRAY_1D(lalswig_test_arrayofptrs, lalswig_test_arrayofdata*, dat
a, UINT4, length));
#endif // SWIG
UINT4 length;
lalswig_test_arrayofdata **data;
} lalswig_test_arrayofptrs;
static lalswig_test_arrayofptrs* lalswig_test_Create_arrayofptrs(UINT4);
static void lalswig_test_Destroy_arrayofptrs(lalswig_test_arrayofptrs*);
#ifdef SWIG
%header %{
static lalswig_test_arrayofptrs* lalswig_test_Create_arrayofptrs(UINT4 le
ngth) {
lalswig_test_arrayofptrs* ap = (lalswig_test_arrayofptrs*)XLALMalloc(si
zeof(lalswig_test_arrayofptrs));
XLAL_CHECK_NULL(ap != NULL, XLAL_ENOMEM);
ap->length = length;
ap->data = (lalswig_test_arrayofdata**)XLALCalloc(ap->length, sizeof(la
lswig_test_arrayofdata*));
XLAL_CHECK_NULL(ap->data != NULL, XLAL_ENOMEM);
for (UINT4 i = 0; i < ap->length; ++i) {
ap->data[i] = (lalswig_test_arrayofdata*)XLALMalloc(sizeof(lalswig_te
st_arrayofdata));
XLAL_CHECK_NULL(ap->data[i] != NULL, XLAL_ENOMEM);
ap->data[i]->length = 2*length;
ap->data[i]->data = (INT4*)XLALCalloc(ap->data[i]->length, sizeof(INT
4));
XLAL_CHECK_NULL(ap->data[i]->data != NULL, XLAL_ENOMEM);
for (UINT4 j = 0; j < ap->data[i]->length; ++j) {
ap->data[i]->data[j] = 42*length*i + j;
}
}
return ap;
}
static void lalswig_test_Destroy_arrayofptrs(lalswig_test_arrayofptrs* ap
) {
if (ap) {
if (ap->data) {
for (UINT4 i = 0; i < ap->length; ++i) {
if (ap->data[i]) {
if (ap->data[i]->data) {
XLALFree(ap->data[i]->data);
}
XLALFree(ap->data[i]);
}
}
XLALFree(ap->data);
}
XLALFree(ap);
}
}
%}
#endif // SWIG
// Test LIGOTimeGPS operations.
typedef struct taglalswig_test_gps {
LIGOTimeGPS t;
} lalswig_test_gps;
static REAL8 lalswig_test_noptrgps(const LIGOTimeGPS gps);
#ifdef SWIG
%header %{
static REAL8 lalswig_test_noptrgps(const LIGOTimeGPS gps) {
return XLALGPSGetREAL8(&gps);
}
%}
#endif // SWIG
 End of changes. 2 change blocks. 
1 lines changed or deleted 1 lines changed or added


 swiglal_common.i   swiglal_common.i 
skipping to change at line 87 skipping to change at line 87
#if #X != "" #if #X != ""
MACRO(A, X); MACRO(A, X);
%_swiglal_map_a(MACRO, A, __VA_ARGS__); %_swiglal_map_a(MACRO, A, __VA_ARGS__);
#endif #endif
%enddef %enddef
%define %swiglal_map_a(MACRO, A, ...) %define %swiglal_map_a(MACRO, A, ...)
%_swiglal_map_a(MACRO, A, __VA_ARGS__, ); %_swiglal_map_a(MACRO, A, __VA_ARGS__, );
%enddef %enddef
// The macro %swiglal_map_ab() maps a three-argument MACRO(A, B, X) onto a list // The macro %swiglal_map_ab() maps a three-argument MACRO(A, B, X) onto a list
// of arguments (which may be empty), with a common first arguments A and B . // of arguments (which may be empty), with common first arguments A and B.
%define %_swiglal_map_ab(MACRO, A, B, X, ...) %define %_swiglal_map_ab(MACRO, A, B, X, ...)
#if #X != "" #if #X != ""
MACRO(A, B, X); MACRO(A, B, X);
%_swiglal_map_ab(MACRO, A, B, __VA_ARGS__); %_swiglal_map_ab(MACRO, A, B, __VA_ARGS__);
#endif #endif
%enddef %enddef
%define %swiglal_map_ab(MACRO, A, B, ...) %define %swiglal_map_ab(MACRO, A, B, ...)
%_swiglal_map_ab(MACRO, A, B, __VA_ARGS__, ); %_swiglal_map_ab(MACRO, A, B, __VA_ARGS__, );
%enddef %enddef
// The macro %swiglal_map_abc() maps a four-argument MACRO(A, B, C, X) onto
a list
// of arguments (which may be empty), with common first arguments A, B, and
C.
%define %_swiglal_map_abc(MACRO, A, B, C, X, ...)
#if #X != ""
MACRO(A, B, C, X);
%_swiglal_map_abc(MACRO, A, B, C, __VA_ARGS__);
#endif
%enddef
%define %swiglal_map_abc(MACRO, A, B, C, ...)
%_swiglal_map_abc(MACRO, A, B, C, __VA_ARGS__, );
%enddef
// Apply and clear SWIG typemaps. // Apply and clear SWIG typemaps.
%define %swiglal_apply(TYPEMAP, TYPE, NAME) %define %swiglal_apply(TYPEMAP, TYPE, NAME)
%apply TYPEMAP { TYPE NAME }; %apply TYPEMAP { TYPE NAME };
%enddef %enddef
%define %swiglal_clear(TYPE, NAME) %define %swiglal_clear(TYPE, NAME)
%clear TYPE NAME; %clear TYPE NAME;
%enddef %enddef
// Apply a SWIG feature. // Apply a SWIG feature.
%define %swiglal_feature(FEATURE, VALUE, NAME) %define %swiglal_feature(FEATURE, VALUE, NAME)
%feature(FEATURE, VALUE) NAME; %feature(FEATURE, VALUE) NAME;
%enddef %enddef
%define %swiglal_feature_nspace(FEATURE, VALUE, NSPACE, NAME)
%feature(FEATURE, VALUE) NSPACE::NAME;
%enddef
// Macros for allocating/copying new instances and arrays // Macros for allocating/copying new instances and arrays
// Analogous to SWIG macros but using XLAL memory functions // Analogous to SWIG macros but using XLAL memory functions
#define %swiglal_new_instance(TYPE...) \ #define %swiglal_new_instance(TYPE...) \
%reinterpret_cast(XLALMalloc(sizeof(TYPE)), TYPE*) %reinterpret_cast(XLALMalloc(sizeof(TYPE)), TYPE*)
#define %swiglal_new_copy(VAL, TYPE...) \ #define %swiglal_new_copy(VAL, TYPE...) \
%reinterpret_cast(memcpy(%swiglal_new_instance(TYPE), &VAL, sizeof(TYPE)) , TYPE*) %reinterpret_cast(memcpy(%swiglal_new_instance(TYPE), &VAL, sizeof(TYPE)) , TYPE*)
#define %swiglal_new_array(SIZE, TYPE...) \ #define %swiglal_new_array(SIZE, TYPE...) \
%reinterpret_cast(XLALMalloc((SIZE)*sizeof(TYPE)), TYPE*) %reinterpret_cast(XLALMalloc((SIZE)*sizeof(TYPE)), TYPE*)
#define %swiglal_new_copy_array(PTR, SIZE, TYPE...) \ #define %swiglal_new_copy_array(PTR, SIZE, TYPE...) \
skipping to change at line 150 skipping to change at line 165
%} %}
// Include LAL headers. // Include LAL headers.
%header %{ %header %{
#include <lal/LALDatatypes.h> #include <lal/LALDatatypes.h>
#include <lal/LALMalloc.h> #include <lal/LALMalloc.h>
#include <lal/XLALError.h> #include <lal/XLALError.h>
#include <lal/Date.h> #include <lal/Date.h>
%} %}
// Print LAL debugging errors by default.
%init %{
lalDebugLevel |= LALERROR;
%}
// Version of SWIG used to generate wrapping code. // Version of SWIG used to generate wrapping code.
%inline %{const int swig_version = SWIG_VERSION;%} %inline %{const int swig_version = SWIG_VERSION;%}
// Whether wrapping code was generated in debug mode. // Whether wrapping code was generated in debug mode.
#ifdef NDEBUG #ifdef NDEBUG
%inline %{const bool swig_debug = false;%} %inline %{const bool swig_debug = false;%}
#else #else
%inline %{const bool swig_debug = true;%} %inline %{const bool swig_debug = true;%}
#endif #endif
skipping to change at line 192 skipping to change at line 202
// - LAL: For any function which has a LALStatus* argument, create a // - LAL: For any function which has a LALStatus* argument, create a
// blank LALStatus struct and pass its pointer to the LAL function. // blank LALStatus struct and pass its pointer to the LAL function.
// After the function is called, check the LALStatus statusCode; // After the function is called, check the LALStatus statusCode;
// if it is non-zero, raise a generic XLAL error (to set the XLAL // if it is non-zero, raise a generic XLAL error (to set the XLAL
// error number), then a native scripting-language exception. The // error number), then a native scripting-language exception. The
// swiglal_check_LALStatus (C) preprocessor symbol determines if // swiglal_check_LALStatus (C) preprocessor symbol determines if
// the LAL error handling code is invoked; by default this symbol // the LAL error handling code is invoked; by default this symbol
// should be undefined, i.e. functions are XLAL functions by default. // should be undefined, i.e. functions are XLAL functions by default.
%header %{ %header %{
static const LALStatus swiglal_empty_LALStatus = {0, NULL, NULL, NULL, NULL , 0, NULL, 0}; static const LALStatus swiglal_empty_LALStatus = {0, NULL, NULL, NULL, NULL , 0, NULL, 0};
#define swiglal_XLAL_error() XLALError(__func__, __FILE__, __LINE__, XLAL_E FAILED)
#undef swiglal_check_LALStatus #undef swiglal_check_LALStatus
%} %}
%typemap(in, noblock=1, numinputs=0) LALStatus* { %typemap(in, noblock=1, numinputs=0) LALStatus* {
LALStatus lalstatus = swiglal_empty_LALStatus; LALStatus lalstatus = swiglal_empty_LALStatus;
$1 = &lalstatus; $1 = &lalstatus;
%#define swiglal_check_LALStatus %#define swiglal_check_LALStatus
} }
%exception %{ %exception %{
XLALClearErrno(); XLALClearErrno();
$action $action
#ifdef swiglal_check_LALStatus #ifdef swiglal_check_LALStatus
if (lalstatus.statusCode) { if (lalstatus.statusCode) {
swiglal_XLAL_error(); XLALSetErrno(XLAL_EFAILED);
SWIG_exception(SWIG_RuntimeError, lalstatus.statusDescription); SWIG_exception(SWIG_RuntimeError, lalstatus.statusDescription);
} }
#else #else
if (xlalErrno) { if (xlalErrno) {
SWIG_exception(SWIG_RuntimeError, XLALErrorString(xlalErrno)); SWIG_exception(SWIG_RuntimeError, XLALErrorString(xlalErrno));
} }
#endif #endif
#undef swiglal_check_LALStatus #undef swiglal_check_LALStatus
%} %}
////////// General fragments ////////// ////////// General fragments //////////
// Empty fragment, for fragment-generating macros. // Empty fragment, for fragment-generating macros.
%fragment("swiglal_empty_frag", "header") {} %fragment("swiglal_empty_frag", "header") {}
// Wrappers around SWIG's pointer to/from SWIG-wrapped scripting language o bject functions. // Wrappers around SWIG's pointer to/from SWIG-wrapped scripting language o bject functions.
// swiglal_from_SWIGTYPE() simply returns a SWIG-wrapped object containing the input pointer. // swiglal_from_SWIGTYPE() simply returns a SWIG-wrapped object containing the input pointer.
// swiglal_from_SWIGTYPE() extracts a pointer from a SWIG-wrapped object, t hen struct-copies // swiglal_from_SWIGTYPE() extracts a pointer from a SWIG-wrapped object, t hen struct-copies
// the pointer to the supplied output pointer. // the pointer to the supplied output pointer.
%fragment("swiglal_from_SWIGTYPE", "header") { %fragment("swiglal_from_SWIGTYPE", "header") {
SWIGINTERNINLINE SWIG_Object swiglal_from_SWIGTYPE(SWIG_Object self, void SWIGINTERNINLINE SWIG_Object swiglal_from_SWIGTYPE(SWIG_Object self, void
*ptr, swig_type_info *tinfo, int tflags) { *ptr, bool isptr, swig_type_info *tinfo, int tflags) {
return SWIG_NewPointerObj(ptr, tinfo, tflags); return SWIG_NewPointerObj(isptr ? *((void**)ptr) : ptr, tinfo, tflags);
} }
} }
%fragment("swiglal_as_SWIGTYPE", "header") { %fragment("swiglal_as_SWIGTYPE", "header") {
SWIGINTERN int swiglal_as_SWIGTYPE(SWIG_Object self, SWIG_Object obj, voi d *ptr, size_t len, swig_type_info *tinfo, int tflags) { SWIGINTERN int swiglal_as_SWIGTYPE(SWIG_Object self, SWIG_Object obj, voi d *ptr, size_t len, bool isptr, swig_type_info *tinfo, int tflags) {
void *vptr = NULL; void *vptr = NULL;
int ecode = SWIG_ConvertPtr(obj, &vptr, tinfo, tflags); int ecode = SWIG_ConvertPtr(obj, &vptr, tinfo, tflags);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
return ecode; return ecode;
} }
memcpy(ptr, vptr, len); memcpy(ptr, isptr ? &vptr : vptr, len);
return ecode; return ecode;
} }
} }
////////// Generate interface ////////// ////////// Generate interface //////////
// The SWIG interface file is generated by 'generate_swiglal_iface.py', whi ch // The SWIG interface file is generated by 'generate_swiglal_iface.py', whi ch
// extracts lists of interface symbols (functions, structs, typedefs to str ucts) // extracts lists of interface symbols (functions, structs, typedefs to str ucts)
// and headers from the preprocessing interface, and generates calls to the // and headers from the preprocessing interface, and generates calls to the
// following macros: // following macros:
// Process an interface function NAME: rename it to RENAME, and set it to // Process an interface function NAME: rename it to RENAME, and set it to
// always return SWIG-owned wrapping objects (unless the function is being // always return SWIG-owned wrapping objects (unless the function is being
// ignored). If TYPE is given, ignore the return value of the function. // ignored). If IGNORE_TYPE is given, ignore the function's return value.
%typemap(out, noblock=1) SWIGTYPE SWIGLAL_RETURN_VOID { // If DISOWN is true, disown the function's first argument.
%set_output(VOID_Object); %define %swiglal_process_function(NAME, RENAME, IGNORE_TYPE, DISOWN)
}
%typemap(newfree, noblock=1) SWIGTYPE SWIGLAL_RETURN_VOID "";
%define %swiglal_process_function(NAME, RENAME, TYPE)
%rename(#RENAME) NAME; %rename(#RENAME) NAME;
#if #RENAME != "$ignore" #if #RENAME != "$ignore"
%feature("new", "1") NAME; %feature("new", "1") NAME;
#if #TYPE != "" #if #IGNORE_TYPE != ""
%apply SWIGTYPE SWIGLAL_RETURN_VOID { TYPE NAME }; %apply SWIGTYPE SWIGLAL_RETURN_VOID { IGNORE_TYPE NAME };
#endif
#if DISOWN
%feature("del", "1") NAME;
#endif #endif
#endif #endif
%enddef %enddef
// Process a typedef to an interface struct TAGNAME: rename it to RENAME. // Process a typedef to an interface struct TAGNAME: rename it to RENAME.
%define %swiglal_process_tdstruct(TAGNAME, RENAME) %define %swiglal_process_tdstruct(TAGNAME, RENAME)
%rename(#RENAME) TAGNAME; %rename(#RENAME) TAGNAME;
%enddef %enddef
// Do not generate any default (copy) contructors or destructors. // Do not generate any default (copy) contructors or destructors.
skipping to change at line 340 skipping to change at line 349
} }
} }
#endif #endif
%enddef // %swiglal_generate_struct_cdtor() %enddef // %swiglal_generate_struct_cdtor()
////////// Fragments and typemaps for arrays ////////// ////////// Fragments and typemaps for arrays //////////
// Map fixed-array types to special variables of their elements, // Map fixed-array types to special variables of their elements,
// e.g. $typemap(swiglal_fixarr_ltype, const int[][]) returns "int". // e.g. $typemap(swiglal_fixarr_ltype, const int[][]) returns "int".
// Fixed-array types are assumed never to be arrays of pointers.
%typemap(swiglal_fixarr_ltype) SWIGTYPE "$ltype"; %typemap(swiglal_fixarr_ltype) SWIGTYPE "$ltype";
%typemap(swiglal_fixarr_ltype) SWIGTYPE[ANY] "$typemap(swiglal_fixarr_ltype , $*type)"; %typemap(swiglal_fixarr_ltype) SWIGTYPE[ANY] "$typemap(swiglal_fixarr_ltype , $*type)";
%typemap(swiglal_fixarr_ltype) SWIGTYPE[ANY][ANY] "$typemap(swiglal_fixarr_ ltype, $*type)"; %typemap(swiglal_fixarr_ltype) SWIGTYPE[ANY][ANY] "$typemap(swiglal_fixarr_ ltype, $*type)";
%typemap(swiglal_fixarr_pdesc) SWIGTYPE "$&descriptor"; %typemap(swiglal_fixarr_tinfo) SWIGTYPE "$&descriptor";
%typemap(swiglal_fixarr_pdesc) SWIGTYPE[ANY] "$typemap(swiglal_fixarr_pdesc %typemap(swiglal_fixarr_tinfo) SWIGTYPE[ANY] "$typemap(swiglal_fixarr_tinfo
, $*type)"; , $*type)";
%typemap(swiglal_fixarr_pdesc) SWIGTYPE[ANY][ANY] "$typemap(swiglal_fixarr_ %typemap(swiglal_fixarr_tinfo) SWIGTYPE[ANY][ANY] "$typemap(swiglal_fixarr_
pdesc, $*type)"; tinfo, $*type)";
// The conversion of C arrays to/from scripting-language arrays are perform ed // The conversion of C arrays to/from scripting-language arrays are perform ed
// by the following functions: // by the following functions:
// - %swiglal_array_copyin...() copies a scripting-language array into a C array. // - %swiglal_array_copyin...() copies a scripting-language array into a C array.
// - %swiglal_array_copyout...() copies a C array into a scripting-languag e array. // - %swiglal_array_copyout...() copies a C array into a scripting-languag e array.
// - %swiglal_array_viewout...() wraps a C array inside a scripting-langua ge array, // - %swiglal_array_viewout...() wraps a C array inside a scripting-langua ge array,
// if this is supported by the target scripting language. // if this is supported by the target scripting language.
// These functions accept a subset of the following arguments: // These functions accept a subset of the following arguments:
// - SWIG_Object obj: input scripting-language array. // - SWIG_Object obj: input scripting-language array.
// - SWIG_Object parent: SWIG-wrapped object containing parent struct. // - SWIG_Object parent: SWIG-wrapped object containing parent struct.
skipping to change at line 399 skipping to change at line 409
%typemap(swiglal_array_typeid, fragment="swiglal_array_frags_" %str(ACFTYPE )) TYPE[ANY][ANY] %str(ACFTYPE); %typemap(swiglal_array_typeid, fragment="swiglal_array_frags_" %str(ACFTYPE )) TYPE[ANY][ANY] %str(ACFTYPE);
%typemap(swiglal_array_typeid, fragment="swiglal_array_frags_" %str(ACFTYPE )) const TYPE[ANY] %str(ACFTYPE); %typemap(swiglal_array_typeid, fragment="swiglal_array_frags_" %str(ACFTYPE )) const TYPE[ANY] %str(ACFTYPE);
%typemap(swiglal_array_typeid, fragment="swiglal_array_frags_" %str(ACFTYPE )) const TYPE[ANY][ANY] %str(ACFTYPE); %typemap(swiglal_array_typeid, fragment="swiglal_array_frags_" %str(ACFTYPE )) const TYPE[ANY][ANY] %str(ACFTYPE);
%enddef %enddef
%define %swiglal_array_type(ACFTYPE, ...) %define %swiglal_array_type(ACFTYPE, ...)
%swiglal_map_a(%_swiglal_array_type, ACFTYPE, __VA_ARGS__); %swiglal_map_a(%_swiglal_array_type, ACFTYPE, __VA_ARGS__);
%enddef %enddef
// Map C array TYPEs to array conversion function ACFTYPEs. // Map C array TYPEs to array conversion function ACFTYPEs.
%swiglal_array_type(SWIGTYPE, SWIGTYPE); %swiglal_array_type(SWIGTYPE, SWIGTYPE);
%swiglal_array_type(LALCHAR, CHAR*); %swiglal_array_type(LALchar, char*);
%swiglal_array_type(int8_t, char, signed char, int8_t); %swiglal_array_type(int8_t, char, signed char, int8_t);
%swiglal_array_type(uint8_t, unsigned char, uint8_t); %swiglal_array_type(uint8_t, unsigned char, uint8_t);
%swiglal_array_type(int16_t, short, int16_t); %swiglal_array_type(int16_t, short, int16_t);
%swiglal_array_type(uint16_t, unsigned short, uint16_t); %swiglal_array_type(uint16_t, unsigned short, uint16_t);
%swiglal_array_type(int32_t, int, int32_t, enum SWIGTYPE); %swiglal_array_type(int32_t, int, int32_t, enum SWIGTYPE);
%swiglal_array_type(uint32_t, unsigned int, uint32_t); %swiglal_array_type(uint32_t, unsigned int, uint32_t);
%swiglal_array_type(int64_t, long long, int64_t); %swiglal_array_type(int64_t, long long, int64_t);
%swiglal_array_type(uint64_t, unsigned long long, uint64_t); %swiglal_array_type(uint64_t, unsigned long long, uint64_t);
%swiglal_array_type(float, float); %swiglal_array_type(float, float);
%swiglal_array_type(double, double); %swiglal_array_type(double, double);
skipping to change at line 452 skipping to change at line 462
// Input typemaps for functions and structs: // Input typemaps for functions and structs:
%typemap(in) SWIGTYPE[ANY], SWIGTYPE INOUT[ANY] { %typemap(in) SWIGTYPE[ANY], SWIGTYPE INOUT[ANY] {
const size_t dims[] = {$1_dim0}; const size_t dims[] = {$1_dim0};
const size_t strides[] = {1}; const size_t strides[] = {1};
$typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0]; $typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0];
$1 = &temp[0]; $1 = &temp[0];
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1), int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1),
sizeof($1[0]), 1, dims, stride s, sizeof($1[0]), 1, dims, stride s,
$typemap(swiglal_fixarr_pdesc, $1_type), false, $typemap(swiglal_fixarr _tinfo, $1_type),
$disown | %convertptr_flags); $disown | %convertptr_flags);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%argument_fail(ecode, "$type", $symname, $argnum); %argument_fail(ecode, "$type", $symname, $argnum);
} }
} }
%typemap(in) SWIGTYPE[ANY][ANY], SWIGTYPE INOUT[ANY][ANY] { %typemap(in) SWIGTYPE[ANY][ANY], SWIGTYPE INOUT[ANY][ANY] {
const size_t dims[] = {$1_dim0, $1_dim1}; const size_t dims[] = {$1_dim0, $1_dim1};
const size_t strides[] = {$1_dim1, 1}; const size_t strides[] = {$1_dim1, 1};
$typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0][$1_dim1]; $typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0][$1_dim1];
$1 = &temp[0]; $1 = &temp[0];
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1), int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1),
sizeof($1[0][0]), 2, dims, str ides, sizeof($1[0][0]), 2, dims, str ides,
$typemap(swiglal_fixarr_pdesc, $1_type), false, $typemap(swiglal_fixarr _tinfo, $1_type),
$disown | %convertptr_flags); $disown | %convertptr_flags);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%argument_fail(ecode, "$type", $symname, $argnum); %argument_fail(ecode, "$type", $symname, $argnum);
} }
} }
// Input typemaps for global variables: // Input typemaps for global variables:
%typemap(varin) SWIGTYPE[ANY] { %typemap(varin) SWIGTYPE[ANY] {
const size_t dims[] = {$1_dim0}; const size_t dims[] = {$1_dim0};
const size_t strides[] = {1}; const size_t strides[] = {1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1), int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1),
sizeof($1[0]), 1, dims, stride s, sizeof($1[0]), 1, dims, stride s,
$typemap(swiglal_fixarr_pdesc, $1_type), false, $typemap(swiglal_fixarr _tinfo, $1_type),
%convertptr_flags); %convertptr_flags);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%variable_fail(ecode, "$type", $symname); %variable_fail(ecode, "$type", $symname);
} }
} }
%typemap(varin) SWIGTYPE[ANY][ANY] { %typemap(varin) SWIGTYPE[ANY][ANY] {
const size_t dims[] = {$1_dim0, $1_dim1}; const size_t dims[] = {$1_dim0, $1_dim1};
const size_t strides[] = {$1_dim1, 1}; const size_t strides[] = {$1_dim1, 1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1), int ecode = %swiglal_array_copyin($1_type)(swiglal_no_self(), $input, %as _voidptr($1),
sizeof($1[0][0]), 2, dims, str ides, sizeof($1[0][0]), 2, dims, str ides,
$typemap(swiglal_fixarr_pdesc, $1_type), false, $typemap(swiglal_fixarr _tinfo, $1_type),
%convertptr_flags); %convertptr_flags);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%variable_fail(ecode, "$type", $symname); %variable_fail(ecode, "$type", $symname);
} }
} }
// Output typemaps for functions and structs: // Output typemaps for functions and structs:
%typemap(out) SWIGTYPE[ANY] { %typemap(out) SWIGTYPE[ANY] {
const size_t dims[] = {$1_dim0}; const size_t dims[] = {$1_dim0};
const size_t strides[] = {1}; const size_t strides[] = {1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%#if $owner & SWIG_POINTER_OWN %#if $owner & SWIG_POINTER_OWN
%set_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voidpt r($1), %set_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voidpt r($1),
sizeof($1[0]), 1, dims, strid es, sizeof($1[0]), 1, dims, strid es,
$typemap(swiglal_fixarr_pdesc , $1_type), false, $typemap(swiglal_fixar r_tinfo, $1_type),
$owner | %newpointer_flags)); $owner | %newpointer_flags));
%#else %#else
%set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidptr($ 1), %set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidptr($ 1),
sizeof($1[0]), 1, dims, strid es, sizeof($1[0]), 1, dims, strid es,
$typemap(swiglal_fixarr_pdesc , $1_type), false, $typemap(swiglal_fixar r_tinfo, $1_type),
$owner | %newpointer_flags)); $owner | %newpointer_flags));
%#endif %#endif
} }
%typemap(out) SWIGTYPE[ANY][ANY] { %typemap(out) SWIGTYPE[ANY][ANY] {
const size_t dims[] = {$1_dim0, $1_dim1}; const size_t dims[] = {$1_dim0, $1_dim1};
const size_t strides[] = {$1_dim1, 1}; const size_t strides[] = {$1_dim1, 1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%#if $owner & SWIG_POINTER_OWN %#if $owner & SWIG_POINTER_OWN
%set_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voidpt r($1), %set_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voidpt r($1),
sizeof($1[0][0]), 2, dims, st rides, sizeof($1[0][0]), 2, dims, st rides,
$typemap(swiglal_fixarr_pdesc , $1_type), false, $typemap(swiglal_fixar r_tinfo, $1_type),
$owner | %newpointer_flags)); $owner | %newpointer_flags));
%#else %#else
%set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidptr($ 1), %set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidptr($ 1),
sizeof($1[0][0]), 2, dims, st rides, sizeof($1[0][0]), 2, dims, st rides,
$typemap(swiglal_fixarr_pdesc , $1_type), false, $typemap(swiglal_fixar r_tinfo, $1_type),
$owner | %newpointer_flags)); $owner | %newpointer_flags));
%#endif %#endif
} }
// Output typemaps for global variables: // Output typemaps for global variables:
%typemap(varout) SWIGTYPE[ANY] { %typemap(varout) SWIGTYPE[ANY] {
const size_t dims[] = {$1_dim0}; const size_t dims[] = {$1_dim0};
const size_t strides[] = {1}; const size_t strides[] = {1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%set_output(%swiglal_array_viewout($1_type)(swiglal_no_self(), %as_voidpt r($1), %set_output(%swiglal_array_viewout($1_type)(swiglal_no_self(), %as_voidpt r($1),
sizeof($1[0]), 1, dims, strid es, sizeof($1[0]), 1, dims, strid es,
$typemap(swiglal_fixarr_pdesc , $1_type), false, $typemap(swiglal_fixar r_tinfo, $1_type),
%newpointer_flags)); %newpointer_flags));
} }
%typemap(varout) SWIGTYPE[ANY][ANY] { %typemap(varout) SWIGTYPE[ANY][ANY] {
const size_t dims[] = {$1_dim0, $1_dim1}; const size_t dims[] = {$1_dim0, $1_dim1};
const size_t strides[] = {$1_dim1, 1}; const size_t strides[] = {$1_dim1, 1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%set_output(%swiglal_array_viewout($1_type)(swiglal_no_self(), %as_voidpt r($1), %set_output(%swiglal_array_viewout($1_type)(swiglal_no_self(), %as_voidpt r($1),
sizeof($1[0][0]), 2, dims, st rides, sizeof($1[0][0]), 2, dims, st rides,
$typemap(swiglal_fixarr_pdesc , $1_type), false, $typemap(swiglal_fixar r_tinfo, $1_type),
%newpointer_flags)); %newpointer_flags));
} }
// Argument-output typemaps for functions: // Argument-output typemaps for functions:
%typemap(in, numinputs=0) SWIGTYPE OUTPUT[ANY] { %typemap(in, numinputs=0) SWIGTYPE OUTPUT[ANY] {
$typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0]; $typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0];
$1 = &temp[0]; $1 = &temp[0];
} }
%typemap(argout) SWIGTYPE OUTPUT[ANY], SWIGTYPE INOUT[ANY] { %typemap(argout) SWIGTYPE OUTPUT[ANY], SWIGTYPE INOUT[ANY] {
const size_t dims[] = {$1_dim0}; const size_t dims[] = {$1_dim0};
const size_t strides[] = {1}; const size_t strides[] = {1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%append_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voi dptr($1), %append_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voi dptr($1),
sizeof($1[0]), 1, dims, st rides, sizeof($1[0]), 1, dims, st rides,
$typemap(swiglal_fixarr_pd esc, $1_type), false, $typemap(swiglal_fi xarr_tinfo, $1_type),
SWIG_POINTER_OWN | %newpoi nter_flags)); SWIG_POINTER_OWN | %newpoi nter_flags));
} }
%typemap(in, numinputs=0) SWIGTYPE OUTPUT[ANY][ANY] { %typemap(in, numinputs=0) SWIGTYPE OUTPUT[ANY][ANY] {
$typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0][$1_dim1]; $typemap(swiglal_fixarr_ltype, $1_type) temp[$1_dim0][$1_dim1];
$1 = &temp[0]; $1 = &temp[0];
} }
%typemap(argout) SWIGTYPE OUTPUT[ANY][ANY], SWIGTYPE INOUT[ANY][ANY] { %typemap(argout) SWIGTYPE OUTPUT[ANY][ANY], SWIGTYPE INOUT[ANY][ANY] {
const size_t dims[] = {$1_dim0, $1_dim1}; const size_t dims[] = {$1_dim0, $1_dim1};
const size_t strides[] = {$1_dim1, 1}; const size_t strides[] = {$1_dim1, 1};
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%append_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voi dptr($1), %append_output(%swiglal_array_copyout($1_type)(swiglal_no_self(), %as_voi dptr($1),
sizeof($1[0][0]), 2, dims, strides, sizeof($1[0][0]), 2, dims, strides,
$typemap(swiglal_fixarr_pd esc, $1_type), false, $typemap(swiglal_fi xarr_tinfo, $1_type),
SWIG_POINTER_OWN | %newpoi nter_flags)); SWIG_POINTER_OWN | %newpoi nter_flags));
} }
// Public macros to make fixed nD arrays: // Public macros to make fixed nD arrays:
// * output-only arguments: SWIGLAL(OUTPUT_nDARRAY(TYPE, ...)) // * output-only arguments: SWIGLAL(OUTPUT_ARRAY_nD(TYPE, ...))
%define %swiglal_public_OUTPUT_1DARRAY(TYPE, ...) %define %swiglal_public_OUTPUT_ARRAY_1D(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE OUTPUT[ANY], TYPE, __VA_ARGS__); %swiglal_map_ab(%swiglal_apply, SWIGTYPE OUTPUT[ANY], TYPE, __VA_ARGS__);
%enddef %enddef
%define %swiglal_public_clear_OUTPUT_1DARRAY(TYPE, ...) %define %swiglal_public_clear_OUTPUT_ARRAY_1D(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__); %swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef %enddef
%define %swiglal_public_OUTPUT_2DARRAY(TYPE, ...) %define %swiglal_public_OUTPUT_ARRAY_2D(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE OUTPUT[ANY][ANY], TYPE, __VA_ARGS_ _); %swiglal_map_ab(%swiglal_apply, SWIGTYPE OUTPUT[ANY][ANY], TYPE, __VA_ARGS_ _);
%enddef %enddef
%define %swiglal_public_clear_OUTPUT_2DARRAY(TYPE, ...) %define %swiglal_public_clear_OUTPUT_ARRAY_2D(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__); %swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef %enddef
// * input-output arguments: SWIGLAL(INOUT_nDARRAY(TYPE, ...)) // * input-output arguments: SWIGLAL(INOUT_ARRAY_nD(TYPE, ...))
%define %swiglal_public_INOUT_1DARRAY(TYPE, ...) %define %swiglal_public_INOUT_ARRAY_1D(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE INOUT[ANY], TYPE, __VA_ARGS__); %swiglal_map_ab(%swiglal_apply, SWIGTYPE INOUT[ANY], TYPE, __VA_ARGS__);
%enddef %enddef
%define %swiglal_public_clear_INOUT_1DARRAY(TYPE, ...) %define %swiglal_public_clear_INOUT_ARRAY_1D(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__); %swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef %enddef
%define %swiglal_public_INOUT_2DARRAY(TYPE, ...) %define %swiglal_public_INOUT_ARRAY_2D(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE INOUT[ANY][ANY], TYPE, __VA_ARGS__ ); %swiglal_map_ab(%swiglal_apply, SWIGTYPE INOUT[ANY][ANY], TYPE, __VA_ARGS__ );
%enddef %enddef
%define %swiglal_public_clear_INOUT_2DARRAY(TYPE, ...) %define %swiglal_public_clear_INOUT_ARRAY_2D(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__); %swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef %enddef
// Get the correct descriptor for a dynamic array element: // Get the correct descriptor for a dynamic array element:
// always return a pointer-description, even for non-pointer types // Always return a pointer description, even for non-pointer types, and
%typemap(swiglal_dynarr_pdesc) SWIGTYPE "$&descriptor"; // determine whether array is an array of pointers or of data blocks.
%typemap(swiglal_dynarr_pdesc) SWIGTYPE* "$descriptor"; %typemap(swiglal_dynarr_isptr) SWIGTYPE "false";
%typemap(swiglal_dynarr_tinfo) SWIGTYPE "$&descriptor";
%typemap(swiglal_dynarr_isptr) SWIGTYPE* "true";
%typemap(swiglal_dynarr_tinfo) SWIGTYPE* "$descriptor";
// Create immutable members for accessing the array's dimensions.
// NI is the name of the dimension member, and SIZET is its type.
%define %swiglal_array_dynamic_size(SIZET, NI)
%feature("action") NI {
result = %static_cast(arg1->NI, SIZET);
}
%extend {
const SIZET NI;
}
%feature("action", "") NI;
%enddef // %swiglal_array_dynamic_size()
// Check that array strides are non-zero, otherwise fail.
%define %swiglal_array_dynamic_check_strides(NAME, DATA, I)
if (strides[I-1] == 0) {
SWIG_exception_fail(SWIG_IndexError, "Stride of dimension "#I" of "#NAM
E"."#DATA" is zero");
}
%enddef // %swiglal_array_dynamic_check_strides()
// The %swiglal_array_dynamic_<n>D() macros create typemaps which convert // The %swiglal_array_dynamic_<n>D() macros create typemaps which convert
// <n>-D dynamically-allocated arrays in structs. The macros must be // <n>-D dynamically-allocated arrays in structs NAME. The macros must be
// added inside the definition of the struct, before the struct members // added inside the definition of the struct, before the struct members
// comprising the array are defined. The DATA and N{I,J} members give // comprising the array are defined. The DATA and N{I,J} members give
// the array data and dimensions, TYPE and SIZET give their respective // the array data and dimensions, TYPE and SIZET give their respective
// types. The S{I,J} give the strides of the array, in number of elements. // types. The S{I,J} give the strides of the array, in number of elements.
// If the strides are members of the struct, 'arg1->' should be used to // If the sizes or strides are members of the struct, 'arg1->' should be
// access the struct itself. // used to access the struct itself.
// 1-D arrays: // 1-D arrays:
%define %swiglal_array_dynamic_1D(TYPE, SIZET, DATA, NI, SI) %define %swiglal_array_dynamic_1D(NAME, TYPE, SIZET, DATA, NI, SI)
// Create immutable members for the array's dimensions.
%feature("action") NI {result = %static_cast(arg1->NI, SIZET);}
%extend {
const SIZET NI;
}
%feature("action", "") NI;
// Typemaps which convert to/from the dynamically-allocated array. // Typemaps which convert to/from the dynamically-allocated array.
%typemap(in, noblock=1) TYPE* DATA { %typemap(in, noblock=1) TYPE* DATA {
if (arg1) { if (arg1) {
const size_t dims[] = {arg1->NI}; const size_t dims[] = {NI};
const size_t strides[] = {SI}; const size_t strides[] = {SI};
%swiglal_array_dynamic_check_strides(NAME, DATA, 1);
$1 = %reinterpret_cast(arg1->DATA, TYPE*); $1 = %reinterpret_cast(arg1->DATA, TYPE*);
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
int ecode = %swiglal_array_copyin($1_type)(swiglal_self(), $input, %a s_voidptr($1), int ecode = %swiglal_array_copyin($1_type)(swiglal_self(), $input, %a s_voidptr($1),
sizeof(TYPE), 1, dims, str ides, sizeof(TYPE), 1, dims, str ides,
$typemap(swiglal_dynarr_pd esc, TYPE), $typemap(swiglal_dynarr_is ptr, TYPE), $typemap(swiglal_dynarr_tinfo, TYPE),
$disown | %convertptr_flag s); $disown | %convertptr_flag s);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%argument_fail(ecode, "$type", $symname, $argnum); %argument_fail(ecode, "$type", $symname, $argnum);
} }
} }
} }
%typemap(out, noblock=1) TYPE* DATA { %typemap(out, noblock=1) TYPE* DATA {
if (arg1) { if (arg1) {
const size_t dims[] = {arg1->NI}; const size_t dims[] = {NI};
const size_t strides[] = {SI}; const size_t strides[] = {SI};
%swiglal_array_dynamic_check_strides(NAME, DATA, 1);
$1 = %reinterpret_cast(arg1->DATA, TYPE*); $1 = %reinterpret_cast(arg1->DATA, TYPE*);
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidp tr($1), %set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidp tr($1),
sizeof(TYPE), 1, dims, st rides, sizeof(TYPE), 1, dims, st rides,
$typemap(swiglal_dynarr_p desc, TYPE), $typemap(swiglal_dynarr_i sptr, TYPE), $typemap(swiglal_dynarr_tinfo, TYPE),
$owner | %newpointer_flag s)); $owner | %newpointer_flag s));
} }
} }
// Clear unneeded typemaps and features. // Clear unneeded typemaps and features.
%typemap(memberin, noblock=1) TYPE* DATA ""; %typemap(memberin, noblock=1) TYPE* DATA "";
%typemap(argout, noblock=1) TYPE* DATA ""; %typemap(argout, noblock=1) TYPE* DATA "";
%typemap(freearg, noblock=1) TYPE* DATA ""; %typemap(freearg, noblock=1) TYPE* DATA "";
%feature("action") DATA ""; %feature("action") DATA "";
%feature("except") DATA ""; %feature("except") DATA "";
skipping to change at line 680 skipping to change at line 707
TYPE *DATA; TYPE *DATA;
} }
// Restore modified typemaps and features. // Restore modified typemaps and features.
%feature("action", "") DATA; %feature("action", "") DATA;
%feature("except", "") DATA; %feature("except", "") DATA;
%clear TYPE* DATA; %clear TYPE* DATA;
%enddef // %swiglal_array_dynamic_1D() %enddef // %swiglal_array_dynamic_1D()
// 2-D arrays: // 2-D arrays:
%define %swiglal_array_dynamic_2D(TYPE, SIZET, DATA, NI, NJ, SI, SJ) %define %swiglal_array_dynamic_2D(NAME, TYPE, SIZET, DATA, NI, NJ, SI, SJ)
// Create immutable members for the array's dimensions.
%feature("action") NI {result = %static_cast(arg1->NI, SIZET);}
%feature("action") NJ {result = %static_cast(arg1->NJ, SIZET);}
%extend {
const SIZET NI;
const SIZET NJ;
}
%feature("action", "") NI;
%feature("action", "") NJ;
// Typemaps which convert to/from the dynamically-allocated array. // Typemaps which convert to/from the dynamically-allocated array.
%typemap(in, noblock=1) TYPE* DATA { %typemap(in, noblock=1) TYPE* DATA {
if (arg1) { if (arg1) {
const size_t dims[] = {arg1->NI, arg1->NJ}; const size_t dims[] = {NI, NJ};
const size_t strides[] = {SI, SJ}; const size_t strides[] = {SI, SJ};
%swiglal_array_dynamic_check_strides(NAME, DATA, 1);
%swiglal_array_dynamic_check_strides(NAME, DATA, 2);
$1 = %reinterpret_cast(arg1->DATA, TYPE*); $1 = %reinterpret_cast(arg1->DATA, TYPE*);
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
int ecode = %swiglal_array_copyin($1_type)(swiglal_self(), $input, %a s_voidptr($1), int ecode = %swiglal_array_copyin($1_type)(swiglal_self(), $input, %a s_voidptr($1),
sizeof(TYPE), 2, dims, str ides, sizeof(TYPE), 2, dims, str ides,
$typemap(swiglal_dynarr_pd esc, TYPE), $typemap(swiglal_dynarr_is ptr, TYPE), $typemap(swiglal_dynarr_tinfo, TYPE),
$disown | %convertptr_flag s); $disown | %convertptr_flag s);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%argument_fail(ecode, "$type", $symname, $argnum); %argument_fail(ecode, "$type", $symname, $argnum);
} }
} }
} }
%typemap(out, noblock=1) TYPE* DATA { %typemap(out, noblock=1) TYPE* DATA {
if (arg1) { if (arg1) {
const size_t dims[] = {arg1->NI, arg1->NJ}; const size_t dims[] = {NI, NJ};
const size_t strides[] = {SI, SJ}; const size_t strides[] = {SI, SJ};
%swiglal_array_dynamic_check_strides(NAME, DATA, 1);
%swiglal_array_dynamic_check_strides(NAME, DATA, 2);
$1 = %reinterpret_cast(arg1->DATA, TYPE*); $1 = %reinterpret_cast(arg1->DATA, TYPE*);
// swiglal_array_typeid input type: $1_type // swiglal_array_typeid input type: $1_type
%set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidp tr($1), %set_output(%swiglal_array_viewout($1_type)(swiglal_self(), %as_voidp tr($1),
sizeof(TYPE), 2, dims, st rides, sizeof(TYPE), 2, dims, st rides,
$typemap(swiglal_dynarr_p desc, TYPE), $typemap(swiglal_dynarr_i sptr, TYPE), $typemap(swiglal_dynarr_tinfo, TYPE),
$owner | %newpointer_flag s)); $owner | %newpointer_flag s));
} }
} }
// Clear unneeded typemaps and features. // Clear unneeded typemaps and features.
%typemap(memberin, noblock=1) TYPE* DATA ""; %typemap(memberin, noblock=1) TYPE* DATA "";
%typemap(argout, noblock=1) TYPE* DATA ""; %typemap(argout, noblock=1) TYPE* DATA "";
%typemap(freearg, noblock=1) TYPE* DATA ""; %typemap(freearg, noblock=1) TYPE* DATA "";
%feature("action") DATA ""; %feature("action") DATA "";
%feature("except") DATA ""; %feature("except") DATA "";
skipping to change at line 741 skipping to change at line 762
} }
// Restore modified typemaps and features. // Restore modified typemaps and features.
%feature("action", "") DATA; %feature("action", "") DATA;
%feature("except", "") DATA; %feature("except", "") DATA;
%clear TYPE* DATA; %clear TYPE* DATA;
%enddef // %swiglal_array_dynamic_2D() %enddef // %swiglal_array_dynamic_2D()
// These macros should be called from within the definitions of // These macros should be called from within the definitions of
// LAL structs containing dynamically-allocated arrays. // LAL structs NAME containing dynamically-allocated arrays.
// 1-D arrays: // 1-D arrays, e.g:
%define %swiglal_public_1D_ARRAY(TYPE, DATA, SIZET, NI) // SIZET NI;
%swiglal_array_dynamic_1D(TYPE, SIZET, DATA, NI, 1); // TYPE* DATA;
%ignore DATA; %define %swiglal_public_ARRAY_1D(NAME, TYPE, DATA, SIZET, NI)
%ignore NI; %swiglal_array_dynamic_size(SIZET, NI);
%enddef %swiglal_array_dynamic_1D(NAME, TYPE, SIZET, DATA, arg1->NI, 1);
#define %swiglal_public_clear_1D_ARRAY(TYPE, DATA, SIZET, NI) %ignore DATA;
// 2-D arrays: %ignore NI;
%define %swiglal_public_2D_ARRAY(TYPE, DATA, SIZET, NI, NJ) %enddef
%swiglal_array_dynamic_2D(TYPE, SIZET, DATA, NI, NJ, arg1->NJ, 1); #define %swiglal_public_clear_ARRAY_1D(NAME, TYPE, DATA, SIZET, NI)
%ignore DATA; // 2-D arrays of fixed-length arrays, e.g:
%ignore NI; // typedef ETYPE[NJ] ATYPE;
%ignore NJ; // SIZET NI;
// ATYPE* DATA;
%define %swiglal_public_ARRAY_2D_FIXED(NAME, ETYPE, ATYPE, DATA, SIZET, NI)
%swiglal_array_dynamic_size(SIZET, NI);
%swiglal_array_dynamic_2D(NAME, ETYPE, SIZET, DATA, arg1->NI, (sizeof(ATY
PE)/sizeof(ETYPE)), (sizeof(ATYPE)/sizeof(ETYPE)), 1);
%ignore DATA;
%ignore NI;
%enddef
#define %swiglal_public_clear_ARRAY_2D_FIXED(NAME, ETYPE, ATYPE, DATA, SIZE
T, NI)
// 2-D arrays, e.g:
// SIZET NI, NJ;
// TYPE* DATA;
%define %swiglal_public_ARRAY_2D(NAME, TYPE, DATA, SIZET, NI, NJ)
%swiglal_array_dynamic_size(SIZET, NI);
%swiglal_array_dynamic_size(SIZET, NJ);
%swiglal_array_dynamic_2D(NAME, TYPE, SIZET, DATA, arg1->NI, arg1->NJ, ar
g1->NJ, 1);
%ignore DATA;
%ignore NI;
%ignore NJ;
%enddef %enddef
#define %swiglal_public_clear_2D_ARRAY(TYPE, DATA, SIZET, NI, NJ) #define %swiglal_public_clear_ARRAY_2D(NAME, TYPE, DATA, SIZET, NI, NJ)
////////// Include scripting-language-specific interface headers ////////// ////////// Include scripting-language-specific interface headers //////////
#ifdef SWIGOCTAVE #ifdef SWIGOCTAVE
%include <lal/swiglal_octave.i> %include <lal/swiglal_octave.i>
#endif #endif
#ifdef SWIGPYTHON #ifdef SWIGPYTHON
%include <lal/swiglal_python.i> %include <lal/swiglal_python.i>
#endif #endif
////////// General typemaps and macros ////////// ////////// General typemaps and macros //////////
// The SWIGLAL(RETURN_VOID(TYPE,...)) public macro can be used to ensure
// that the return value of a function is always ignored.
%define %swiglal_public_RETURN_VOID(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE SWIGLAL_RETURN_VOID, TYPE, __VA_AR
GS__);
%enddef
%define %swiglal_public_clear_RETURN_VOID(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef
%typemap(out, noblock=1) SWIGTYPE SWIGLAL_RETURN_VOID {
%set_output(VOID_Object);
}
// The SWIGLAL(RETURN_VALUE(TYPE,...)) public macro can be used to ensure // The SWIGLAL(RETURN_VALUE(TYPE,...)) public macro can be used to ensure
// that the return value of a function is not ignored, if the return value // that the return value of a function is not ignored, if the return value
// has previously been ignored in the generated wrappings. // has previously been ignored in the generated wrappings.
%define %swiglal_public_RETURN_VALUE(TYPE, ...) %define %swiglal_public_RETURN_VALUE(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__); %swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef %enddef
#define %swiglal_public_clear_RETURN_VALUE(TYPE, ...) #define %swiglal_public_clear_RETURN_VALUE(TYPE, ...)
// The SWIGLAL(DISABLE_EXCEPTIONS(...)) public macro is useful for // The SWIGLAL(DISABLE_EXCEPTIONS(...)) public macro is useful for
// functions which manipulate XLAL error codes, which thus require // functions which manipulate XLAL error codes, which thus require
// XLAL exception handling to be disabled. // XLAL exception handling to be disabled.
%define %swiglal_public_DISABLE_EXCEPTIONS(...) %define %swiglal_public_DISABLE_EXCEPTIONS(...)
%swiglal_map_ab(%swiglal_feature, "except", "$action", __VA_ARGS__); %swiglal_map_ab(%swiglal_feature, "except", "$action", __VA_ARGS__);
%enddef %enddef
#define %swiglal_public_clear_DISABLE_EXCEPTIONS(...) #define %swiglal_public_clear_DISABLE_EXCEPTIONS(...)
// The SWIGLAL(NO_NEW_OBJECT(...)) macro can be used to turn off
// SWIG object ownership for certain functions.
%define %swiglal_public_NO_NEW_OBJECT(...)
%swiglal_map_ab(%swiglal_feature, "new", "0", __VA_ARGS__);
%enddef
#define %swiglal_public_clear_NO_NEW_OBJECT(...)
// The SWIGLAL(FUNCTION_POINTER(...)) macro can be used to create // The SWIGLAL(FUNCTION_POINTER(...)) macro can be used to create
// a function pointer constant, for functions which need to be used // a function pointer constant, for functions which need to be used
// as callback functions. // as callback functions.
%define %swiglal_public_FUNCTION_POINTER(...) %define %swiglal_public_FUNCTION_POINTER(...)
%swiglal_map_ab(%swiglal_feature, "callback", "%sPtr", __VA_ARGS__); %swiglal_map_ab(%swiglal_feature, "callback", "%sPtr", __VA_ARGS__);
%enddef %enddef
#define %swiglal_public_clear_FUNCTION_POINTER(...) #define %swiglal_public_clear_FUNCTION_POINTER(...)
// Typemap for functions which return 'int'. If these functions also return // The SWIGLAL(IMMUTABLE_MEMBERS(TAGNAME, ...)) macro can be used to make
// other output arguments (via 'argout' typemaps), the 'int' return value i // the listed members of the struct TAGNAME immutable.
s %define %swiglal_public_IMMUTABLE_MEMBERS(TAGNAME, ...)
// ignored. This is because 'int' is very commonly used to return an XLAL %swiglal_map_abc(%swiglal_feature_nspace, "immutable", "1", TAGNAME, __VA_A
// error code, which will be converted into a native scripting-language RGS__);
// exception, and so the error code itself is not needed directly. To avoid %enddef
// having to unpack the error code when collecting the other output argumen #define %swiglal_public_clear_IMMUTABLE_MEMBERS(...)
ts,
// therefore, it is ignored in the wrappings. Functions which fit this crit
eria
// but do return a useful 'int' can use SWIGLAL(RETURN_VALUE(int, ...)) to
// disable this behaviour.
// The 'newfree' typemap is used since its code will appear after all the
// 'argout' typemaps, and will only apply to functions (since only function
s
// have %feature("new") set, and thus generate a 'newfree' typemap). The ma
cro
// %swiglal_maybe_drop_first_retval() is defined in the scripting-language-
// specific interface headers; it will drop the first return value (which i
s
// the 'int') from the output argument list if the argument list contains
// at least 2 items (the 'int' and some other output argument).
%typemap(newfree, noblock=1, fragment="swiglal_maybe_drop_first_retval") in
t {
%swiglal_maybe_drop_first_retval();
}
// Typemaps for empty arguments. These typemaps are useful when no input fr om the // Typemaps for empty arguments. These typemaps are useful when no input fr om the
// scripting language is required, and an empty struct needs to be supplied to // scripting language is required, and an empty struct needs to be supplied to
// the C function. The SWIGLAL(EMPTY_ARGUMENT(TYPE, ...)) macro applies the typemap which // the C function. The SWIGLAL(EMPTY_ARGUMENT(TYPE, ...)) macro applies the typemap which
// supplies a static struct, while the SWIGLAL(NEW_EMPTY_ARGUMENT(TYPE, ... )) macro // supplies a static struct, while the SWIGLAL(NEW_EMPTY_ARGUMENT(TYPE, ... )) macro
// applies the typemap which supplies a dynamically-allocated struct. // applies the typemap which supplies a dynamically-allocated struct.
%define %swiglal_public_EMPTY_ARGUMENT(TYPE, ...) %define %swiglal_public_EMPTY_ARGUMENT(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE* SWIGLAL_EMPTY_ARGUMENT, TYPE, __V A_ARGS__); %swiglal_map_ab(%swiglal_apply, SWIGTYPE* SWIGLAL_EMPTY_ARGUMENT, TYPE, __V A_ARGS__);
%enddef %enddef
%define %swiglal_public_clear_EMPTY_ARGUMENT(TYPE, ...) %define %swiglal_public_clear_EMPTY_ARGUMENT(TYPE, ...)
skipping to change at line 891 skipping to change at line 922
} }
return ecode; return ecode;
} }
} }
%typemaps_primitive(%checkcode(BOOL), BOOLEAN); %typemaps_primitive(%checkcode(BOOL), BOOLEAN);
// Fragments and typemaps for LAL strings, which should be (de)allocated // Fragments and typemaps for LAL strings, which should be (de)allocated
// using LAL memory functions. The fragments re-use existing scriping-langu age // using LAL memory functions. The fragments re-use existing scriping-langu age
// conversion functions for ordinary char* strings. Appropriate typemaps ar e // conversion functions for ordinary char* strings. Appropriate typemaps ar e
// then generated by %typemaps_string_alloc(), with custom memory allocator s. // then generated by %typemaps_string_alloc(), with custom memory allocator s.
%fragment("SWIG_FromLALCHARPtrAndSize", "header", fragment="SWIG_FromCharPt %fragment("SWIG_FromLALcharPtrAndSize", "header", fragment="SWIG_FromCharPt
rAndSize") { rAndSize") {
SWIGINTERNINLINE SWIG_Object SWIG_FromLALCHARPtrAndSize(const CHAR *str, SWIGINTERNINLINE SWIG_Object SWIG_FromLALcharPtrAndSize(const char *str,
size_t size) { size_t size) {
return SWIG_FromCharPtrAndSize(str, size); return SWIG_FromCharPtrAndSize(str, size);
} }
} }
%fragment("SWIG_AsLALCHARPtrAndSize", "header", fragment="SWIG_AsCharPtrAnd %fragment("SWIG_AsLALcharPtrAndSize", "header", fragment="SWIG_AsCharPtrAnd
Size") { Size") {
SWIGINTERN int SWIG_AsLALCHARPtrAndSize(SWIG_Object obj, CHAR **pstr, siz SWIGINTERN int SWIG_AsLALcharPtrAndSize(SWIG_Object obj, char **pstr, siz
e_t *psize, int *alloc) { e_t *psize, int *alloc) {
char *slstr = 0; char *slstr = 0;
size_t slsize = 0; size_t slsize = 0;
int slalloc = 0; int slalloc = 0;
// Get pointer to scripting-language string 'slstr' and size 'slsize'. // Get pointer to scripting-language string 'slstr' and size 'slsize'.
// The 'slalloc' argument indicates whether a new string was allocated. // The 'slalloc' argument indicates whether a new string was allocated.
int ecode = SWIG_AsCharPtrAndSize(obj, &slstr, &slsize, &slalloc); int ecode = SWIG_AsCharPtrAndSize(obj, &slstr, &slsize, &slalloc);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
return SWIG_TypeError; return SWIG_TypeError;
} }
// Return the string, if needed. // Return the string, if needed.
if (pstr) { if (pstr) {
// Free the LAL string if it is already allocated. // Free the LAL string if it is already allocated.
if (*pstr) { if (*pstr) {
XLALFree(*pstr); XLALFree(*pstr);
} }
if (alloc) { if (alloc) {
// Copy the scripting-language string into a LAL-managed memory str ing. // Copy the scripting-language string into a LAL-managed memory str ing.
*pstr = %swiglal_new_copy_array(slstr, slsize, CHAR); *pstr = %swiglal_new_copy_array(slstr, slsize, char);
*alloc = SWIG_NEWOBJ; *alloc = SWIG_NEWOBJ;
} }
else { else {
return SWIG_TypeError; return SWIG_TypeError;
} }
} }
// Return the size (length+1) of the string, if needed. // Return the size (length+1) of the string, if needed.
if (psize) { if (psize) {
*psize = slsize; *psize = slsize;
} }
// Free the scripting-language string, if it was allocated. // Free the scripting-language string, if it was allocated.
if (slalloc == SWIG_NEWOBJ) { if (slalloc == SWIG_NEWOBJ) {
%delete_array(slstr); %delete_array(slstr);
} }
return ecode; return ecode;
} }
} }
%fragment("SWIG_AsNewLALCHARPtr", "header", fragment="SWIG_AsLALCHARPtrAndS %fragment("SWIG_AsNewLALcharPtr", "header", fragment="SWIG_AsLALcharPtrAndS
ize") { ize") {
SWIGINTERN int SWIG_AsNewLALCHARPtr(SWIG_Object obj, CHAR **pstr) { SWIGINTERN int SWIG_AsNewLALcharPtr(SWIG_Object obj, char **pstr) {
int alloc = 0; int alloc = 0;
return SWIG_AsLALCHARPtrAndSize(obj, pstr, 0, &alloc); return SWIG_AsLALcharPtrAndSize(obj, pstr, 0, &alloc);
} }
} }
%typemaps_string_alloc(%checkcode(STRING), %checkcode(CHAR), CHAR, LALCHAR, %typemaps_string_alloc(%checkcode(STRING), %checkcode(char), char, LALchar,
SWIG_AsLALCHARPtrAndSize, SWIG_FromLALCHARPtrAndSize SWIG_AsLALcharPtrAndSize, SWIG_FromLALcharPtrAndSize
, ,
strlen, %swiglal_new_copy_array, XLALFree, strlen, %swiglal_new_copy_array, XLALFree,
"<limits.h>", CHAR_MIN, CHAR_MAX); "<limits.h>", CHAR_MIN, CHAR_MAX);
// Do not try to free const CHAR* return arguments. // Typemaps for string pointers. By default, treat arguments of type char*
%typemap(newfree,noblock=1) const CHAR* ""; *
// as output-only arguments, which do not require a scripting-language inpu
t
// argument, and return their results in the output argument list. Also
// supply an INOUT typemap for input-output arguments, which allows a
// scripting-language input string to be supplied. The INOUT typemaps can b
e
// applied as needed using the SWIGLAL(INOUT_STRINGS(...)) macro.
%typemap(in, noblock=1, numinputs=0) char ** (char *str = NULL, int alloc =
0) {
$1 = %reinterpret_cast(&str, $ltype);
alloc = 0;
}
%typemap(in, noblock=1, fragment="SWIG_AsLALcharPtrAndSize") char ** INOUT
(char *str = NULL, int alloc = 0, int ecode = 0) {
ecode = SWIG_AsLALcharPtr($input, &str, &alloc);
if (!SWIG_IsOK(ecode)) {
%argument_fail(ecode, "$type", $symname, $argnum);
}
$1 = %reinterpret_cast(&str, $ltype);
}
%typemap(argout, noblock=1) char ** {
%append_output(SWIG_FromLALcharPtr(str$argnum));
}
%typemap(freearg, match="in") char ** {
if (SWIG_IsNewObj(alloc$argnum)) {
XLALFree(str$argnum);
}
}
%define %swiglal_public_INOUT_STRINGS(...)
%swiglal_map_ab(%swiglal_apply, char ** INOUT, char **, __VA_ARGS__);
%enddef
%define %swiglal_public_clear_INOUT_STRINGS(...)
%swiglal_map_a(%swiglal_clear, char **, __VA_ARGS__);
%enddef
// Do not try to free const char* return arguments.
%typemap(newfree,noblock=1) const char* "";
// Input typemap for pointer-to-const SWIGTYPEs. This typemap is identical
to the
// standard SWIGTYPE pointer typemap, except $disown is commented out. This
prevents
// SWIG transferring ownership of SWIG-wrapped objects when assigning to po
inter-to-const
// members of structs. In this case, it is assumed that the struct does not
want to take
// ownership of the pointer, since it cannot free it (since it is a pointer
-to-const).
%typemap(in,noblock=1) const SWIGTYPE * (void *argp = 0, int res = 0) {
res = SWIG_ConvertPtr($input, &argp, $descriptor, 0 /*$disown*/ | %conver
tptr_flags);
if (!SWIG_IsOK(res)) {
%argument_fail(res, "$type", $symname, $argnum);
}
$1 = %reinterpret_cast(argp, $ltype);
}
%typemap(freearg) const SWIGTYPE * "";
// Typemap for output SWIGTYPEs. This typemaps will match either the SWIG-w rapped // Typemap for output SWIGTYPEs. This typemaps will match either the SWIG-w rapped
// return argument from functions (which will have the SWIG_POINTER_OWN bit set // return argument from functions (which will have the SWIG_POINTER_OWN bit set
// in $owner) or return a member of a struct through a 'get' functions (in which // in $owner) or return a member of a struct through a 'get' functions (in which
// case SWIG_POINTER_OWN will not be set). If it is the latter case, the fu nction // case SWIG_POINTER_OWN will not be set). If it is the latter case, the fu nction
// swiglal_store_parent() is called to store a reference to the struct cont aining // swiglal_store_parent() is called to store a reference to the struct cont aining
// the member being accessed, in order to prevent it from being destroyed a s long // the member being accessed, in order to prevent it from being destroyed a s long
// as the SWIG-wrapped member object is in scope. The return object is then always // as the SWIG-wrapped member object is in scope. The return object is then always
// created with SWIG_POINTER_OWN, so that its destructor will always be cal led. // created with SWIG_POINTER_OWN, so that its destructor will always be cal led.
%define %swiglal_store_parent(PTR, OWNER) %define %swiglal_store_parent(PTR, OWNER, SELF)
%#if !(OWNER & SWIG_POINTER_OWN) %#if !(OWNER & SWIG_POINTER_OWN)
if (%as_voidptr(PTR) != NULL) { if (%as_voidptr(PTR) != NULL) {
swiglal_store_parent(%as_voidptr(PTR), swiglal_self()); swiglal_store_parent(%as_voidptr(PTR), SELF);
} }
%#endif %#endif
%enddef %enddef
%typemap(out,noblock=1) SWIGTYPE *, SWIGTYPE &, SWIGTYPE[] { %typemap(out,noblock=1) SWIGTYPE *, SWIGTYPE &, SWIGTYPE[] {
%swiglal_store_parent($1, $owner); %swiglal_store_parent($1, $owner, swiglal_self());
%set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, ($owner | %n ewpointer_flags) | SWIG_POINTER_OWN)); %set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, ($owner | %n ewpointer_flags) | SWIG_POINTER_OWN));
} }
%typemap(out,noblock=1) const SWIGTYPE *, const SWIGTYPE &, const SWIGTYPE[ ] { %typemap(out,noblock=1) const SWIGTYPE *, const SWIGTYPE &, const SWIGTYPE[ ] {
%set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, ($owner | %n ewpointer_flags) & ~SWIG_POINTER_OWN)); %set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, ($owner | %n ewpointer_flags) & ~SWIG_POINTER_OWN));
} }
%typemap(out, noblock=1) SWIGTYPE *const& { %typemap(out, noblock=1) SWIGTYPE *const& {
%swiglal_store_parent(*$1, $owner); %swiglal_store_parent(*$1, $owner, swiglal_self());
%set_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*descriptor, ($owner | %newpointer_flags) | SWIG_POINTER_OWN)); %set_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*descriptor, ($owner | %newpointer_flags) | SWIG_POINTER_OWN));
} }
%typemap(out, noblock=1) const SWIGTYPE *const& { %typemap(out, noblock=1) const SWIGTYPE *const& {
%set_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*descriptor, ($owner | %newpointer_flags) & ~SWIG_POINTER_OWN)); %set_output(SWIG_NewPointerObj(%as_voidptr(*$1), $*descriptor, ($owner | %newpointer_flags) & ~SWIG_POINTER_OWN));
} }
%typemap(out, noblock=1) SWIGTYPE (void* copy = NULL) { %typemap(out, noblock=1) SWIGTYPE (void* copy = NULL) {
copy = %swiglal_new_copy($1, $ltype); copy = %swiglal_new_copy($1, $ltype);
%swiglal_store_parent(copy, SWIG_POINTER_OWN); %swiglal_store_parent(copy, SWIG_POINTER_OWN, swiglal_self());
%set_output(SWIG_NewPointerObj(copy, $&descriptor, (%newpointer_flags) | SWIG_POINTER_OWN)); %set_output(SWIG_NewPointerObj(copy, $&descriptor, (%newpointer_flags) | SWIG_POINTER_OWN));
} }
%typemap(varout, noblock=1) SWIGTYPE *, SWIGTYPE [] { %typemap(varout, noblock=1) SWIGTYPE *, SWIGTYPE [] {
%set_varoutput(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, (%newpoin ter_flags) & ~SWIG_POINTER_OWN)); %set_varoutput(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, (%newpoin ter_flags) & ~SWIG_POINTER_OWN));
} }
%typemap(varout, noblock=1) SWIGTYPE & { %typemap(varout, noblock=1) SWIGTYPE & {
%set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, (%newpoi nter_flags) & ~SWIG_POINTER_OWN)); %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $descriptor, (%newpoi nter_flags) & ~SWIG_POINTER_OWN));
} }
%typemap(varout, noblock=1) SWIGTYPE { %typemap(varout, noblock=1) SWIGTYPE {
%set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $&descriptor, (%newpo inter_flags) & ~SWIG_POINTER_OWN)); %set_varoutput(SWIG_NewPointerObj(%as_voidptr(&$1), $&descriptor, (%newpo inter_flags) & ~SWIG_POINTER_OWN));
} }
// The SWIGLAL(GET_OBJECT(...)) macro is used when a function returns an ob
ject whose
// memory is owned by the object supplied as the first argument to the func
tion.
// Typically this occurs when the function is returning some property of it
s first
// argument. The macro applies a typemap which calles swiglal_store_parent(
) to store
// a reference to the first argument as the 'parent' of the return argument
, so that
// the parent will not be destroyed as long as the return value is in scope
.
%define %swiglal_public_GET_OBJECT(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE* SWIGLAL_GET_OBJECT, TYPE, __VA_AR
GS__);
%enddef
%define %swiglal_public_clear_GET_OBJECT(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef
%typemap(out,noblock=1) SWIGTYPE* SWIGLAL_GET_OBJECT {
%swiglal_store_parent($1, 0, swiglal_1starg());
%set_output(SWIG_NewPointerObj(%as_voidptr($1), $descriptor, ($owner | %n
ewpointer_flags) | SWIG_POINTER_OWN));
}
// Typemaps for pointers to primitive scalars. These are treated as output- only // Typemaps for pointers to primitive scalars. These are treated as output- only
// arguments by default, by globally applying the SWIG OUTPUT typemaps. The INOUT // arguments by default, by globally applying the SWIG OUTPUT typemaps. The INOUT
// typemaps can be supplied as needed using the SWIGLAL(INOUT_SCALARS(TYPE, ...)) macro. // typemaps can be supplied as needed using the SWIGLAL(INOUT_SCALARS(TYPE, ...)) macro.
%apply int* OUTPUT { enum SWIGTYPE* }; %apply int* OUTPUT { enum SWIGTYPE* };
%apply short* OUTPUT { short* }; %apply short* OUTPUT { short* };
%apply unsigned short* OUTPUT { unsigned short* }; %apply unsigned short* OUTPUT { unsigned short* };
%apply int* OUTPUT { int* }; %apply int* OUTPUT { int* };
%apply unsigned int* OUTPUT { unsigned int* }; %apply unsigned int* OUTPUT { unsigned int* };
%apply long* OUTPUT { long* }; %apply long* OUTPUT { long* };
%apply unsigned long* OUTPUT { unsigned long* }; %apply unsigned long* OUTPUT { unsigned long* };
skipping to change at line 1056 skipping to change at line 1150
%define %swiglal_public_INOUT_STRUCTS(TYPE, ...) %define %swiglal_public_INOUT_STRUCTS(TYPE, ...)
%swiglal_map_ab(%swiglal_apply, SWIGTYPE ** INOUT, TYPE, __VA_ARGS__); %swiglal_map_ab(%swiglal_apply, SWIGTYPE ** INOUT, TYPE, __VA_ARGS__);
%enddef %enddef
%define %swiglal_public_clear_INOUT_STRUCTS(TYPE, ...) %define %swiglal_public_clear_INOUT_STRUCTS(TYPE, ...)
%swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__); %swiglal_map_a(%swiglal_clear, TYPE, __VA_ARGS__);
%enddef %enddef
// Make the wrapping of printf-style LAL functions a little safer, as sugge sted in // Make the wrapping of printf-style LAL functions a little safer, as sugge sted in
// the SWIG 2.0 documentation (section 13.5). These functions should now be safely // the SWIG 2.0 documentation (section 13.5). These functions should now be safely
// able to print any string, so long as the format string is named "format" or "fmt". // able to print any string, so long as the format string is named "format" or "fmt".
%typemap(in, fragment="SWIG_AsCharPtrAndSize") (const char *SWIGLAL_PRINTF_ FORMAT, ...) %typemap(in, fragment="SWIG_AsLALcharPtrAndSize") (const char *SWIGLAL_PRIN TF_FORMAT, ...)
(char fmt[] = "%s", char *str = 0, int alloc = 0) (char fmt[] = "%s", char *str = 0, int alloc = 0)
{ {
$1 = fmt; $1 = fmt;
int ecode = SWIG_AsCharPtrAndSize($input, &str, NULL, &alloc); int ecode = SWIG_AsLALcharPtr($input, &str, &alloc);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
%argument_fail(ecode, "const char*, ...", $symname, $argnum); %argument_fail(ecode, "$type", $symname, $argnum);
} }
$2 = (void *) str; $2 = (void *) str;
} }
%typemap(freearg, match="in") (const char *format, ...) { %typemap(freearg, match="in") (const char *format, ...) {
if (SWIG_IsNewObj(alloc$argnum)) { if (SWIG_IsNewObj(alloc$argnum)) {
%delete_array(str$argnum); XLALFree(str$argnum);
} }
} }
%apply (const char *SWIGLAL_PRINTF_FORMAT, ...) { %apply (const char *SWIGLAL_PRINTF_FORMAT, ...) {
(const char *format, ...), (const char *fmt, ...) (const char *format, ...), (const char *fmt, ...)
}; };
// This macro supports functions which require a variable-length // This macro supports functions which require a variable-length
// list of arguments of type TYPE, i.e. a list of strings. It // list of arguments of type TYPE, i.e. a list of strings. It
// generates SWIG "compact" default arguments, i.e. only one // generates SWIG "compact" default arguments, i.e. only one
// wrapping function where all missing arguments are assigned ENDVALUE, // wrapping function where all missing arguments are assigned ENDVALUE,
 End of changes. 73 change blocks. 
157 lines changed or deleted 271 lines changed or added


 swiglal_octave.i   swiglal_octave.i 
skipping to change at line 57 skipping to change at line 57
#include <octave/toplev.h> #include <octave/toplev.h>
}%} }%}
// Name of octave_value containing the SWIG wrapping of the 'this' // Name of octave_value containing the SWIG wrapping of the 'this'
// pointer, i.e. the struct whose members are being accessed. // pointer, i.e. the struct whose members are being accessed.
%header %{ %header %{
#define swiglal_self() (args.length() > 0 ? args(0) : octave_value()) #define swiglal_self() (args.length() > 0 ? args(0) : octave_value())
#define swiglal_no_self() octave_value() #define swiglal_no_self() octave_value()
%} %}
// Name of octave_value containing the SWIG wrapping of the
// first argument to a function.
%header %{
#define swiglal_1starg() (args.length() > 0 ? args(0) : octave_value())
%}
////////// SWIG directives for operators ////////// ////////// SWIG directives for operators //////////
// Unary operators which return a new object, and thus // Unary operators which return a new object, and thus
// require %newobject to be set. // require %newobject to be set.
%define %swiglal_oct_urn_op(NAME, OCTNAME) %define %swiglal_oct_urn_op(NAME, OCTNAME)
%rename(__##OCTNAME##__) *::__##NAME##__; %rename(__##OCTNAME##__) *::__##NAME##__;
%newobject *::__##NAME##__; %newobject *::__##NAME##__;
%enddef %enddef
%swiglal_oct_urn_op(abs, abs); %swiglal_oct_urn_op(abs, abs);
%swiglal_oct_urn_op(neg, uminus); %swiglal_oct_urn_op(neg, uminus);
skipping to change at line 88 skipping to change at line 94
%swiglal_oct_bin_op(lshift); %swiglal_oct_bin_op(lshift);
%swiglal_oct_bin_op(mod); %swiglal_oct_bin_op(mod);
%swiglal_oct_bin_op(mul); %swiglal_oct_bin_op(mul);
%swiglal_oct_bin_op(or); %swiglal_oct_bin_op(or);
%swiglal_oct_bin_op(rshift); %swiglal_oct_bin_op(rshift);
%swiglal_oct_bin_op(sub); %swiglal_oct_bin_op(sub);
%swiglal_oct_bin_op(xor); %swiglal_oct_bin_op(xor);
////////// General fragments, typemaps, and macros ////////// ////////// General fragments, typemaps, and macros //////////
// Helper fragment and macro for typemap for functions which return 'int'.
// Drops the first return value (which is the 'int') from the output argume
nt
// list if the argument list contains at least 2 items (the 'int' and some
// other output argument).
%fragment("swiglal_maybe_drop_first_retval", "header") {
SWIGINTERNINLINE void swiglal_maybe_drop_first_retval(octave_value_list&
out) {
if (out.length() > 1) {
out = out.slice(1, out.length()-1);
}
}
}
#define %swiglal_maybe_drop_first_retval() \
swiglal_maybe_drop_first_retval(*_outp)
// SWIG conversion fragments and typemaps for GSL complex numbers. // SWIG conversion fragments and typemaps for GSL complex numbers.
%swig_cplxflt_convn(gsl_complex_float, gsl_complex_float_rect, GSL_REAL, GS L_IMAG); %swig_cplxflt_convn(gsl_complex_float, gsl_complex_float_rect, GSL_REAL, GS L_IMAG);
%swig_cplxdbl_convn(gsl_complex, gsl_complex_rect, GSL_REAL, GSL_IMAG); %swig_cplxdbl_convn(gsl_complex, gsl_complex_rect, GSL_REAL, GSL_IMAG);
%typemaps_primitive(%checkcode(CPLXFLT), gsl_complex_float); %typemaps_primitive(%checkcode(CPLXFLT), gsl_complex_float);
%typemaps_primitive(%checkcode(CPLXDBL), gsl_complex); %typemaps_primitive(%checkcode(CPLXDBL), gsl_complex);
// SWIG conversion fragments and typemaps for LAL complex numbers. // SWIG conversion fragments and typemaps for LAL complex numbers.
%swig_cplxflt_convn(COMPLEX8, CX8rect, CX8re, CX8im); %swig_cplxflt_convn(COMPLEX8, COMPLEX8, std::real, std::imag);
%swig_cplxdbl_convn(COMPLEX16, CX16rect, CX16re, CX16im); %swig_cplxdbl_convn(COMPLEX16, COMPLEX16, std::real, std::imag);
%typemaps_primitive(%checkcode(CPLXFLT), COMPLEX8); %typemaps_primitive(%checkcode(CPLXFLT), COMPLEX8);
%typemaps_primitive(%checkcode(CPLXDBL), COMPLEX16); %typemaps_primitive(%checkcode(CPLXDBL), COMPLEX16);
// Typemaps which convert to/from the C broken-down date/time struct. // Typemaps which convert to/from the C broken-down date/time struct.
%typemap(in) struct tm* (struct tm temptm) { %typemap(in) struct tm* (struct tm temptm) {
// Set 'tm' struct to zero // Set 'tm' struct to zero
memset(&temptm, 0, sizeof(temptm)); memset(&temptm, 0, sizeof(temptm));
if (!$input.is_empty()) { if (!$input.is_empty()) {
skipping to change at line 305 skipping to change at line 297
// struct goes out of scope by the array view remains. // struct goes out of scope by the array view remains.
const octave_value sloav_parent; const octave_value sloav_parent;
// Parameters of the C array data being viewed, // Parameters of the C array data being viewed,
// and associated SWIG type information. // and associated SWIG type information.
void *const sloav_ptr; void *const sloav_ptr;
const size_t sloav_esize; const size_t sloav_esize;
const size_t sloav_ndims; const size_t sloav_ndims;
const dim_vector sloav_dims; const dim_vector sloav_dims;
const dim_vector sloav_strides; const dim_vector sloav_strides;
const bool sloav_isptr;
swig_type_info *const sloav_tinfo; swig_type_info *const sloav_tinfo;
const int sloav_tflags; const int sloav_tflags;
// Construct an Octave dim_vector from a C array. // Construct an Octave dim_vector from a C array.
static dim_vector sloav_make_dim_vector(const size_t n, const size_t v[]) { static dim_vector sloav_make_dim_vector(const size_t n, const size_t v[]) {
dim_vector dv(n, 1); dim_vector dv(n, 1);
for (size_t i = 0; i < n; ++i) { for (size_t i = 0; i < n; ++i) {
dv(i) = v[i]; dv(i) = v[i];
} }
return dv; return dv;
skipping to change at line 345 skipping to change at line 338
for (int j = sloav_ndims-1; j >= 0; --j) { for (int j = sloav_ndims-1; j >= 0; --j) {
if (++idx(j) < sloav_dims(j)) { if (++idx(j) < sloav_dims(j)) {
break; break;
} }
idx(j) = 0; idx(j) = 0;
} }
} }
public: public:
virtual ~swiglal_oct_array_view()
{ }
swiglal_oct_array_view() swiglal_oct_array_view()
: octave_base_value(), sloav_parent(), : octave_base_value(), sloav_parent(),
sloav_ptr(0), sloav_esize(0), sloav_ndims(0), sloav_ptr(0), sloav_esize(0), sloav_ndims(0),
sloav_dims(), sloav_strides(), sloav_dims(), sloav_strides(),
sloav_tinfo(0), sloav_tflags(0) sloav_isptr(false), sloav_tinfo(0), sloav_tflags(0)
{ } { }
swiglal_oct_array_view(const octave_value& parent, swiglal_oct_array_view(const octave_value& parent,
void* ptr, void* ptr,
const size_t esize, const size_t esize,
const size_t ndims, const size_t ndims,
const size_t dims[], const size_t dims[],
const size_t strides[], const size_t strides[],
const bool isptr,
swig_type_info* tinfo, swig_type_info* tinfo,
const int tflags) const int tflags)
: octave_base_value(), sloav_parent(parent), : octave_base_value(), sloav_parent(parent),
sloav_ptr(ptr), sloav_esize(esize), sloav_ndims(ndims), sloav_ptr(ptr), sloav_esize(esize), sloav_ndims(ndims),
sloav_dims(sloav_make_dim_vector(ndims, dims)), sloav_dims(sloav_make_dim_vector(ndims, dims)),
sloav_strides(sloav_make_dim_vector(ndims, strides)), sloav_strides(sloav_make_dim_vector(ndims, strides)),
sloav_tinfo(tinfo), sloav_tflags(tflags) sloav_isptr(isptr), sloav_tinfo(tinfo), sloav_tflags(tflags)
{ } { }
// Copy the Octave array obj to the C array. // Copy the Octave array obj to the C array.
int sloav_array_in(octave_value& obj) { int sloav_array_in(octave_value& obj) {
// Check that C array is non-NULL. // Check that C array is non-NULL.
if (!sloav_ptr) { if (!sloav_ptr) {
return SWIG_MemoryError; return SWIG_MemoryError;
} }
// Check that Octave array dimensions are consistent with C array d imensions. // Check that Octave array dimensions are consistent with C array d imensions.
// 1-D arrays are a special case, since Octave arrays are always at least // 1-D arrays are a special case, since Octave arrays are always at least
// 2-dimensional, so need to check that one of those dimensions is singular. // 2-dimensional, so need to check that one of those dimensions is singular.
dim_vector objdims = obj.dims(); dim_vector objdims = obj.dims();
if (sloav_ndims == 1) { if (sloav_ndims == 1) {
if (objdims.length() > 2 || objdims.num_ones() > 1 || objdims.num el() != sloav_dims(0)) { if (objdims.length() > 2 || objdims.num_ones() == 0 || objdims.nu mel() != sloav_dims(0)) {
return SWIG_ValueError; return SWIG_ValueError;
} }
} }
else if (objdims != sloav_dims) { else if (objdims != sloav_dims) {
return SWIG_ValueError; return SWIG_ValueError;
} }
// Iterate over all elements in the C array. // Iterate over all elements in the C array.
Array<octave_idx_type> idx(dim_vector(1, sloav_ndims), 0); Array<octave_idx_type> idx(dim_vector(1, sloav_ndims), 0);
std::list<octave_value_list> objidx(1); std::list<octave_value_list> objidx(1);
for (int i = 0; i < objdims.numel(); ++i) { for (int i = 0; i < objdims.numel(); ++i) {
// Get the scalar index of the Octave array element, and the elem ent itself. // Get the scalar index of the Octave array element, and the elem ent itself.
objidx.front()(0) = get_scalar_idx(idx, objdims) + 1; objidx.front()(0) = get_scalar_idx(idx, objdims) + 1;
octave_value objelem = obj.subsref(obj.is_cell() ? "{" : "(", obj idx); octave_value objelem = obj.subsref(obj.is_cell() ? "{" : "(", obj idx);
// Copy the Octave array element to the C array. // Copy the Octave array element to the C array.
int ecode = HELPER::incall(sloav_parent, objelem, sloav_get_eleme nt_ptr(idx), sloav_esize, sloav_tinfo, sloav_tflags); int ecode = HELPER::incall(sloav_parent, objelem, sloav_get_eleme nt_ptr(idx), sloav_esize, sloav_isptr, sloav_tinfo, sloav_tflags);
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
return ecode; return ecode;
} }
// Increment the Octave array index. // Increment the Octave array index.
sloav_increment_idx(idx); sloav_increment_idx(idx);
} }
return SWIG_OK; return SWIG_OK;
} }
// Copy the C array to the returned Octave array. // Copy the C array to the returned Octave array.
octave_value sloav_array_out() const { octave_value sloav_array_out() const {
// Check that C array is non-NULL.
if (!sloav_ptr) {
return SWIG_MemoryError;
}
// Create a new Octave array. // Create a new Octave array.
dim_vector objdims = sloav_dims; dim_vector objdims = sloav_dims;
typename HELPER::OVType objval(objdims); typename HELPER::OVType objval(objdims);
octave_value obj(objval); octave_value obj(objval);
// Iterate over all elements in the C array. // Iterate over all elements in the C array.
Array<octave_idx_type> idx(dim_vector(1, sloav_ndims), 0); Array<octave_idx_type> idx(dim_vector(1, sloav_ndims), 0);
std::list<octave_value_list> objidx(1); std::list<octave_value_list> objidx(1);
for (int i = 0; i < objdims.numel(); ++i) { for (int i = 0; i < objdims.numel(); ++i) {
// Get the scalar index of the Octave array element. // Get the scalar index of the Octave array element.
objidx.front()(0) = get_scalar_idx(idx, objdims) + 1; objidx.front()(0) = get_scalar_idx(idx, objdims) + 1;
// Copy the C array element to the Octave array. // Copy the C array element to the Octave array.
octave_value objelem = HELPER::outcall(sloav_parent, sloav_get_el ement_ptr(idx), sloav_tinfo, sloav_tflags); octave_value objelem = HELPER::outcall(sloav_parent, sloav_get_el ement_ptr(idx), sloav_isptr, sloav_tinfo, sloav_tflags);
obj = obj.subsasgn(obj.is_cell() ? "{" : "(", objidx, objelem); obj = obj.subsasgn(obj.is_cell() ? "{" : "(", objidx, objelem);
// Increment the Octave array index. // Increment the Octave array index.
sloav_increment_idx(idx); sloav_increment_idx(idx);
} }
return obj; return obj;
} }
skipping to change at line 487 skipping to change at line 479
octave_value subsref(const std::string& type, const std::list<octave_ value_list>& idx) { octave_value subsref(const std::string& type, const std::list<octave_ value_list>& idx) {
return sloav_array_out().subsref(type, idx); return sloav_array_out().subsref(type, idx);
} }
octave_value_list subsref(const std::string& type, const std::list<oc tave_value_list>& idx, int nargout) { octave_value_list subsref(const std::string& type, const std::list<oc tave_value_list>& idx, int nargout) {
return sloav_array_out().subsref(type, idx, nargout); return sloav_array_out().subsref(type, idx, nargout);
} }
// Do subscript assignment, and copy result back to C array. // Do subscript assignment, and copy result back to C array.
octave_value subsasgn(const std::string& type, const std::list<octave _value_list>& idx, const octave_value& rhs) { octave_value subsasgn(const std::string& type, const std::list<octave _value_list>& idx, const octave_value& rhs) {
octave_value obj = sloav_array_out().subsasgn(type, idx, rhs); octave_value obj = sloav_array_out().subsasgn(type, idx, rhs);
if (!SWIG_IsOK(sloav_array_in(obj))) { int ecode = sloav_array_in(obj);
std::string nm = type_name (); if (!SWIG_IsOK(ecode)) {
error("failed to perform indexed assignment for %s type", nm.c_st std::string n = type_name();
r()); std::string e = SWIG_ErrorType(ecode).string_value();
error("failed to perform indexed assignment for %s type: %s", n.c
_str(), e.c_str());
return octave_value(); return octave_value();
} }
count++;
return octave_value(this); return octave_value(this);
} }
// Save and load from ASCII. // Save and load from ASCII.
bool save_ascii (std::ostream& os) { bool save_ascii (std::ostream& os) {
return sloav_array_out().save_ascii(os); return sloav_array_out().save_ascii(os);
} }
bool load_ascii(std::istream& is) { bool load_ascii(std::istream& is) {
octave_value obj = sloav_array_out(); octave_value obj = sloav_array_out();
return obj.load_ascii(is) && SWIG_IsOK(sloav_array_in(obj)); return obj.load_ascii(is) && SWIG_IsOK(sloav_array_in(obj));
skipping to change at line 786 skipping to change at line 781
// Octave array-related types. // Octave array-related types.
typedef OVCLASS OVClass; typedef OVCLASS OVClass;
typedef OVTYPE OVType; typedef OVTYPE OVType;
// Extract an OVType from an octave_value. // Extract an OVType from an octave_value.
static OVType ovvalue(octave_value& ov) { static OVType ovvalue(octave_value& ov) {
return ov.OVVALUE(); return ov.OVVALUE();
} }
// Convert the octave_value objelem to an array element stored at e lemptr. // Convert the octave_value objelem to an array element stored at e lemptr.
static int incall(const octave_value& parent, octave_value& objelem static int incall(const octave_value& parent, octave_value& objelem
, void *elemptr, const size_t esize, swig_type_info *const tinfo, const int , void *elemptr, const size_t esize, const bool isptr, swig_type_info *cons
tflags) { t tinfo, const int tflags)
{
int ecode = INCALL; int ecode = INCALL;
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
return ecode; return ecode;
} }
return ecode; return ecode;
} }
// Convert the array element stored at elemptr to an octave_value. // Convert the array element stored at elemptr to an octave_value.
static octave_value outcall(const octave_value& parent, void *elemp tr, swig_type_info *const tinfo, const int tflags) { static octave_value outcall(const octave_value& parent, void *elemp tr, const bool isptr, swig_type_info *const tinfo, const int tflags) {
return OUTCALL; return OUTCALL;
} }
}; };
// ACFTYPE-specific array view class fragment. // ACFTYPE-specific array view class fragment.
class OCTINTERP_API %swiglal_oct_array_view_class(ACFTYPE) : public % swiglal_oct_array_view_tmpl(ACFTYPE) { class OCTINTERP_API %swiglal_oct_array_view_class(ACFTYPE) : public % swiglal_oct_array_view_tmpl(ACFTYPE) {
private: private:
// Octave type constructs. // Octave type constructs.
DECLARE_OCTAVE_ALLOCATOR; DECLARE_OCTAVE_ALLOCATOR;
DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA;
protected: protected:
public: public:
virtual ~%swiglal_oct_array_view_class(ACFTYPE)()
{ }
%swiglal_oct_array_view_class(ACFTYPE)() %swiglal_oct_array_view_class(ACFTYPE)()
: %swiglal_oct_array_view_tmpl(ACFTYPE)() : %swiglal_oct_array_view_tmpl(ACFTYPE)()
{ } { }
%swiglal_oct_array_view_class(ACFTYPE)(const octave_value& parent, %swiglal_oct_array_view_class(ACFTYPE)(const octave_value& parent,
void* ptr, void* ptr,
const size_t esize, const size_t esize,
const size_t ndims, const size_t ndims,
const size_t dims[], const size_t dims[],
const size_t strides[], const size_t strides[],
const bool isptr,
swig_type_info* tinfo, swig_type_info* tinfo,
const int tflags) const int tflags)
: %swiglal_oct_array_view_tmpl(ACFTYPE)(parent, ptr, esize, ndims , dims, strides, tinfo, tflags) : %swiglal_oct_array_view_tmpl(ACFTYPE)(parent, ptr, esize, ndims , dims, strides, isptr, tinfo, tflags)
{ } { }
}; };
// Octave type constructs. // Octave type constructs.
DEFINE_OCTAVE_ALLOCATOR(%swiglal_oct_array_view_class(ACFTYPE)); DEFINE_OCTAVE_ALLOCATOR(%swiglal_oct_array_view_class(ACFTYPE));
DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(%swiglal_oct_array_view_class(ACF TYPE), DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(%swiglal_oct_array_view_class(ACF TYPE),
%swiglal_oct_array_view_ovtype(AC FTYPE), %swiglal_oct_array_view_ovtype(AC FTYPE),
OVCLASS::static_class_name()); OVCLASS::static_class_name());
skipping to change at line 852 skipping to change at line 852
%fragment(%swiglal_array_copyin_frag(ACFTYPE), "header", %fragment(%swiglal_array_copyin_frag(ACFTYPE), "header",
fragment=%swiglal_oct_array_view_frag(ACFTYPE)) fragment=%swiglal_oct_array_view_frag(ACFTYPE))
{ {
SWIGINTERN int %swiglal_array_copyin_func(ACFTYPE)(const octave_value& parent, SWIGINTERN int %swiglal_array_copyin_func(ACFTYPE)(const octave_value& parent,
octave_value obj, octave_value obj,
void* ptr, void* ptr,
const size_t esize, const size_t esize,
const size_t ndims, const size_t ndims,
const size_t dims[], const size_t dims[],
const size_t strides [], const size_t strides [],
const bool isptr,
swig_type_info *tinf o, swig_type_info *tinf o,
const int tflags) const int tflags)
{ {
// Create a local array view, then use its sloav_array_in() // Create a local array view, then use its sloav_array_in()
// member to copy the input Octave array to the viewed C array. // member to copy the input Octave array to the viewed C array.
%swiglal_oct_array_view_class(ACFTYPE) arrview(parent, ptr, esize, nd ims, dims, strides, tinfo, tflags); %swiglal_oct_array_view_class(ACFTYPE) arrview(parent, ptr, esize, nd ims, dims, strides, isptr, tinfo, tflags);
return arrview.sloav_array_in(obj); return arrview.sloav_array_in(obj);
} }
} }
// Output copy conversion fragment for arrays of type ACFTYPE. // Output copy conversion fragment for arrays of type ACFTYPE.
%fragment(%swiglal_array_copyout_frag(ACFTYPE), "header", %fragment(%swiglal_array_copyout_frag(ACFTYPE), "header",
fragment=%swiglal_oct_array_view_frag(ACFTYPE)) fragment=%swiglal_oct_array_view_frag(ACFTYPE))
{ {
SWIGINTERN octave_value %swiglal_array_copyout_func(ACFTYPE)(const octa ve_value& parent, SWIGINTERN octave_value %swiglal_array_copyout_func(ACFTYPE)(const octa ve_value& parent,
void* ptr, void* ptr,
const size _t esize, const size _t esize,
const size _t ndims, const size _t ndims,
const size _t dims[], const size _t dims[],
const size _t strides[], const size _t strides[],
const bool isptr,
swig_type_ info *tinfo, swig_type_ info *tinfo,
const int tflags) const int tflags)
{ {
// Create a local array view, then use its sloav_array_out() // Create a local array view, then use its sloav_array_out()
// member to copy the viewed C array to the output Octave array. // member to copy the viewed C array to the output Octave array.
%swiglal_oct_array_view_class(ACFTYPE) arrview(parent, ptr, esize, nd ims, dims, strides, tinfo, tflags); %swiglal_oct_array_view_class(ACFTYPE) arrview(parent, ptr, esize, nd ims, dims, strides, isptr, tinfo, tflags);
return arrview.sloav_array_out(); return arrview.sloav_array_out();
} }
} }
// Output view conversion fragment for arrays of type ACFTYPE. // Output view conversion fragment for arrays of type ACFTYPE.
%fragment(%swiglal_array_viewout_frag(ACFTYPE), "header", %fragment(%swiglal_array_viewout_frag(ACFTYPE), "header",
fragment=%swiglal_oct_array_view_frag(ACFTYPE)) fragment=%swiglal_oct_array_view_frag(ACFTYPE))
{ {
SWIGINTERN octave_value %swiglal_array_viewout_func(ACFTYPE)(const octa ve_value& parent, SWIGINTERN octave_value %swiglal_array_viewout_func(ACFTYPE)(const octa ve_value& parent,
void* ptr, void* ptr,
const size _t esize, const size _t esize,
const size _t ndims, const size _t ndims,
const size _t dims[], const size _t dims[],
const size _t strides[], const size _t strides[],
const bool isptr,
swig_type_ info *tinfo, swig_type_ info *tinfo,
const int tflags) const int tflags)
{ {
// Return an Octave array view of the C array. // Return an Octave array view of the C array.
octave_base_value *objval = octave_base_value *objval =
new %swiglal_oct_array_view_class(ACFTYPE)(parent, ptr, esize, ndim s, dims, strides, tinfo, tflags); new %swiglal_oct_array_view_class(ACFTYPE)(parent, ptr, esize, ndim s, dims, strides, isptr, tinfo, tflags);
return octave_value(objval); return octave_value(objval);
} }
} }
%enddef // %swiglal_oct_array_frags %enddef // %swiglal_oct_array_frags
// Array conversion fragments for generic arrays, e.g. SWIG-wrapped types. // Array conversion fragments for generic arrays, e.g. SWIG-wrapped types.
%swiglal_oct_array_frags(SWIGTYPE, "swiglal_as_SWIGTYPE", "swiglal_from_SWI GTYPE", %swiglal_oct_array_frags(SWIGTYPE, "swiglal_as_SWIGTYPE", "swiglal_from_SWI GTYPE",
%arg(swiglal_as_SWIGTYPE(parent, objelem, elemptr, %arg(swiglal_as_SWIGTYPE(parent, objelem, elemptr,
esize, tinfo, tflags)), esize, isptr, tinfo, tflags)),
%arg(swiglal_from_SWIGTYPE(parent, elemptr, tinfo, %arg(swiglal_from_SWIGTYPE(parent, elemptr, isptr,
tflags)), tinfo, tflags)),
octave_cell, Cell, cell_value); octave_cell, Cell, cell_value);
// Array conversion fragments for arrays of LAL strings. // Array conversion fragments for arrays of LAL strings.
%swiglal_oct_array_frags(LALCHAR, "SWIG_AsNewLALCHARPtr", "SWIG_FromLALCHAR %swiglal_oct_array_frags(LALchar, "SWIG_AsNewLALcharPtr", "SWIG_FromLALchar
Ptr", Ptr",
%arg(SWIG_AsNewLALCHARPtr(objelem, %reinterpret_ca %arg(SWIG_AsNewLALcharPtr(objelem, %reinterpret_ca
st(elemptr, CHAR**))), st(elemptr, char**))),
%arg(SWIG_FromLALCHARPtr(*%reinterpret_cast(elempt %arg(SWIG_FromLALcharPtr(*%reinterpret_cast(elempt
r, CHAR**))), r, char**))),
octave_cell, Cell, cell_value); octave_cell, Cell, cell_value);
// Macro which generates array conversion function fragments to/from Octave // Macro which generates array conversion function fragments to/from Octave
// arrays for real/fragment TYPEs which use SWIG_AsVal/From fragments. // arrays for real/fragment TYPEs which use SWIG_AsVal/From fragments.
%define %swiglal_oct_array_asvalfrom_frags(TYPE, OVCLASS, OVTYPE, OVVALUE) %define %swiglal_oct_array_asvalfrom_frags(TYPE, OVCLASS, OVTYPE, OVVALUE)
%swiglal_oct_array_frags(TYPE, SWIG_AsVal_frag(TYPE), SWIG_From_frag(TYPE), %swiglal_oct_array_frags(TYPE, SWIG_AsVal_frag(TYPE), SWIG_From_frag(TYPE),
%arg(SWIG_AsVal(TYPE)(objelem, %reinterpret_cast(e lemptr, TYPE*))), %arg(SWIG_AsVal(TYPE)(objelem, %reinterpret_cast(e lemptr, TYPE*))),
%arg(SWIG_From(TYPE)(*%reinterpret_cast(elemptr, T YPE*))), %arg(SWIG_From(TYPE)(*%reinterpret_cast(elemptr, T YPE*))),
OVCLASS, OVTYPE, OVVALUE); OVCLASS, OVTYPE, OVVALUE);
%enddef %enddef
 End of changes. 27 change blocks. 
50 lines changed or deleted 51 lines changed or added


 swiglal_python.i   swiglal_python.i 
skipping to change at line 44 skipping to change at line 44
import_array(); import_array();
%} %}
// Name of PyObject containing the SWIG wrapping of the 'this' // Name of PyObject containing the SWIG wrapping of the 'this'
// pointer, i.e. the struct whose members are being accessed. // pointer, i.e. the struct whose members are being accessed.
%header %{ %header %{
#define swiglal_self() self #define swiglal_self() self
#define swiglal_no_self() NULL #define swiglal_no_self() NULL
%} %}
// Name of PyObject containing the SWIG wrapping of the
// first argument to a function.
%header %{
#define swiglal_1starg() obj0
%}
////////// SWIG directives for operators ////////// ////////// SWIG directives for operators //////////
// These macros apply the correct python:slot directives // These macros apply the correct python:slot directives
// to map Python __operator__ functions (which may be // to map Python __operator__ functions (which may be
// defined in %extend) to the correct PyTypeObject slots. // defined in %extend) to the correct PyTypeObject slots.
// Unary operators which do not return a new object. // Unary operators which do not return a new object.
%define %swiglal_py_ury_op(NAME, FUNCTYPE, SLOT) %define %swiglal_py_ury_op(NAME, FUNCTYPE, SLOT)
%pythonmaybecall *::__##NAME##__; %pythonmaybecall *::__##NAME##__;
%feature("python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__; %feature("python:slot", #SLOT, functype=#FUNCTYPE) *::__##NAME##__;
skipping to change at line 109 skipping to change at line 115
%enddef %enddef
%swiglal_py_cmp_op(eq, Py_EQ); %swiglal_py_cmp_op(eq, Py_EQ);
%swiglal_py_cmp_op(ge, Py_GE); %swiglal_py_cmp_op(ge, Py_GE);
%swiglal_py_cmp_op(gt, Py_GT); %swiglal_py_cmp_op(gt, Py_GT);
%swiglal_py_cmp_op(le, Py_LE); %swiglal_py_cmp_op(le, Py_LE);
%swiglal_py_cmp_op(lt, Py_LT); %swiglal_py_cmp_op(lt, Py_LT);
%swiglal_py_cmp_op(ne, Py_NE); %swiglal_py_cmp_op(ne, Py_NE);
////////// General fragments, typemaps, and macros ////////// ////////// General fragments, typemaps, and macros //////////
// Helper fragment and macro for typemap for functions which return 'int'.
// Drops the first return value (which is the 'int') from the output argume
nt
// list if the argument list contains at least 2 items (the 'int' and some
// other output argument).
%fragment("swiglal_maybe_drop_first_retval", "header") {
SWIGINTERN PyObject* swiglal_maybe_drop_first_retval(PyObject* out) {
if (!PySequence_Check(out)) {
return out;
}
Py_ssize_t len = PySequence_Length(out);
if (len <= 1) {
return out;
}
PyObject* old = out;
if (len == 2) {
out = PySequence_GetItem(old, 1);
} else {
out = PySequence_GetSlice(old, 1, len);
}
Py_CLEAR(old);
return out;
}
}
#define %swiglal_maybe_drop_first_retval() \
resultobj = swiglal_maybe_drop_first_retval(resultobj)
// SWIG conversion fragments and typemaps for GSL complex numbers. // SWIG conversion fragments and typemaps for GSL complex numbers.
%swig_cplxflt_convn(gsl_complex_float, gsl_complex_float_rect, GSL_REAL, GS L_IMAG); %swig_cplxflt_convn(gsl_complex_float, gsl_complex_float_rect, GSL_REAL, GS L_IMAG);
%swig_cplxdbl_convn(gsl_complex, gsl_complex_rect, GSL_REAL, GSL_IMAG); %swig_cplxdbl_convn(gsl_complex, gsl_complex_rect, GSL_REAL, GSL_IMAG);
%typemaps_primitive(%checkcode(CPLXFLT), gsl_complex_float); %typemaps_primitive(%checkcode(CPLXFLT), gsl_complex_float);
%typemaps_primitive(%checkcode(CPLXDBL), gsl_complex); %typemaps_primitive(%checkcode(CPLXDBL), gsl_complex);
// SWIG conversion fragments and typemaps for LAL complex numbers. // SWIG conversion fragments and typemaps for LAL complex numbers.
%swig_cplxflt_convn(COMPLEX8, CX8rect, CX8re, CX8im); %swig_cplxflt_convn(COMPLEX8, crectf, crealf, cimagf);
%swig_cplxdbl_convn(COMPLEX16, CX16rect, CX16re, CX16im); %swig_cplxdbl_convn(COMPLEX16, crect, creal, cimag);
%typemaps_primitive(%checkcode(CPLXFLT), COMPLEX8); %typemaps_primitive(%checkcode(CPLXFLT), COMPLEX8);
%typemaps_primitive(%checkcode(CPLXDBL), COMPLEX16); %typemaps_primitive(%checkcode(CPLXDBL), COMPLEX16);
// Typemaps which convert to/from the C broken-down date/time struct. // Typemaps which convert to/from the C broken-down date/time struct.
// Uses some code from PyLAL: Copyright (C) 2006 Kipp Cannon // Uses some code from PyLAL: Copyright (C) 2006 Kipp Cannon
%typemap(in) struct tm* (struct tm temptm) { %typemap(in) struct tm* (struct tm temptm) {
// Set 'tm' struct to zero // Set 'tm' struct to zero
memset(&temptm, 0, sizeof(temptm)); memset(&temptm, 0, sizeof(temptm));
skipping to change at line 374 skipping to change at line 354
} }
idx[j] = 0; idx[j] = 0;
} }
} }
} // fragment swiglal_py_array_helpers } // fragment swiglal_py_array_helpers
// Fragment defining helper functions for the NumPy object-view array descr iptors. // Fragment defining helper functions for the NumPy object-view array descr iptors.
%fragment("swiglal_py_array_objview", "header") { %fragment("swiglal_py_array_objview", "header") {
// Struct which associates a SWIG type descriptor with a NumPy array desc // Struct which associates a SWIG type descriptor with two NumPy array de
riptor. scriptors,
// one for arrays of data blocks (_noptr), and one for arrays of pointers
(_isptr).
typedef struct { typedef struct {
swig_type_info* tinfo; swig_type_info* tinfo;
PyArray_Descr* descr; PyArray_Descr* descr_noptr;
PyArray_Descr* descr_isptr;
} swiglal_py_array_type_pair; } swiglal_py_array_type_pair;
// Static array of SWIG type/NumPy array descriptor pairs. This array sho uld // Static array of SWIG type/NumPy array descriptor pairs. This array sho uld
// always be long enough to accommodate all possible swig_type_info*, sin ce // always be long enough to accommodate all possible swig_type_info*, sin ce
// they are always members of the SWIG-generated global array swig_types[ ]. // they are always members of the SWIG-generated global array swig_types[ ].
// This array in turn is always one longer than the total number of types , // This array in turn is always one longer than the total number of types ,
// so there should always be a sentinal NULL element at the end. // so there should always be a sentinal NULL element at the end.
static swiglal_py_array_type_pair swiglal_py_array_types[sizeof(swig_type s) / sizeof(swig_types[0])]; static swiglal_py_array_type_pair swiglal_py_array_types[sizeof(swig_type s) / sizeof(swig_types[0])];
// This function maps a SWIG type descriptor to a NumPy array descriptor, // This function maps a SWIG type descriptor to a NumPy array descriptor,
// or returns the first NULL element if a mapping doesn't exist yet. // or returns the first NULL element if a mapping doesn't exist yet.
SWIGINTERN PyArray_Descr* *swiglal_py_array_descr_from_tinfo(swig_type_in fo* tinfo) { SWIGINTERN PyArray_Descr** swiglal_py_array_descr_from_tinfo(const bool i sptr, swig_type_info* tinfo) {
size_t i = 0; size_t i = 0;
while (swiglal_py_array_types[i].tinfo != NULL && swiglal_py_array_type s[i].tinfo != tinfo) while (swiglal_py_array_types[i].tinfo != NULL && swiglal_py_array_type s[i].tinfo != tinfo)
++i; ++i;
if (swiglal_py_array_types[i].tinfo == NULL) if (swiglal_py_array_types[i].tinfo == NULL)
swiglal_py_array_types[i].tinfo = tinfo; swiglal_py_array_types[i].tinfo = tinfo;
return &swiglal_py_array_types[i].descr; return isptr ? &swiglal_py_array_types[i].descr_isptr : &swiglal_py_arr ay_types[i].descr_noptr;
} }
// This function maps a NumPy array descriptor to a SWIG type descriptor, // This function maps a NumPy array descriptor to a SWIG type descriptor,
// or returns NULL element if a mapping doesn't exist. // or returns NULL element if a mapping doesn't exist.
SWIGINTERN swig_type_info* swiglal_py_array_tinfo_from_descr(PyArray_Desc r* descr) { SWIGINTERN void swiglal_py_array_tinfo_from_descr(bool *isptr, swig_type_ info** tinfo, PyArray_Descr* descr) {
size_t i = 0; size_t i = 0;
while (swiglal_py_array_types[i].descr != NULL && swiglal_py_array_type while ( ( swiglal_py_array_types[i].descr_noptr != NULL || swiglal_py_
s[i].descr != descr) array_types[i].descr_isptr != NULL ) &&
( swiglal_py_array_types[i].descr_noptr != descr && swiglal_py_
array_types[i].descr_isptr != descr ) )
++i; ++i;
return swiglal_py_array_types[i].tinfo; *isptr = (swiglal_py_array_types[i].descr_isptr == descr);
*tinfo = swiglal_py_array_types[i].tinfo;
} }
// Array of NumPy types that a NumPy object-view array can be safely cast to. // Array of NumPy types that a NumPy object-view array can be safely cast to.
static int swiglal_py_array_objview_copyswap_cancastto[2] = {NPY_OBJECT, NPY_NOTYPE}; static int swiglal_py_array_objview_copyswap_cancastto[2] = {NPY_OBJECT, NPY_NOTYPE};
// NumPy array descriptor function for copying/byte-swapping an array ele ment. // NumPy array descriptor function for copying/byte-swapping an array ele ment.
static void swiglal_py_array_objview_copyswap(void* dst, void* src, int s wap, void* arr) { static void swiglal_py_array_objview_copyswap(void* dst, void* src, int s wap, void* arr) {
// Check input. // Check input.
assert(arr != NULL); assert(arr != NULL);
skipping to change at line 473 skipping to change at line 457
// NumPy array descriptor function which gets an element from the viewed array. // NumPy array descriptor function which gets an element from the viewed array.
static PyObject* swiglal_py_array_objview_##ACFTYPE##_getitem(void* elemp tr, void* arr) { static PyObject* swiglal_py_array_objview_##ACFTYPE##_getitem(void* elemp tr, void* arr) {
// Check input. // Check input.
assert(elemptr != NULL); assert(elemptr != NULL);
assert(arr != NULL); assert(arr != NULL);
PyArrayObject* nparr = (PyArrayObject*)arr; PyArrayObject* nparr = (PyArrayObject*)arr;
assert(nparr->descr != NULL); assert(nparr->descr != NULL);
// Look up the SWIG type descriptor for this array. // Look up the SWIG type descriptor for this array.
swig_type_info* tinfo = swiglal_py_array_tinfo_from_descr(nparr->descr) bool isptr;
; swig_type_info* tinfo = NULL;
swiglal_py_array_tinfo_from_descr(&isptr, &tinfo, nparr->descr);
assert(tinfo != NULL); assert(tinfo != NULL);
// Get the Python object wrapping the C array element. // Get the Python object wrapping the C array element.
const int tflags = 0; const int tflags = 0;
PyObject* parent = nparr->base; PyObject* parent = nparr->base;
return OUTCALL; return OUTCALL;
} }
// NumPy array descriptor function which assigns an element in the viewed array. // NumPy array descriptor function which assigns an element in the viewed array.
static int swiglal_py_array_objview_##ACFTYPE##_setitem(PyObject* objelem , void* elemptr, void* arr) { static int swiglal_py_array_objview_##ACFTYPE##_setitem(PyObject* objelem , void* elemptr, void* arr) {
// Check input. // Check input.
assert(elemptr != NULL); assert(elemptr != NULL);
assert(arr != NULL); assert(arr != NULL);
PyArrayObject* nparr = (PyArrayObject*)arr; PyArrayObject* nparr = (PyArrayObject*)arr;
assert(nparr->descr != NULL); assert(nparr->descr != NULL);
// Look up the SWIG type descriptor for this array. // Look up the SWIG type descriptor for this array.
swig_type_info* tinfo = swiglal_py_array_tinfo_from_descr(nparr->descr) bool isptr;
; swig_type_info* tinfo = NULL;
swiglal_py_array_tinfo_from_descr(&isptr, &tinfo, nparr->descr);
assert(tinfo != NULL); assert(tinfo != NULL);
// Set the C array element to the supplied Python object. // Set the C array element to the supplied Python object.
const int tflags = 0; const int tflags = 0;
const size_t esize = nparr->descr->elsize; const size_t esize = nparr->descr->elsize;
PyObject* parent = nparr->base; PyObject* parent = nparr->base;
int ecode = INCALL; int ecode = INCALL;
if (!SWIG_IsOK(ecode)) { if (!SWIG_IsOK(ecode)) {
SWIG_Error(ecode, "failure in swiglal_py_array_objview_" #ACFTYPE "_s etitem()"); SWIG_Error(ecode, "failure in swiglal_py_array_objview_" #ACFTYPE "_s etitem()");
return -1; return -1;
skipping to change at line 582 skipping to change at line 570
0, // alignment 0, // alignment
(PyArray_ArrayDescr*)NULL, // subarray (PyArray_ArrayDescr*)NULL, // subarray
(PyObject*)NULL, // fields (PyObject*)NULL, // fields
(PyObject*)NULL, // names (PyObject*)NULL, // names
&swiglal_py_array_objview_##ACFTYPE##_arrfuncs, // f &swiglal_py_array_objview_##ACFTYPE##_arrfuncs, // f
}; };
// This function returns the NumPy array descriptor appropriate for the // This function returns the NumPy array descriptor appropriate for the
// supplied SWIG type descriptor. If no array descriptor exists, it creat es // supplied SWIG type descriptor. If no array descriptor exists, it creat es
// one from the array descriptor for type ACFTYPE. // one from the array descriptor for type ACFTYPE.
SWIGINTERN PyArray_Descr* swiglal_py_array_objview_##ACFTYPE##_descr(swig _type_info* tinfo, const int esize) { SWIGINTERN PyArray_Descr* swiglal_py_array_objview_##ACFTYPE##_descr(cons t bool isptr, swig_type_info* tinfo, const int esize) {
// Lookup existing NumPy array descriptor for SWIG type descriptor. // Lookup existing NumPy array descriptor for SWIG type descriptor.
PyArray_Descr* *pdescr = swiglal_py_array_descr_from_tinfo(tinfo); PyArray_Descr* *pdescr = swiglal_py_array_descr_from_tinfo(isptr, tinfo );
// Create NumPy array descriptor if none yet exists. // Create NumPy array descriptor if none yet exists.
if (*pdescr == NULL) { if (*pdescr == NULL) {
*pdescr = PyArray_DescrNew(&swiglal_py_array_objview_##ACFTYPE##_arrd escr); *pdescr = PyArray_DescrNew(&swiglal_py_array_objview_##ACFTYPE##_arrd escr);
if (*pdescr == NULL) { if (*pdescr == NULL) {
return NULL; return NULL;
} }
(*pdescr)->typeobj = SwigPyObject_type(); (*pdescr)->typeobj = SwigPyObject_type();
(*pdescr)->elsize = esize; (*pdescr)->elsize = esize;
(*pdescr)->alignment = 1; (*pdescr)->alignment = 1;
skipping to change at line 630 skipping to change at line 618
%fragment(%swiglal_array_copyin_frag(ACFTYPE), "header", %fragment(%swiglal_array_copyin_frag(ACFTYPE), "header",
fragment="swiglal_py_array_helpers", fragment=INFRAG) fragment="swiglal_py_array_helpers", fragment=INFRAG)
{ {
SWIGINTERN int %swiglal_array_copyin_func(ACFTYPE)(PyObject* parent, SWIGINTERN int %swiglal_array_copyin_func(ACFTYPE)(PyObject* parent,
PyObject* obj, PyObject* obj,
void* ptr, void* ptr,
const size_t esize, const size_t esize,
const size_t ndims, const size_t ndims,
const size_t dims[], const size_t dims[],
const size_t strides [], const size_t strides [],
const bool isptr,
swig_type_info *tinf o, swig_type_info *tinf o,
const int tflags) const int tflags)
{ {
int ecode = 0; int ecode = 0;
npy_intp idx[ndims]; npy_intp idx[ndims];
// Check that C array is non-NULL. // Check that C array is non-NULL.
if (ptr == NULL) { if (ptr == NULL) {
return SWIG_MemoryError; return SWIG_MemoryError;
} }
skipping to change at line 701 skipping to change at line 690
// Output copy conversion fragment for arrays of type ACFTYPE. // Output copy conversion fragment for arrays of type ACFTYPE.
%fragment(%swiglal_array_copyout_frag(ACFTYPE), "header", %fragment(%swiglal_array_copyout_frag(ACFTYPE), "header",
fragment="swiglal_py_array_helpers", fragment=OUTFRAG) fragment="swiglal_py_array_helpers", fragment=OUTFRAG)
{ {
SWIGINTERN PyObject* %swiglal_array_copyout_func(ACFTYPE)(PyObject* par ent, SWIGINTERN PyObject* %swiglal_array_copyout_func(ACFTYPE)(PyObject* par ent,
void* ptr, void* ptr,
const size_t esize, const size_t esize,
const size_t ndims, const size_t ndims,
const size_t dims[], const size_t dims[],
const size_t strides[], const size_t strides[],
const bool is ptr,
swig_type_inf o *tinfo, swig_type_inf o *tinfo,
const int tfl ags) const int tfl ags)
{ {
PyObject* nparr = NULL; PyObject* nparr = NULL;
npy_intp objdims[ndims]; npy_intp objdims[ndims];
npy_intp idx[ndims]; npy_intp idx[ndims];
// Check that C array is non-NULL. // Check that C array is non-NULL.
if (ptr == NULL) { if (ptr == NULL) {
goto fail; goto fail;
skipping to change at line 762 skipping to change at line 752
// Output view conversion fragment for arrays of type ACFTYPE. // Output view conversion fragment for arrays of type ACFTYPE.
%fragment(%swiglal_array_viewout_frag(ACFTYPE), "header", %fragment(%swiglal_array_viewout_frag(ACFTYPE), "header",
fragment="swiglal_py_array_helpers", fragment=VIEWFRAG, fragmen t=OUTFRAG) fragment="swiglal_py_array_helpers", fragment=VIEWFRAG, fragmen t=OUTFRAG)
{ {
SWIGINTERN PyObject* %swiglal_array_viewout_func(ACFTYPE)(PyObject* par ent, SWIGINTERN PyObject* %swiglal_array_viewout_func(ACFTYPE)(PyObject* par ent,
void* ptr, void* ptr,
const size_t esize, const size_t esize,
const size_t ndims, const size_t ndims,
const size_t dims[], const size_t dims[],
const size_t strides[], const size_t strides[],
const bool is ptr,
swig_type_inf o *tinfo, swig_type_inf o *tinfo,
const int tfl ags) const int tfl ags)
{ {
PyObject* nparr = NULL; PyObject* nparr = NULL;
npy_intp objdims[ndims]; npy_intp objdims[ndims];
npy_intp objstrides[ndims]; npy_intp objstrides[ndims];
// Check that C array is non-NULL.
if (ptr == NULL) {
goto fail;
}
// Copy C array dimensions and strides. // Copy C array dimensions and strides.
for (int i = 0; i < ndims; ++i) { for (int i = 0; i < ndims; ++i) {
objdims[i] = dims[i]; objdims[i] = dims[i];
objstrides[i] = strides[i] * esize; objstrides[i] = strides[i] * esize;
} }
// Create a new NumPy array view. // Create a new NumPy array view.
PyArray_Descr* descr = NPYDESCR; PyArray_Descr* descr = NPYDESCR;
if (descr == NULL) { if (descr == NULL) {
goto fail; goto fail;
skipping to change at line 814 skipping to change at line 800
} }
%enddef // %swiglal_py_array_frags %enddef // %swiglal_py_array_frags
// Macro which generates array conversion function fragments to/from Python // Macro which generates array conversion function fragments to/from Python
// arrays for object arrays, which require additional code for views. // arrays for object arrays, which require additional code for views.
%define %swiglal_py_array_objview_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, O UTCALL) %define %swiglal_py_array_objview_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, O UTCALL)
%swiglal_py_array_objview(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL); %swiglal_py_array_objview(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL);
%swiglal_py_array_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL, %swiglal_py_array_frags(ACFTYPE, INFRAG, OUTFRAG, INCALL, OUTCALL,
%swiglal_py_array_objview_frag(ACFTYPE), %swiglal_py_array_objview_frag(ACFTYPE),
NPY_OBJECT, %arg(swiglal_py_array_objview_##ACFTYPE ##_descr(tinfo, esize))); NPY_OBJECT, %arg(swiglal_py_array_objview_##ACFTYPE ##_descr(isptr, tinfo, esize)));
%enddef %enddef
// Array conversion fragments for generic arrays, e.g. SWIG-wrapped types. // Array conversion fragments for generic arrays, e.g. SWIG-wrapped types.
%swiglal_py_array_objview_frags(SWIGTYPE, "swiglal_as_SWIGTYPE", "swiglal_f rom_SWIGTYPE", %swiglal_py_array_objview_frags(SWIGTYPE, "swiglal_as_SWIGTYPE", "swiglal_f rom_SWIGTYPE",
%arg(swiglal_as_SWIGTYPE(parent, objelem, e %arg(swiglal_as_SWIGTYPE(parent, objelem, e
lemptr, esize, tinfo, tflags)), lemptr, esize, isptr, tinfo, tflags)),
%arg(swiglal_from_SWIGTYPE(parent, elemptr, %arg(swiglal_from_SWIGTYPE(parent, elemptr,
tinfo, tflags))); isptr, tinfo, tflags)));
// Array conversion fragments for arrays of LAL strings. // Array conversion fragments for arrays of LAL strings.
%swiglal_py_array_objview_frags(LALCHAR, "SWIG_AsNewLALCHARPtr", "SWIG_From %swiglal_py_array_objview_frags(LALchar, "SWIG_AsNewLALcharPtr", "SWIG_From
LALCHARPtr", LALcharPtr",
%arg(SWIG_AsNewLALCHARPtr(objelem, %reinter %arg(SWIG_AsNewLALcharPtr(objelem, %reinter
pret_cast(elemptr, CHAR**))), pret_cast(elemptr, char**))),
%arg(SWIG_FromLALCHARPtr(*%reinterpret_cast %arg(SWIG_FromLALcharPtr(*%reinterpret_cast
(elemptr, CHAR**)))); (elemptr, char**))));
// Macro which generates array conversion function fragments to/from Python // Macro which generates array conversion function fragments to/from Python
// arrays for real/fragment TYPEs which use SWIG_AsVal/From fragments. // arrays for real/fragment TYPEs which use SWIG_AsVal/From fragments.
%define %swiglal_py_array_asvalfrom_frags(TYPE, NPYTYPE) %define %swiglal_py_array_asvalfrom_frags(TYPE, NPYTYPE)
%swiglal_py_array_frags(TYPE, SWIG_AsVal_frag(TYPE), SWIG_From_frag(TYPE), %swiglal_py_array_frags(TYPE, SWIG_AsVal_frag(TYPE), SWIG_From_frag(TYPE),
%arg(SWIG_AsVal(TYPE)(objelem, %reinterpret_cast(el emptr, TYPE*))), %arg(SWIG_AsVal(TYPE)(objelem, %reinterpret_cast(el emptr, TYPE*))),
%arg(SWIG_From(TYPE)(*%reinterpret_cast(elemptr, TY PE*))), %arg(SWIG_From(TYPE)(*%reinterpret_cast(elemptr, TY PE*))),
"swiglal_empty_frag", NPYTYPE, PyArray_DescrFromTyp e(NPYTYPE)); "swiglal_empty_frag", NPYTYPE, PyArray_DescrFromTyp e(NPYTYPE));
%enddef %enddef
 End of changes. 21 change blocks. 
60 lines changed or deleted 45 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/