hi,

i posted this to the forum, but it looks like the email list gets much more traffic, so here goes.

i am attempting to reproduce a portion of the example on using ctypes from the current version of the numpy book (the example can be found on pps 313-16). 
 
here is what i am trying to do: 
 
import numpy 
import interface 
 
x = numpy.array(range(1,1)) 
y = numpy.ones_like(x) 
z = interface.add(a,b) 
 
prints the following error: 
BEGIN ERROR>> 
26 b = N.require(b, dtype, requires) 
27 c = N.empty_like(a) 
---> 28 func(a,b,c,a.size) 
29 return c 
30 
 
ArgumentError: argument 1: exceptions.TypeError: Don't know how to convert parameter 1 
<<END ERROR 
 
In case it matters, here are the relevant bits of code I am using (since I have not just copied the entire text from the example): 
 
BEGIN testAddInt.c >> 
/* Add arrays of contiguous data */ 
typedef struct {double real;} cdouble; 
typedef struct {float real;} cfloat; 
 
void dadd(double *a, double *b, double *c, long n) 

while (n--) { 
*c++ = *a++ + *b++; 


void sadd(float *a, float *b, float *c, long n) 

while (n--) { 
*c++ = *a++ + *b++; 


 
<<END testAddInt.c 
 
and the interface code: 
BEGIN interface.py>> 
 
__all__ = ['add'] 
 
import numpy as N 
from ctypes import * 
import os 
 
_path = os.path.dirname('__file__') 
 
lib = N.ctypeslib.ctypes_load_library('testAddInt', _path) 
 
for name in ['sadd','dadd']: 
getattr(lib,name).restype=None 
 
def select(dtype): 
if dtype.char in['?bBhHf']: 
return lib.sadd, single 
else: 
return lib.dadd, float 
return func, ntype 
 
def add(a,b): 
requires = ['CONTIGUOUS','ALIGNED'] 
a = N.asanyarray(a) 
func, dtype = select(a.dtype) 
a = N.require(a, dtype, requires) 
b = N.require(b, dtype, requires) 
c = N.empty_like(a) 
func(a,b,c,a.size) 
return c 
<<END interface.py 
 
any hints/clues/suggestions as to what i am doing wrong here? since i am so new at this, i am assuming there is a simple mistake in what i am doing, but i cannot find it! thanks so much, 
 
bryan