[Haskell-cafe] How to deal with pointers to pointers in the FFI

Jefferson Heard jefferson.r.heard at gmail.com
Fri Oct 17 15:12:49 EDT 2008

I have the following functions in C:

OGRErr 	OGR_G_CreateFromWkb (unsigned char *, OGRSpatialReferenceH,
OGRGeometryH *, int)
OGRErr 	OGR_G_CreateFromWkt (char **, OGRSpatialReferenceH, OGRGeometryH *)
void 	OGR_G_DestroyGeometry (OGRGeometryH)
OGRGeometryH 	OGR_G_CreateGeometry (OGRwkbGeometryType)

The normal sequence of calls is

OGRGeometryH handle = OGR_G_CreateGeometry(SOME_TYPE);
// do stuff


OGR_G_CreateFromWkb(blob, ref, &handle, 0);
// do stuff

As you can see, in one case, I have to pass in a pointer to the
returned handle, and not just the handle.  How can I accomplish this
feat using a single type?

I had

data OGRGeometryH
type Geometry = Ptr OGRGeometryH

but then can I declare that a function returns a

Ptr (Geometry)


I try to take things like a crow; war and chaos don't always ruin a
picnic, they just mean you have to be careful what you swallow.

-- Jessica Edwards

More information about the Haskell-Cafe mailing list