(define-cpp-type cl_boolean enum
  cpp-arg-type: "((cl_boolean)(%s))"
  id: cl_boolean)
(define-cpp-type cl_uint unsigned-long
  cpp-type-dcl: "cl_uint %s"
  cpp-arg-type: "((cl_uint)(%s))"
  cast: "((cl_uint)(%s))")
(define-cpp-type cl_sint long
  cpp-type-dcl: "cl_sint %s"
  cpp-arg-type: "((cl_sint)(%s))"
  cast: "((cl_sint)(%s))")
(define-cpp-data-slot-setter cl_heap refcount)
(define-cpp-data-slot-setter cl_heap typetag)
(define-cpp-type cl_heap& static
  id: cl_heap*
  class: cl_heap
  cpp-type-dcl: "cl_heap &%s"
  cast: "((cl_heap &)(%s))"
  arg-type: "cl_heap *%s"
  arg-converter: "*(%s)"
  res-type: "cl_heap *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_heap *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_heap static
  id: cl_heap*
  class: cl_heap
  cpp-type-dcl: "cl_heap %s"
  cast: "((cl_heap)(%s))"
  arg-type: "cl_heap *%s"
  arg-converter: "*(%s)"
  res-type: "cl_heap *%s"
  res-converter: "new cl_heap (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_heap *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_heap* static
  id: cl_heap*
  class: cl_heap
  cpp-type-dcl: "cl_heap *%s"
  cast: "((cl_heap *)(%s))"
  callback-res-converter: "(cl_heap *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_heap_destructor_function function-type
  signature: ((cl_heap*) void)
  cpp-type-dcl: "cl_heap_destructor_function %s"
  id: cl_heap_destructor_function)
(define-cpp-type cl_heap_dprint_function function-type
  signature: ((cl_heap*) void)
  cpp-type-dcl: "cl_heap_dprint_function %s"
  id: cl_heap_dprint_function)
(define-cpp-type const-cl_gcobject& static
  id: cl_gcobject*
  class: cl_gcobject
  cpp-type-dcl: "const cl_gcobject &%s"
  cast: "((const cl_gcobject &)(%s))"
  arg-type: "const cl_gcobject *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_gcobject *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_gcobject *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_gcobject& static
  id: cl_gcobject*
  class: cl_gcobject
  cpp-type-dcl: "cl_gcobject &%s"
  cast: "((cl_gcobject &)(%s))"
  arg-type: "cl_gcobject *%s"
  arg-converter: "*(%s)"
  res-type: "cl_gcobject *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_gcobject *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type size_t unsigned
  cpp-type-dcl: "size_t %s"
  cpp-arg-type: "((size_t)(%s))"
  cast: "((size_t)(%s))")
