summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordave <dave@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-04-18 23:15:30 +0000
committerdave <dave@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-04-18 23:15:30 +0000
commit84aba62199d5cc0a5323d6356fc75e13aaa31e10 (patch)
tree775435611f9bb808904a6fe2fce609816adeaab0 /lib
parent5946d5689b183f31c74a80ae0d058abe42ac72bb (diff)
Allow for HAVE_PROTOTYPES macro
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/rdoc/parsers/parse_c.rb16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/rdoc/parsers/parse_c.rb b/lib/rdoc/parsers/parse_c.rb
index 200519a784..2035934588 100644
--- a/lib/rdoc/parsers/parse_c.rb
+++ b/lib/rdoc/parsers/parse_c.rb
@@ -150,7 +150,7 @@ module RDoc
# prepare to parse a C file
def initialize(top_level, file_name, body, options, stats)
@known_classes = KNOWN_CLASSES.dup
- @body = body
+ @body = handle_ifdefs_in(body)
@options = options
@stats = stats
@top_level = top_level
@@ -272,6 +272,7 @@ module RDoc
############################################################
def do_methods
+
@body.scan(%r{rb_define_
(
singleton_method |
@@ -293,7 +294,7 @@ module RDoc
next if var_name == "nstr"
next if var_name == "envtbl"
next if var_name == "argf" # it'd be nice to handle this one
-
+
var_name = "rb_cObject" if var_name == "rb_mKernel"
handle_method(type, var_name, meth_name,
meth_body, param_count, source_file)
@@ -338,7 +339,6 @@ module RDoc
def handle_method(type, var_name, meth_name,
meth_body, param_count, source_file = nil)
-
@stats.num_methods += 1
class_name = @known_classes[var_name]
@@ -383,6 +383,7 @@ module RDoc
def find_body(meth_name, meth_obj, body)
if body =~ %r{((?>/\*.*?\*/\s*))(static\s+)?VALUE\s+#{meth_name}
\s*(\(.*?\)).*?^}xm
+
comment, params = $1, $3
body_text = $&
@@ -485,6 +486,13 @@ module RDoc
end
@classes[raw_name]
end
+
+ # Remove #ifdefs that would otherwise confuse us
+
+ def handle_ifdefs_in(body)
+ body.gsub(/^#ifdef HAVE_PROTOTYPES.*?#else.*?\n(.*?)#endif.*?\n/m) { $1 }
+ end
+
end
-
+
end