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 ".. | Also note that comment-signs '<tt>\#\%</tt>' within double-quotes "... | |||
." | " | |||
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 { | ||||
$<ype temp = %reinterpret_cast(argp, $<ype); | ||||
$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 | |||