SV* perl_ncar_callback;

static void default_magic( pdl *p, int pa ) { p->data = 0; }


SV* pointer2piddle(
    void* data,
    int ndims,
    PDL_Long dims[],
    int datatype
) { /* 
        Inspired from PDL::API manpage 
        Creates a mortal piddle from scratch
    */

  pdl* npdl;
  SV* sv_npdl;
  
  npdl = PDL->pdlnew();

  PDL->setdims( npdl, dims, ndims );

  npdl->datatype = datatype;
  npdl->data = data;
  
  npdl->state |= PDL_DONTTOUCHDATA | PDL_ALLOCATED ;
  
  PDL->add_deletedata_magic( npdl, default_magic, 0 );

  sv_npdl = sv_newmortal();
  PDL->SetSV_PDL( sv_npdl, npdl );

  return sv_npdl;
}
  
#include "c_ncar_callbacks/LPR.c"