<?xml version="1.0"?>
<def format="2">
  <!-- Ruby C API. see https://docs.ruby-lang.org/en/2.5.0/extension_rdoc.html -->
  <!-- void rb_define_const(VALUE klass, const char *name, VALUE val)  -->
  <function name="rb_define_const">
    <leak-ignore/>
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-null/>
      <strz/>
    </arg>
    <arg nr="3">
      <not-uninit/>
    </arg>
  </function>
  <!-- void rb_define_method(VALUE klass, const char *name, VALUE (*func)(ANYARGS), int argc) -->
  <function name="rb_define_method">
    <leak-ignore/>
    <noreturn>false</noreturn>
    <returnValue type="void"/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-null/>
      <strz/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="rb_intern">
    <leak-ignore/>
    <noreturn>false</noreturn>
    <returnValue type="ID"/>
    <arg nr="1">
      <not-uninit/>
    </arg>
  </function>
  <function name="rb_str_new2">
    <leak-ignore/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
  </function>
  <!-- void rb_raise(rb_eRuntimeError, const char *fmt, …)  -->
  <function name="rb_raise">
    <leak-ignore/>
    <noreturn>true</noreturn>
    <returnValue type="void"/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <formatstr/>
      <not-null/>
    </arg>
    <arg nr="any">
      <not-uninit/>
    </arg>
  </function>
  <podtype name="ID"/>
</def>