diff --git a/src/Tools/generateBase/generateMetaModel_Module.xsd b/src/Tools/generateBase/generateMetaModel_Module.xsd
index 725b1a151f..799056ef07 100644
--- a/src/Tools/generateBase/generateMetaModel_Module.xsd
+++ b/src/Tools/generateBase/generateMetaModel_Module.xsd
@@ -18,6 +18,7 @@
+
diff --git a/src/Tools/generateBase/generateModel_Module.py b/src/Tools/generateBase/generateModel_Module.py
index be37255883..9e126b68df 100644
--- a/src/Tools/generateBase/generateModel_Module.py
+++ b/src/Tools/generateBase/generateModel_Module.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
#
-# Generated Fri Mar 31 16:59:53 2023 by generateDS.py.
+# Generated Wed Sep 27 11:00:46 2023 by generateDS.py.
# Update it with: python generateDS.py -o generateModel_Module.py generateMetaModel_Module.xsd
#
# WARNING! All changes made in this file will be lost!
@@ -789,6 +789,7 @@ class Methode:
Name="",
Const=0,
Keyword=0,
+ NoArgs=0,
Class=0,
Static=0,
Documentation=None,
@@ -797,6 +798,7 @@ class Methode:
self.Name = Name
self.Const = Const
self.Keyword = Keyword
+ self.NoArgs = NoArgs
self.Class = Class
self.Static = Static
self.Documentation = Documentation
@@ -849,6 +851,12 @@ class Methode:
def setKeyword(self, Keyword):
self.Keyword = Keyword
+ def getNoargs(self):
+ return self.NoArgs
+
+ def setNoargs(self, NoArgs):
+ self.NoArgs = NoArgs
+
def getClass(self):
return self.Class
@@ -876,6 +884,8 @@ class Methode:
outfile.write(' Const="%s"' % (self.getConst(),))
if self.getKeyword() is not None:
outfile.write(' Keyword="%s"' % (self.getKeyword(),))
+ if self.getNoargs() is not None:
+ outfile.write(' NoArgs="%s"' % (self.getNoargs(),))
if self.getClass() is not None:
outfile.write(' Class="%s"' % (self.getClass(),))
if self.getStatic() is not None:
@@ -900,6 +910,8 @@ class Methode:
showIndent(outfile, level)
outfile.write('Keyword = "%s",\n' % (self.getKeyword(),))
showIndent(outfile, level)
+ outfile.write('NoArgs = "%s",\n' % (self.getNoargs(),))
+ showIndent(outfile, level)
outfile.write('Class = "%s",\n' % (self.getClass(),))
showIndent(outfile, level)
outfile.write('Static = "%s",\n' % (self.getStatic(),))
@@ -948,6 +960,13 @@ class Methode:
self.Keyword = 0
else:
raise ValueError("Bad boolean attribute (Keyword)")
+ if attrs.get("NoArgs"):
+ if attrs.get("NoArgs").value in ("true", "1"):
+ self.NoArgs = 1
+ elif attrs.get("NoArgs").value in ("false", "0"):
+ self.NoArgs = 0
+ else:
+ raise ValueError("Bad boolean attribute (NoArgs)")
if attrs.get("Class"):
if attrs.get("Class").value in ("true", "1"):
self.Class = 1
@@ -1549,12 +1568,7 @@ class Content:
subclass = None
def __init__(
- self,
- Property=None,
- Feature=None,
- DocObject=None,
- GuiCommand=None,
- PreferencesPage=None,
+ self, Property=None, Feature=None, DocObject=None, GuiCommand=None, PreferencesPage=None
):
if Property is None:
self.Property = []
@@ -2694,6 +2708,16 @@ class SaxGeneratemodelHandler(handler.ContentHandler):
self.reportError(
'"Keyword" attribute must be boolean ("true", "1", "false", "0")'
)
+ val = attrs.get("NoArgs", None)
+ if val is not None:
+ if val in ("true", "1"):
+ obj.setNoargs(1)
+ elif val in ("false", "0"):
+ obj.setNoargs(0)
+ else:
+ self.reportError(
+ '"NoArgs" attribute must be boolean ("true", "1", "false", "0")'
+ )
val = attrs.get("Class", None)
if val is not None:
if val in ("true", "1"):
@@ -3062,11 +3086,7 @@ class SaxGeneratemodelHandler(handler.ContentHandler):
locator = self.locator
sys.stderr.write(
"Doc: %s Line: %d Column: %d\n"
- % (
- locator.getSystemId(),
- locator.getLineNumber(),
- locator.getColumnNumber() + 1,
- )
+ % (locator.getSystemId(), locator.getLineNumber(), locator.getColumnNumber() + 1)
)
sys.stderr.write(mesg)
sys.stderr.write("\n")
diff --git a/src/Tools/generateTemplates/templateClassPyExport.py b/src/Tools/generateTemplates/templateClassPyExport.py
index 72f5ed1341..a9c4df8bfd 100644
--- a/src/Tools/generateTemplates/templateClassPyExport.py
+++ b/src/Tools/generateTemplates/templateClassPyExport.py
@@ -121,6 +121,19 @@ public:
/// implementer for the @i.Name@() method
PyObject* @i.Name@(PyObject *args, PyObject *kwd);
-
+= elif i.NoArgs:
+ /// callback for the @i.Name@() method
+ static PyObject * staticCallback_@i.Name@ (PyObject *self, PyObject *args);
++ if i.Static:
+ /// implementer for the @i.Name@() method
+ static PyObject* @i.Name@();
+= elif i.Class:
+ /// implementer for the @i.Name@() method
+ static PyObject* @i.Name@(PyObject *self);
+= else:
+ /// implementer for the @i.Name@() method
+ PyObject* @i.Name@();
+-
= else:
/// callback for the @i.Name@() method
static PyObject * staticCallback_@i.Name@ (PyObject *self, PyObject *args);
@@ -389,6 +402,17 @@ PyMethodDef @self.export.Name@::Methods[] = {
reinterpret_cast(reinterpret_cast( staticCallback_@i.Name@ )),
METH_VARARGS|METH_KEYWORDS,
-
+= elif i.NoArgs:
++ if i.Class:
+ reinterpret_cast(reinterpret_cast( staticCallback_@i.Name@ )),
+ METH_NOARGS|METH_CLASS,
+= elif i.Static:
+ reinterpret_cast(reinterpret_cast( staticCallback_@i.Name@ )),
+ METH_NOARGS|METH_STATIC,
+= else:
+ reinterpret_cast( staticCallback_@i.Name@ ),
+ METH_NOARGS,
+-
= elif i.Class:
reinterpret_cast(reinterpret_cast( staticCallback_@i.Name@ )),
METH_VARARGS|METH_CLASS,
@@ -532,6 +556,8 @@ PyGetSetDef @self.export.Name@::GetterSetter[] = {
// has to be implemented in @self.export.Name@Imp.cpp
+ if i.Keyword:
PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject *args, PyObject * kwd)
+= elif i.NoArgs:
+PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject * Py_UNUSED(args))
= else:
PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject *args)
-
@@ -568,6 +594,15 @@ PyObject * @self.export.Name@::staticCallback_@i.Name@ (PyObject *self, PyObject
= else:
PyObject* ret = static_cast<@self.export.Name@*>(self)->@i.Name@(args, kwd);
-
+= elif i.NoArgs:
++ if i.Static:
+ (void)self;
+ PyObject* ret = @self.export.Name@::@i.Name@();
+= elif i.Class:
+ PyObject* ret = @self.export.Name@::@i.Name@(self);
+= else:
+ PyObject* ret = static_cast<@self.export.Name@*>(self)->@i.Name@();
+-
= else:
+ if i.Static:
(void)self;
@@ -881,6 +916,12 @@ PyObject* @self.export.Name@::@i.Name@(PyObject *self, PyObject *args, PyObject
= else:
PyObject* @self.export.Name@::@i.Name@(PyObject *args, PyObject *kwds)
-
+= elif i.NoArgs:
++ if i.Class:
+PyObject* @self.export.Name@::@i.Name@(PyObject *self)
+= else:
+PyObject* @self.export.Name@::@i.Name@()
+-
= else:
+ if i.Class:
PyObject* @self.export.Name@::@i.Name@(PyObject *self, PyObject *args)
@@ -1222,6 +1263,12 @@ PyObject* @self.export.Name@::@i.Name@(PyObject * /*self*/, PyObject * /*args*/,
= else:
PyObject* @self.export.Name@::@i.Name@(PyObject * /*args*/, PyObject * /*kwds*/)
-
+= elif i.NoArgs:
++ if i.Class:
+PyObject* @self.export.Name@::@i.Name@(PyObject * /*self*/)
+= else:
+PyObject* @self.export.Name@::@i.Name@()
+-
= else:
+ if i.Class:
PyObject* @self.export.Name@::@i.Name@(PyObject * /*self*/, PyObject * /*args*/)