+// Set the detailed reference docs for full or partial declaration
+#define DocRef(decl, str) %feature("docref") decl str
+
+
+
+
+// Set the docstring for a decl and then define the decl too. Must use the
+// full declaration of the item.
+%define DocDeclStr(type, decl, docstr)
+ %feature("docstring") decl docstr;
+ type decl
+%enddef
+
+// As above, but also give the decl a new %name
+%define DocDeclStrName(type, decl, docstr, newname)
+ %feature("docstring") decl docstr;
+ %name(newname) type decl
+%enddef
+
+
+// Set the autodoc string for a decl and then define the decl too. Must use the
+// full declaration of the item.
+%define DocDeclA(type, decl, astr)
+ %feature("autodoc") decl astr;
+ type decl
+%enddef
+
+// As above, but also give the decl a new %name
+%define DocDeclAName(type, decl, astr, newname)
+ %feature("autodoc") decl astr;
+ %name(newname) type decl
+%enddef
+
+
+
+// Set the autodoc and the docstring for a decl and then define the decl too.
+// Must use the full declaration of the item.
+%define DocDeclAStr(type, decl, astr, docstr)
+ %feature("autodoc") decl astr;
+ %feature("docstring") decl docstr;
+ type decl
+%enddef
+
+// As above, but also give the decl a new %name
+%define DocDeclAStrName(type, decl, astr, docstr, newname)
+ %feature("autodoc") decl astr;
+ %feature("docstring") decl docstr;
+ %name(newname) type decl
+%enddef
+
+
+
+
+// Set the docstring for a constructor decl and then define the decl too.
+// Must use the full declaration of the item.
+%define DocCtorStr(decl, docstr)
+ %feature("docstring") decl docstr;
+ decl
+%enddef
+
+// As above, but also give the decl a new %name
+%define DocCtorStrName(decl, docstr, newname)
+ %feature("docstring") decl docstr;
+ %name(newname) decl
+%enddef
+
+
+// Set the autodoc string for a decl and then define the decl too. Must use the
+// full declaration of the item.
+%define DocCtorA(decl, astr)
+ %feature("autodoc") decl astr;
+ decl
+%enddef
+
+// As above, but also give the decl a new %name
+%define DocCtorAname(decl, astr, newname)
+ %feature("autodoc") decl astr;
+ %name(newname) decl
+%enddef
+
+
+
+// Set the autodoc and the docstring for a decl and then define the decl too.
+// Must use the full declaration of the item.
+%define DocCtorAStr(decl, astr, docstr)
+ %feature("autodoc") decl astr;
+ %feature("docstring") decl docstr;
+ decl
+%enddef
+
+// As above, but also give the decl a new %name
+%define DocCtorAStrName(decl, astr, docstr, newname)
+ %feature("autodoc") decl astr;
+ %feature("docstring") decl docstr;
+ %name(newname) decl
+%enddef
+
+
+
+%define %newgroup
+%pythoncode {
+%#---------------------------------------------------------------------------
+}
+%enddef