Sha256: a74225347d759bf3069fc41fe2ce958d30a431c33f9f6e77deecc06341af4389

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

#ifndef ruby_internal_method__h_
#define ruby_internal_method__h_

#include <ruby.h>

#ifdef RUBY_VM
#include "method.h"
#endif

#include "internal/node/ruby_internal_node.h"

#ifndef FALSE
#define FALSE 0
#endif

#ifndef TRUE
#define TRUE (!FALSE)
#endif

#ruby <<END
  $: << '../..'
  require 'ruby_source_dir'
  proc_c_location = "#{RUBY_SOURCE_DIR}/proc.c"
  eval_c_location = "#{RUBY_SOURCE_DIR}/eval.c"

  oclass_member = "klass"
  rclass_member = "klass"

  [ proc_c_location, eval_c_location ].each do |file|
    next if not File.exist?(file)

    File.open(file) do |eval_c|
      write = false
      stopwrite = false
      prev_line = nil
      while (line = eval_c.gets) != nil do
        case line
        when /^struct (METHOD)/
          write = true
          stopwrite = false
        when /^\}/
          stopwrite = true
        when /VALUE oclass/
          oclass_member = "oclass"
        when /VALUE oklass/
          oklass_member = "oklass"
        when /VALUE (klass, )?rclass/
          rclass_member = "rclass"
        when /VALUE (klass, )?rklass/
          rclass_member = "rklass"
        end
        puts line if write
        if write and stopwrite then
          stopwrite = false
          write = false
          puts ''
        end
        prev_line = line
      end
    end
  end

  puts <<-END
#define METHOD_OCLASS(m) m->#{oclass_member}
#define METHOD_RCLASS(m) m->#{rclass_member}
  END

  nil
END

#endif

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ruby-internal-0.8.5 ext/internal/method/internal_method.h.rpp
ruby-internal-0.8.4 ext/internal/method/internal_method.h.rpp
ruby-internal-0.8.3 ext/internal/method/internal_method.h.rpp
ruby-internal-0.8.2 ext/internal/method/internal_method.h.rpp
ruby-internal-0.8.1 ext/internal/method/internal_method.h.rpp
ruby-internal-0.8.0 ext/internal/method/internal_method.h.rpp