Revision 03fb8d4ce6bb2f08ee21b1daf035f2c102a983fe authored by Bryna Hazelton on 25 September 2020, 16:38:52 UTC, committed by Bryna Hazelton on 06 October 2020, 00:23:06 UTC
None of the updates seem important to pyuvdata, but we should have the most recent version.
1 parent d64a6b0
miriad_wrap.h
#ifndef _MIRIAD_WRAP_H_
#define _MIRIAD_WRAP_H_
#include "miriad.h"
#include "hio.h"
#include "io.h"
#include "maxdimc.h"
// Some miriad macros...
#define PREAMBLE_SIZE 5
//AAR: (use the other Miriad BL convention to accommodate more baselines)
#define GETI(bl) ( (int) (bl) > 65536 ? (((int) bl-65536)/2048 - 1) : (((int) bl >> 8) - 1) )
#define GETJ(bl) ( (int) (bl) > 65536 ? (((int) bl-65536)%2048 - 1 ) : (((int) bl & 255) - 1) )
#define MKBL(i,j) ( i+1 < 256 && j+1 < 256 ? ((float) (((i+1)<<8) | (j+1))) : ((float) (((i+1)*2048) + (j+1+65536))))
#define CHK_IO(i) \
if (i != 0) { \
PyErr_Format(PyExc_IOError, "IO failed"); \
return NULL; }
// Some numpy macros...
#define QUOTE(a) # a
#define IND1(a,i,type) *((type *)((char *)PyArray_DATA(a) + i*PyArray_STRIDES(a)[0]))
#define IND2(a,i,j,type) *((type *)((char *)PyArray_DATA(a)+i*PyArray_STRIDES(a)[0]+j*PyArray_STRIDES(a)[1]))
#define TYPE(a) PyArray_DESCR(a)->type_num
#define CHK_ARRAY_TYPE(a,type) \
if (TYPE(a) != type) { \
PyErr_Format(PyExc_ValueError, "type(%s) != %s", \
QUOTE(a), QUOTE(type)); \
return NULL; }
#define DIM(a,i) PyArray_DIM(a, i)
#define RANK(a) PyArray_NDIM(a)
#define CHK_ARRAY_RANK(a,r) \
if (RANK(a) != r) { \
PyErr_Format(PyExc_ValueError, "rank(%s) != %s", \
QUOTE(a), QUOTE(r)); \
return NULL; }
#define CHK_NULL(a) \
if (a == NULL) { \
PyErr_Format(PyExc_MemoryError, "Failed to allocate %s", QUOTE(a)); \
return NULL; }
// Some python macros...
#define CHK_STRING(o) \
if (!PyString_Check(o)) { \
PyErr_Format(PyExc_ValueError, "expected a string"); \
return NULL; }
#define CHK_INT(o) \
if (!PyInt_Check(o) && !PyIndex_Check(o)) { \
PyErr_Format(PyExc_ValueError, "expected an int"); \
return NULL; }
#define CHK_LONG(o) \
if (!PyLong_Check(o) && !PyIndex_Check(o)) { \
PyErr_Format(PyExc_ValueError, "expected a long"); \
return NULL; }
#define CHK_FLOAT(o) \
if (!PyFloat_Check(o)) { \
PyErr_Format(PyExc_ValueError, "expected a float"); \
return NULL; }
#define CHK_COMPLEX(o) \
if (!PyComplex_Check(o)) { \
PyErr_Format(PyExc_ValueError, "expected a complex"); \
return NULL; }
// Define an error that we can have miriad throw to avoid exiting.
class MiriadError {
private:
std::string msg;
public:
MiriadError(const std::string &message) : msg (message) {}
const char* get_message() const { return msg.c_str(); }
};
extern PyTypeObject UVType;
#endif
Computing file changes ...