(define-cpp-type cl_gcobject* static
  id: cl_gcobject*
  class: cl_gcobject
  cpp-type-dcl: "cl_gcobject *%s"
  cast: "((cl_gcobject *)(%s))"
  callback-res-converter: "(cl_gcobject *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_gcobject static
  id: cl_gcobject*
  class: cl_gcobject
  cpp-type-dcl: "cl_gcobject %s"
  cast: "((cl_gcobject)(%s))"
  arg-type: "cl_gcobject *%s"
  arg-converter: "*(%s)"
  res-type: "cl_gcobject *%s"
  res-converter: "new cl_gcobject (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_gcobject *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_gcpointer& static
  id: cl_gcpointer*
  class: cl_gcpointer
  cpp-type-dcl: "const cl_gcpointer &%s"
  cast: "((const cl_gcpointer &)(%s))"
  arg-type: "const cl_gcpointer *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_gcpointer *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_gcpointer *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_gcpointer& static
  id: cl_gcpointer*
  class: cl_gcpointer
  cpp-type-dcl: "cl_gcpointer &%s"
  cast: "((cl_gcpointer &)(%s))"
  arg-type: "cl_gcpointer *%s"
  arg-converter: "*(%s)"
  res-type: "cl_gcpointer *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_gcpointer *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_gcpointer* static
  id: cl_gcpointer*
  class: cl_gcpointer
  cpp-type-dcl: "cl_gcpointer *%s"
  cast: "((cl_gcpointer *)(%s))"
  callback-res-converter: "(cl_gcpointer *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_gcpointer static
  id: cl_gcpointer*
  class: cl_gcpointer
  cpp-type-dcl: "cl_gcpointer %s"
  cast: "((cl_gcpointer)(%s))"
  arg-type: "cl_gcpointer *%s"
  arg-converter: "*(%s)"
  res-type: "cl_gcpointer *%s"
  res-converter: "new cl_gcpointer (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_gcpointer *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_rcobject& static
  id: cl_rcobject*
  class: cl_rcobject
  cpp-type-dcl: "const cl_rcobject &%s"
  cast: "((const cl_rcobject &)(%s))"
  arg-type: "const cl_rcobject *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_rcobject *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_rcobject *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_rcobject& static
  id: cl_rcobject*
  class: cl_rcobject
  cpp-type-dcl: "cl_rcobject &%s"
  cast: "((cl_rcobject &)(%s))"
  arg-type: "cl_rcobject *%s"
  arg-converter: "*(%s)"
  res-type: "cl_rcobject *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_rcobject *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_rcobject* static
  id: cl_rcobject*
  class: cl_rcobject
  cpp-type-dcl: "cl_rcobject *%s"
  cast: "((cl_rcobject *)(%s))"
  callback-res-converter: "(cl_rcobject *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_rcobject static
  id: cl_rcobject*
  class: cl_rcobject
  cpp-type-dcl: "cl_rcobject %s"
  cast: "((cl_rcobject)(%s))"
  arg-type: "cl_rcobject *%s"
  arg-converter: "*(%s)"
  res-type: "cl_rcobject *%s"
  res-converter: "new cl_rcobject (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_rcobject *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_rcpointer& static
  id: cl_rcpointer*
  class: cl_rcpointer
  cpp-type-dcl: "const cl_rcpointer &%s"
  cast: "((const cl_rcpointer &)(%s))"
  arg-type: "const cl_rcpointer *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_rcpointer *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_rcpointer *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_rcpointer& static
  id: cl_rcpointer*
  class: cl_rcpointer
  cpp-type-dcl: "cl_rcpointer &%s"
  cast: "((cl_rcpointer &)(%s))"
  arg-type: "cl_rcpointer *%s"
  arg-converter: "*(%s)"
  res-type: "cl_rcpointer *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_rcpointer *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_rcpointer* static
  id: cl_rcpointer*
  class: cl_rcpointer
  cpp-type-dcl: "cl_rcpointer *%s"
  cast: "((cl_rcpointer *)(%s))"
  callback-res-converter: "(cl_rcpointer *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_rcpointer static
  id: cl_rcpointer*
  class: cl_rcpointer
  cpp-type-dcl: "cl_rcpointer %s"
  cast: "((cl_rcpointer)(%s))"
  arg-type: "cl_rcpointer *%s"
  arg-converter: "*(%s)"
  res-type: "cl_rcpointer *%s"
  res-converter: "new cl_rcpointer (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_rcpointer *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-variable-setter cl_malloc_hook)
(define-cpp-type |void*(*)(size_t)| function-type
  signature: ((size_t) void*)
  cpp-type-dcl: "void *(*%s)(size_t)"
  id: |void*(*)(size_t)|)
(define-cpp-variable-setter cl_free_hook)
(define-cpp-type |void(*)(void*)| function-type
  signature: ((void*) void)
  cpp-type-dcl: "void (*%s)(void *)"
  id: |void(*)(void*)|)
(define-cpp-type const-cl_number& static
  id: cl_number*
  class: cl_number
  cpp-type-dcl: "const cl_number &%s"
  cast: "((const cl_number &)(%s))"
  arg-type: "const cl_number *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_number *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_number *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_number& static
  id: cl_number*
  class: cl_number
  cpp-type-dcl: "cl_number &%s"
  cast: "((cl_number &)(%s))"
  arg-type: "cl_number *%s"
  arg-converter: "*(%s)"
  res-type: "cl_number *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_number *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_N& static
  id: cl_N*
  class: cl_N
  cpp-type-dcl: "const cl_N &%s"
  cast: "((const cl_N &)(%s))"
  arg-type: "const cl_N *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_N *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_N *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_R& static
  id: cl_R*
  class: cl_R
  cpp-type-dcl: "const cl_R &%s"
  cast: "((const cl_R &)(%s))"
  arg-type: "const cl_R *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_R *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_R *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_F& static
  id: cl_F*
  class: cl_F
  cpp-type-dcl: "const cl_F &%s"
  cast: "((const cl_F &)(%s))"
  arg-type: "const cl_F *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_F *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_F *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_SF& static
  id: cl_SF*
  class: cl_SF
  cpp-type-dcl: "const cl_SF &%s"
  cast: "((const cl_SF &)(%s))"
  arg-type: "const cl_SF *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_SF *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_SF *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_FF& static
  id: cl_FF*
  class: cl_FF
  cpp-type-dcl: "const cl_FF &%s"
  cast: "((const cl_FF &)(%s))"
  arg-type: "const cl_FF *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_FF *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_FF *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_DF& static
  id: cl_DF*
  class: cl_DF
  cpp-type-dcl: "const cl_DF &%s"
  cast: "((const cl_DF &)(%s))"
  arg-type: "const cl_DF *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_DF *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_DF *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_LF& static
  id: cl_LF*
  class: cl_LF
  cpp-type-dcl: "const cl_LF &%s"
  cast: "((const cl_LF &)(%s))"
  arg-type: "const cl_LF *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_LF *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_LF *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_RA& static
  id: cl_RA*
  class: cl_RA
  cpp-type-dcl: "const cl_RA &%s"
  cast: "((const cl_RA &)(%s))"
  arg-type: "const cl_RA *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_RA *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_RA *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_I& static
  id: cl_I*
  class: cl_I
  cpp-type-dcl: "const cl_I &%s"
  cast: "((const cl_I &)(%s))"
  arg-type: "const cl_I *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_I *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_I *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_number static
  id: cl_number*
  class: cl_number
  cpp-type-dcl: "cl_number %s"
  cast: "((cl_number)(%s))"
  arg-type: "cl_number *%s"
  arg-converter: "*(%s)"
  res-type: "cl_number *%s"
  res-converter: "new cl_number (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_number *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_number* static
  id: cl_number*
  class: cl_number
  cpp-type-dcl: "cl_number *%s"
  cast: "((cl_number *)(%s))"
  callback-res-converter: "(cl_number *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_N& static
  id: cl_N*
  class: cl_N
  cpp-type-dcl: "cl_N &%s"
  cast: "((cl_N &)(%s))"
  arg-type: "cl_N *%s"
  arg-converter: "*(%s)"
  res-type: "cl_N *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_N *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_N* static
  id: cl_N*
  class: cl_N
  cpp-type-dcl: "cl_N *%s"
  cast: "((cl_N *)(%s))"
  callback-res-converter: "(cl_N *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_N static
  id: cl_N*
  class: cl_N
  cpp-type-dcl: "cl_N %s"
  cast: "((cl_N)(%s))"
  arg-type: "cl_N *%s"
  arg-converter: "*(%s)"
  res-type: "cl_N *%s"
  res-converter: "new cl_N (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_N *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_R& static
  id: cl_R*
  class: cl_R
  cpp-type-dcl: "cl_R &%s"
  cast: "((cl_R &)(%s))"
  arg-type: "cl_R *%s"
  arg-converter: "*(%s)"
  res-type: "cl_R *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_R *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_R* static
  id: cl_R*
  class: cl_R
  cpp-type-dcl: "cl_R *%s"
  cast: "((cl_R *)(%s))"
  callback-res-converter: "(cl_R *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_R static
  id: cl_R*
  class: cl_R
  cpp-type-dcl: "cl_R %s"
  cast: "((cl_R)(%s))"
  arg-type: "cl_R *%s"
  arg-converter: "*(%s)"
  res-type: "cl_R *%s"
  res-converter: "new cl_R (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_R *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
