[Nexus] Problems with NXgetnextentry

Simmonds Paul simmonds at ill.fr
Tue May 27 15:51:37 BST 2003


Hi all,

At the moment I am in the process of creating a Python wrapper for the
NeXus C API using the Python native C API. If anyone is interested, I
can post more details about it, but at the moment I'm just trying to
print all the attributes and subgroups of a group in the hierarchy. The
problem occurs in the getnextentry call. The 'class' pointer argument
after the call still contains a NULL pointer. As far as I understand
the NeXus API routine spec, this should contain either the string "SDS"
for a data set, or the group's class for any other type. Have I
misunderstood, or missing something else?

I've included the offending code below, with some extra comments for
people unfamiliar with the Python C API. To be able to compile this
code,
the Python interpreter (there should not be version-specific code
present)
and the NeXus API.

Thanks in advance,
Paul Simmonds

<------Code Listing (+extra comments)------->
#include "Python.h"
#include "napi.h"
/* Macro extracting NXhandle from object */
#define HND(x) *(NXhandle*)PyCObject_AsVoidPtr(x)

PyObject *NXPyfile_getnextentry(PyObject *self, PyObject *args)
{
    PyObject *NXfile;  /* Python Object (a PyCObject) containing the
NXhandle */
    char *name,*class; /* DO THESE NEED TO BE MALLOCED? */
    int *type=malloc(sizeof(int));

    /* Parses 'args' object into components */
    if(!PyArg_ParseTuple(args,"O",&NXfile)) return NULL;

    if (NXgetnextentry(HND(NXfile),name,class,type)!=NX_OK)
    {   PyErr_SetString(PyExc_IOError,           /* sets an error if
call fails */
                "NXPygetnextentry: NXgetnextentry failed");
        return NULL;}

    /* Debug statement- prints e.g."name:Entry1 class:(null)
type:1965"*/
    printf("name:%s class:%s type:%d\n",name,class,*type);

    /* Builds values into return object */
    return Py_BuildValue("ssi",name,class,*type); /*
returns('Entry1',None,1965) */
}
<------End of Code Listing------->





More information about the NeXus mailing list