А это случаем не обычный процедурный тип?
То есть, может так:
## Код:
```
TYPE
      cairo_t = INTEGER;
      cairo_user_data_key_t = RECORD END;
      (* void * cairo_get_user_data (cairo_t *cr, const cairo_user_data_key_t *key); *)
      cairo_get_user_data = PROCEDURE (cr : cairo_t; IN key : cairo_user_data_key_t);
```

И зачем [ccall]? Предполагается работать с DLL?