Jim Fulton's change to support doc strings
diff --git a/Tools/modulator/Templates/module_method b/Tools/modulator/Templates/module_method
index 53cc1ac..9e6c0d2 100644
--- a/Tools/modulator/Templates/module_method
+++ b/Tools/modulator/Templates/module_method
@@ -1,4 +1,8 @@
 
+static char $abbrev$_$method$__doc__[] =
+""
+;
+
 static PyObject *
 $abbrev$_$method$(self, args)
 	PyObject *self;	/* Not used */
diff --git a/Tools/modulator/Templates/module_tail b/Tools/modulator/Templates/module_tail
index 8af75db..6ee7645 100644
--- a/Tools/modulator/Templates/module_tail
+++ b/Tools/modulator/Templates/module_tail
@@ -9,13 +9,19 @@
 
 /* Initialization function for the module (*must* be called init$name$) */
 
+static char $name$_module_documentation[] = 
+""
+;
+
 void
 init$name$()
 {
 	PyObject *m, *d;
 
 	/* Create the module and add the functions */
-	m = Py_InitModule("$name$", $abbrev$_methods);
+	m = Py_InitModule4("$name$", $abbrev$_methods,
+		$name$_module_documentation,
+		(PyObject*)NULL,PYTHON_API_VERSION);
 
 	/* Add some symbolic constants to the module */
 	d = PyModule_GetDict(m);
diff --git a/Tools/modulator/Templates/object_method b/Tools/modulator/Templates/object_method
index 7ff5cea..9541494 100644
--- a/Tools/modulator/Templates/object_method
+++ b/Tools/modulator/Templates/object_method
@@ -1,4 +1,8 @@
 
+static char $abbrev$_$method$__doc__[] = 
+""
+;
+
 static PyObject *
 $abbrev$_$method$(self, args)
 	$abbrev$object *self;
diff --git a/Tools/modulator/Templates/object_tail b/Tools/modulator/Templates/object_tail
index 4803ea5..65d29d3 100644
--- a/Tools/modulator/Templates/object_tail
+++ b/Tools/modulator/Templates/object_tail
@@ -1,4 +1,8 @@
 
+static char $Abbrev$type__doc__[] = 
+""
+;
+
 static PyTypeObject $Abbrev$type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,				/*ob_size*/
@@ -16,6 +20,12 @@
 	$tp_as_sequence$,		/*tp_as_sequence*/
 	$tp_as_mapping$,		/*tp_as_mapping*/
 	(hashfunc)$tp_hash$,		/*tp_hash*/
+	(binaryfunc)$tp_call$,		/*tp_call*/
+	(reprfunc)$tp_str$,		/*tp_str*/
+
+	/* Space for future expansion */
+	0L,0L,0L,0L,
+	$Abbrev$type__doc__ /* Documentation string */
 };
 
 /* End of code for $name$ objects */
diff --git a/Tools/modulator/genmodule.py b/Tools/modulator/genmodule.py
index 1c4cd1f..bdfe350 100755
--- a/Tools/modulator/genmodule.py
+++ b/Tools/modulator/genmodule.py
@@ -28,7 +28,7 @@
 # Names of functions in the object-description struct.
 #
 FUNCLIST = ['new', 'tp_dealloc', 'tp_print', 'tp_getattr', 'tp_setattr',
-	    'tp_compare', 'tp_repr', 'tp_hash']
+	    'tp_compare', 'tp_repr', 'tp_hash', 'tp_call', 'tp_str']
 TYPELIST = ['tp_as_number', 'tp_as_sequence', 'tp_as_mapping', 'structure']
 
 #
@@ -81,7 +81,8 @@
 	for fn in self.methodlist:
 	    self.method = fn
 	    self.addcode('module_method', fp)
-	    new_ml = new_ml + ('{"%s",\t%s_%s,\t1},\n'%(fn, self.abbrev, fn))
+	    new_ml = new_ml + ('{"%s",\t%s_%s,\t1,\t%s_%s__doc__},\n'
+			       %(fn, self.abbrev, fn, self.abbrev, fn))
 	self.methodlist = new_ml
 	self.addcode('module_tail', fp)
 
@@ -106,7 +107,8 @@
 	for fn in self.methodlist:
 	    self.method = fn
 	    self.addcode('object_method', fp)
-	    new_ml = new_ml + ('{"%s",\t%s_%s,\t1},\n'%(fn, self.abbrev, fn))
+	    new_ml = new_ml + ('{"%s",\t%s_%s,\t1,\t%s_%s__doc__},\n'
+			       %(fn, self.abbrev, fn, self.abbrev, fn))
 	self.methodlist = new_ml
 	self.addcode('object_mlist', fp)