Better autodocs.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9760 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Gonzalo Garramuno 2007-05-03 09:56:28 +00:00
commit 7d570676f5
4 changed files with 62 additions and 30 deletions

View file

@ -120,7 +120,9 @@ enum autodoc_t {
AUTODOC_DTOR,
AUTODOC_STATICFUNC,
AUTODOC_FUNC,
AUTODOC_METHOD
AUTODOC_METHOD,
AUTODOC_GETTER,
AUTODOC_SETTER
};
static const char *usage = "\
@ -542,8 +544,12 @@ private:
case AUTODOC_FUNC:
case AUTODOC_METHOD:
case AUTODOC_GETTER:
Printf(doc, " Document-method: %s\n\n", symname);
break;
case AUTODOC_SETTER:
Printf(doc, " Document-method: %s=\n\n", symname);
break;
}
}
@ -555,6 +561,7 @@ private:
case AUTODOC_STATICFUNC:
case AUTODOC_FUNC:
case AUTODOC_METHOD:
case AUTODOC_GETTER:
{
String *paramList = make_autodocParmList(n, showTypes);
if (Len(paramList))
@ -565,6 +572,12 @@ private:
Printf(doc, " -> %s", type);
break;
}
case AUTODOC_SETTER:
{
Printf(doc, " %s=(x)", symname);
if (type) Printf(doc, " -> %s", type);
break;
}
default:
break;
}
@ -605,15 +618,25 @@ private:
case AUTODOC_STATICFUNC:
case AUTODOC_FUNC:
case AUTODOC_METHOD:
if (counter == 0) Printf(doc, " call-seq:\n");
String *paramList = make_autodocParmList(n, showTypes);
if (Len(paramList))
Printf(doc, " %s(%s)", symname, paramList);
else
Printf(doc, " %s", symname);
if (type)
Printf(doc, " -> %s", type);
break;
case AUTODOC_GETTER:
{
if (counter == 0) Printf(doc, " call-seq:\n");
String *paramList = make_autodocParmList(n, showTypes);
if (Len(paramList))
Printf(doc, " %s(%s)", symname, paramList);
else
Printf(doc, " %s", symname);
if (type)
Printf(doc, " -> %s", type);
break;
}
case AUTODOC_SETTER:
{
Printf(doc, " call-seq:\n");
Printf(doc, " %s=(x)", symname);
if (type) Printf(doc, " -> %s", type);
break;
}
}
}
@ -627,24 +650,25 @@ private:
if (!skipAuto) {
switch (ad_type) {
case AUTODOC_CLASS:
case AUTODOC_DTOR:
break;
case AUTODOC_CTOR:
Printf(doc, "Class constructor.\n");
break;
case AUTODOC_DTOR:
break;
case AUTODOC_STATICFUNC:
Printf(doc, "A static function.\n");
Printf(doc, "A class method.\n");
break;
case AUTODOC_FUNC:
Printf(doc, "A function.\n");
Printf(doc, "A module function.\n");
break;
case AUTODOC_METHOD:
Printf(doc, "A method.\n");
Printf(doc, "An instance method.\n");
break;
case AUTODOC_GETTER:
Printf(doc, "Get value of attribute.\n");
break;
case AUTODOC_SETTER:
Printf(doc, "Set new value for attribute.\n");
break;
}
}
@ -1012,6 +1036,8 @@ public:
Printf(f_header, "static VALUE %s;\n", modvar);
/* Start generating the initialization function */
String* docs = docstring(n, AUTODOC_CLASS);
Printf(f_init, "/*\n%s\n*/", docs );
Printv(f_init, "\n", "#ifdef __cplusplus\n", "extern \"C\"\n", "#endif\n", "SWIGEXPORT void Init_", feature, "(void) {\n", "size_t i;\n", "\n", NIL);
Printv(f_init, tab4, "VALUE parent = Qnil;\n", NIL);
@ -1955,10 +1981,11 @@ public:
* --------------------------------------------------------------------- */
virtual int variableWrapper(Node *n) {
String* docs = docstring(n, AUTODOC_METHOD);
String* docs = docstring(n, AUTODOC_GETTER);
Printf(f_wrappers, "%s", docs);
Delete(docs);
char *name = GetChar(n, "name");
char *iname = GetChar(n, "sym:name");
SwigType *t = Getattr(n, "type");
@ -2001,6 +2028,10 @@ public:
setfname = NewString("NULL");
} else {
/* create setter */
String* docs = docstring(n, AUTODOC_SETTER);
Printf(f_wrappers, "%s", docs);
Delete(docs);
String *setname = Swig_name_set(iname);
setfname = Swig_name_wrapper(setname);
Printv(setf->def, "SWIGINTERN VALUE\n", setfname, "(VALUE self, ", NIL);
@ -2563,10 +2594,16 @@ public:
* -------------------------------------------------------------------- */
virtual int membervariableHandler(Node *n) {
String* docs = docstring(n, AUTODOC_METHOD);
String* docs = docstring(n, AUTODOC_GETTER);
Printf(f_wrappers, "%s", docs);
Delete(docs);
if (is_assignable(n)) {
String* docs = docstring(n, AUTODOC_SETTER);
Printf(f_wrappers, "%s", docs);
Delete(docs);
}
current = MEMBER_VAR;
Language::membervariableHandler(n);
current = NO_CPP;