PLearn 0.1
Static Public Member Functions
PLearn::ConvertToPyObject< Mat > Struct Template Reference

PLearn Mat: use numarray. More...

#include <PythonObjectWrapper.h>

List of all members.

Static Public Member Functions

static PyObject * newPyObject (const Mat &)

Detailed Description

template<>
struct PLearn::ConvertToPyObject< Mat >

PLearn Mat: use numarray.

Definition at line 624 of file PythonObjectWrapper.h.


Member Function Documentation

PyObject * PLearn::ConvertToPyObject< Mat >::newPyObject ( const Mat data) [static]

Definition at line 834 of file PythonObjectWrapper.cc.

References PLearn::TMat< T >::copy(), PLearn::TMat< T >::data(), PLearn::TMat< T >::isEmpty(), PLearn::TMat< T >::isNull(), PLearn::TMat< T >::length(), PLearn::TMat< T >::mod(), tReal, and PLearn::TMat< T >::width().

{
    PyArrayObject* pyarr = 0;
    if (data.isNull() || data.isEmpty())
        pyarr = NA_NewArray(NULL, tReal, 2, data.length(), data.width());
    else if (data.mod() == data.width())
        pyarr = NA_NewArray(data.data(), tReal, 2, data.length(),
                            data.width());
    else {
        // static PyObject* NA_NewAll( int ndim, maybelong *shape, NumarrayType
        // type, void *buffer, maybelong byteoffset, maybelong bytestride, int
        // byteorder, int aligned, int writable)
        //
        // numarray from C data buffer. The new array has type type, ndim
        // dimensions, and the length of each dimensions must be given in
        // shape[ndim]. byteoffset, bytestride specify the data-positions in
        // the C array to use. byteorder and aligned specify the corresponding
        // parameters. byteorder takes one of the values NUM_BIG_ENDIAN or
        // NUM_LITTLE_ENDIAN. writable defines whether the buffer object
        // associated with the resuling array is readonly or writable. Data is
        // copied from buffer into the memory object of the new array.

        // maybelong shape[2];
        // shape[0] = data.length();
        // shape[1] = data.width();
        // pyarr = NA_NewAll(2, shape, tReal, data.data(), 0,
        //                   data.mod()*sizeof(real), NA_ByteOrder(), 1, 1);

        // NOTE (NC) -- I could not get the above function to work; for now,
        // simply copy the matrix to new storage before converting to Python.
        Mat new_data = data.copy();
        pyarr = NA_NewArray(new_data.data(), tReal, 2,
                            new_data.length(), new_data.width());
    }

    return (PyObject*)pyarr;
}

Here is the call graph for this function:


The documentation for this struct was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines