Here I am replying to my own post...
I looked at the rdoc C parser, it doesn't look like rdoc maintains its 
state between each .c file.  Is this what is going on?

Made a few corrections to my last post:

Hi,
I am trying to use rdoc to document a C extension.  The file structure 
of the extension is as follows:
	ext.h
	ext.c
	ext_class1.c
	ext_class2.c
	ext_class3.c
	...

where "EXT" is the module and "Class1", "Class2", etc are the classes 
defined under "EXT".
So the name space looks like:
EXT
EXT::Class1
EXT::Class2
EXT::Class3
...


'ext.h' contains a global variable:

extern VALUE mEXT;

which references the Ruby module EXT at runtime.

In 'ext_class1.c' (and friends) we have:

#include "ext.h"

/* ... */

void Init_EXT_Class1(void)
{
	rb_define_class_under(mEXT, "Class1", rb_cObject);
	/* define class methods ... */
}

In ext.c we have

#include "ext.h"

VALUE mEXT;

void Init_ext(void)
{
	mEXT = rb_define_module("EXT");
	Init_EXT_Class1();
	Init_EXT_Class2();
	Init_EXT_Class3();
	/* ... */
}

So the problem is when documenting 'ext_class1.c' and friends rdoc 
can't figure out what the variable 'mEXT' is (the module the classes 
are defined under) and fails to document Class1 and friends.

Any solutions?
Putting everything in one .c file is not an option. :)

-Charlie