(define-cpp-type cl_ring static
  id: cl_ring*
  class: cl_ring
  cpp-type-dcl: "cl_ring %s"
  cast: "((cl_ring)(%s))"
  arg-type: "cl_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_ring *%s"
  res-converter: "new cl_ring (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_ring *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_ring* static
  id: cl_ring*
  class: cl_ring
  cpp-type-dcl: "cl_ring *%s"
  cast: "((cl_ring *)(%s))"
  callback-res-converter: "(cl_ring *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-data-slot-setter _cl_ring_element rep)
(define-cpp-type _cl_ring_element* static
  id: _cl_ring_element*
  class: _cl_ring_element
  cpp-type-dcl: "_cl_ring_element *%s"
  cast: "((_cl_ring_element *)(%s))"
  callback-res-converter: "(_cl_ring_element *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_element& static
  id: _cl_ring_element*
  class: _cl_ring_element
  cpp-type-dcl: "_cl_ring_element &%s"
  cast: "((_cl_ring_element &)(%s))"
  arg-type: "_cl_ring_element *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_element *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_element *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_element static
  id: _cl_ring_element*
  class: _cl_ring_element
  cpp-type-dcl: "_cl_ring_element %s"
  cast: "((_cl_ring_element)(%s))"
  arg-type: "_cl_ring_element *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_element *%s"
  res-converter: "new _cl_ring_element (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_element *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_heap_ring* static
  id: cl_heap_ring*
  class: cl_heap_ring
  cpp-type-dcl: "const cl_heap_ring *%s"
  cast: "((const cl_heap_ring *)(%s))"
  callback-res-converter: "(const cl_heap_ring *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_ring_element* static
  id: cl_ring_element*
  class: cl_ring_element
  cpp-type-dcl: "cl_ring_element *%s"
  cast: "((cl_ring_element *)(%s))"
  callback-res-converter: "(cl_ring_element *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_ring_element& static
  id: cl_ring_element*
  class: cl_ring_element
  cpp-type-dcl: "cl_ring_element &%s"
  cast: "((cl_ring_element &)(%s))"
  arg-type: "cl_ring_element *%s"
  arg-converter: "*(%s)"
  res-type: "cl_ring_element *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_ring_element *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_ring_element static
  id: cl_ring_element*
  class: cl_ring_element
  cpp-type-dcl: "cl_ring_element %s"
  cast: "((cl_ring_element)(%s))"
  arg-type: "cl_ring_element *%s"
  arg-converter: "*(%s)"
  res-type: "cl_ring_element *%s"
  res-converter: "new cl_ring_element (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_ring_element *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type const_cl_ring_element& static
  id: _cl_ring_element*
  class: _cl_ring_element
  cpp-type-dcl: "const _cl_ring_element &%s"
  cast: "((const _cl_ring_element &)(%s))"
  arg-type: "const _cl_ring_element *%s"
  arg-converter: "*(%s)"
  res-type: "const _cl_ring_element *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const _cl_ring_element *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-data-slot-setter _cl_ring_setops fprint)
(define-cpp-type |void(*)(cl_heap_ring*,ostream&,const_cl_ring_element&)| function-type
  signature: ((cl_heap_ring* ostream& const_cl_ring_element&) void)
  cpp-type-dcl: "void (*%s)(cl_heap_ring *, ostream &, const _cl_ring_element &)"
  id: |void(*)(cl_heap_ring**,ostream**,_cl_ring_element**)|)
(define-cpp-data-slot-setter _cl_ring_setops equal)
(define-cpp-type |cl_boolean(*)(cl_heap_ring*,const_cl_ring_element&,const_cl_ring_element&)|
 function-type
  signature: ((cl_heap_ring* const_cl_ring_element& const_cl_ring_element&)
              cl_boolean)
  cpp-type-dcl: "cl_boolean (*%s)(cl_heap_ring *, const _cl_ring_element &, const _cl_ring_element &)"
  id: |cl_boolean(*)(cl_heap_ring**,_cl_ring_element**,_cl_ring_element**)|)
(define-cpp-type _cl_ring_setops& static
  id: _cl_ring_setops*
  class: _cl_ring_setops
  cpp-type-dcl: "_cl_ring_setops &%s"
  cast: "((_cl_ring_setops &)(%s))"
  arg-type: "_cl_ring_setops *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_setops *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_setops *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_setops static
  id: _cl_ring_setops*
  class: _cl_ring_setops
  cpp-type-dcl: "_cl_ring_setops %s"
  cast: "((_cl_ring_setops)(%s))"
  arg-type: "_cl_ring_setops *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_setops *%s"
  res-converter: "new _cl_ring_setops (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_setops *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_setops* static
  id: _cl_ring_setops*
  class: _cl_ring_setops
  cpp-type-dcl: "_cl_ring_setops *%s"
  cast: "((_cl_ring_setops *)(%s))"
  callback-res-converter: "(_cl_ring_setops *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-data-slot-setter _cl_ring_addops zero)
(define-cpp-type |_cl_ring_element(*)(cl_heap_ring*)| function-type
  signature: ((cl_heap_ring*) _cl_ring_element)
  cpp-type-dcl: "_cl_ring_element (*%s)(cl_heap_ring *)"
  id: |_cl_ring_element*(*)(cl_heap_ring**)|)
(define-cpp-data-slot-setter _cl_ring_addops zerop)
(define-cpp-type |cl_boolean(*)(cl_heap_ring*,const_cl_ring_element&)| function-type
  signature: ((cl_heap_ring* const_cl_ring_element&) cl_boolean)
  cpp-type-dcl: "cl_boolean (*%s)(cl_heap_ring *, const _cl_ring_element &)"
  id: |cl_boolean(*)(cl_heap_ring**,_cl_ring_element**)|)
(define-cpp-data-slot-setter _cl_ring_addops plus)
(define-cpp-type |_cl_ring_element(*)(cl_heap_ring*,const_cl_ring_element&,const_cl_ring_element&)|
 function-type
  signature: ((cl_heap_ring* const_cl_ring_element& const_cl_ring_element&)
              _cl_ring_element)
  cpp-type-dcl: "_cl_ring_element (*%s)(cl_heap_ring *, const _cl_ring_element &, const _cl_ring_element &)"
  id: |_cl_ring_element*(*)(cl_heap_ring**,_cl_ring_element**,_cl_ring_element**)|)
(define-cpp-data-slot-setter _cl_ring_addops minus)
(define-cpp-data-slot-setter _cl_ring_addops uminus)
(define-cpp-type |_cl_ring_element(*)(cl_heap_ring*,const_cl_ring_element&)| function-type
  signature: ((cl_heap_ring* const_cl_ring_element&) _cl_ring_element)
  cpp-type-dcl: "_cl_ring_element (*%s)(cl_heap_ring *, const _cl_ring_element &)"
  id: |_cl_ring_element*(*)(cl_heap_ring**,_cl_ring_element**)|)
(define-cpp-type _cl_ring_addops& static
  id: _cl_ring_addops*
  class: _cl_ring_addops
  cpp-type-dcl: "_cl_ring_addops &%s"
  cast: "((_cl_ring_addops &)(%s))"
  arg-type: "_cl_ring_addops *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_addops *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_addops *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_addops static
  id: _cl_ring_addops*
  class: _cl_ring_addops
  cpp-type-dcl: "_cl_ring_addops %s"
  cast: "((_cl_ring_addops)(%s))"
  arg-type: "_cl_ring_addops *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_addops *%s"
  res-converter: "new _cl_ring_addops (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_addops *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_addops* static
  id: _cl_ring_addops*
  class: _cl_ring_addops
  cpp-type-dcl: "_cl_ring_addops *%s"
  cast: "((_cl_ring_addops *)(%s))"
  callback-res-converter: "(_cl_ring_addops *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-data-slot-setter _cl_ring_mulops one)
(define-cpp-data-slot-setter _cl_ring_mulops canonhom)
(define-cpp-type |_cl_ring_element(*)(cl_heap_ring*,const-cl_I&)| function-type
  signature: ((cl_heap_ring* const-cl_I&) _cl_ring_element)
  cpp-type-dcl: "_cl_ring_element (*%s)(cl_heap_ring *, const cl_I &)"
  id: |_cl_ring_element*(*)(cl_heap_ring**,cl_I**)|)
(define-cpp-data-slot-setter _cl_ring_mulops mul)
(define-cpp-data-slot-setter _cl_ring_mulops square)
(define-cpp-data-slot-setter _cl_ring_mulops expt_pos)
(define-cpp-type |_cl_ring_element(*)(cl_heap_ring*,const_cl_ring_element&,const-cl_I&)|
 function-type
  signature: ((cl_heap_ring* const_cl_ring_element& const-cl_I&)
              _cl_ring_element)
  cpp-type-dcl: "_cl_ring_element (*%s)(cl_heap_ring *, const _cl_ring_element &, const cl_I &)"
  id: |_cl_ring_element*(*)(cl_heap_ring**,_cl_ring_element**,cl_I**)|)
(define-cpp-type _cl_ring_mulops& static
  id: _cl_ring_mulops*
  class: _cl_ring_mulops
  cpp-type-dcl: "_cl_ring_mulops &%s"
  cast: "((_cl_ring_mulops &)(%s))"
  arg-type: "_cl_ring_mulops *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_mulops *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_mulops *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_mulops static
  id: _cl_ring_mulops*
  class: _cl_ring_mulops
  cpp-type-dcl: "_cl_ring_mulops %s"
  cast: "((_cl_ring_mulops)(%s))"
  arg-type: "_cl_ring_mulops *%s"
  arg-converter: "*(%s)"
  res-type: "_cl_ring_mulops *%s"
  res-converter: "new _cl_ring_mulops (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(_cl_ring_mulops *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type _cl_ring_mulops* static
  id: _cl_ring_mulops*
  class: _cl_ring_mulops
  cpp-type-dcl: "_cl_ring_mulops *%s"
  cast: "((_cl_ring_mulops *)(%s))"
  callback-res-converter: "(_cl_ring_mulops *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type const-cl_ring_element& static
  id: cl_ring_element*
  class: cl_ring_element
  cpp-type-dcl: "const cl_ring_element &%s"
  cast: "((const cl_ring_element &)(%s))"
  arg-type: "const cl_ring_element *%s"
  arg-converter: "*(%s)"
  res-type: "const cl_ring_element *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(const cl_ring_element *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_heap_ring& static
  id: cl_heap_ring*
  class: cl_heap_ring
  cpp-type-dcl: "cl_heap_ring &%s"
  cast: "((cl_heap_ring &)(%s))"
  arg-type: "cl_heap_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_heap_ring *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_heap_ring *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_heap_ring static
  id: cl_heap_ring*
  class: cl_heap_ring
  cpp-type-dcl: "cl_heap_ring %s"
  cast: "((cl_heap_ring)(%s))"
  arg-type: "cl_heap_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_heap_ring *%s"
  res-converter: "new cl_heap_ring (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_heap_ring *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-variable-setter cl_no_ring)
(define-cpp-type cl_null_ring& static
  id: cl_null_ring*
  class: cl_null_ring
  cpp-type-dcl: "cl_null_ring &%s"
  cast: "((cl_null_ring &)(%s))"
  arg-type: "cl_null_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_null_ring *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_null_ring *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_null_ring static
  id: cl_null_ring*
  class: cl_null_ring
  cpp-type-dcl: "cl_null_ring %s"
  cast: "((cl_null_ring)(%s))"
  arg-type: "cl_null_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_null_ring *%s"
  res-converter: "new cl_null_ring (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_null_ring *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_null_ring* static
  id: cl_null_ring*
  class: cl_null_ring
  cpp-type-dcl: "cl_null_ring *%s"
  cast: "((cl_null_ring *)(%s))"
  callback-res-converter: "(cl_null_ring *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-variable-setter cl_0_ring)
(define-cpp-type cl_heap_number_ring& static
  id: cl_heap_number_ring*
  class: cl_heap_number_ring
  cpp-type-dcl: "cl_heap_number_ring &%s"
  cast: "((cl_heap_number_ring &)(%s))"
  arg-type: "cl_heap_number_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_heap_number_ring *%s"
  res-converter: "&%s"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_heap_number_ring *)(%s)"
  c-callback-arg-type: "void *%s")
(define-cpp-type cl_heap_number_ring static
  id: cl_heap_number_ring*
  class: cl_heap_number_ring
  cpp-type-dcl: "cl_heap_number_ring %s"
  cast: "((cl_heap_number_ring)(%s))"
  arg-type: "cl_heap_number_ring *%s"
  arg-converter: "*(%s)"
  res-type: "cl_heap_number_ring *%s"
  res-converter: "new cl_heap_number_ring (%s)"
  callback-arg-converter: "&%s"
  callback-res-converter: "*(cl_heap_number_ring *)(%s)"
  c-callback-arg-converter: none
  c-callback-res-converter: none
  c-callback-arg-type: "void *%s")
