[skip ci] fix more -Wgnu-zero-variadic-macro-arguments

This commit is contained in:
wmayer
2019-11-17 21:32:19 +01:00
parent c0a80e1a9a
commit a5019828cf
2 changed files with 41 additions and 34 deletions

View File

@@ -60,27 +60,36 @@ void DocumentObserverPython::removeObserver(const Py::Object& obj)
DocumentObserverPython::DocumentObserverPython(const Py::Object& obj) : inst(obj)
{
#define signalCreatedDocument signalNewDocument
#define signalCreatedObject signalNewObject
#define signalDeletedDocument signalDeleteDocument
#define signalActivateDocument signalActiveDocument
#define FC_PY_ELEMENT_ARG1(_name1, _name2) do {\
FC_PY_GetCallable(obj.ptr(), "slot" #_name1, py##_name1.py);\
if (!py##_name1.py.isNone())\
py##_name1.slot = Application::Instance->signal##_name2.connect(\
boost::bind(&DocumentObserverPython::slot##_name1, this, _1));\
}\
while(0);
#undef FC_PY_ELEMENT
#define FC_PY_ELEMENT(_name,...) \
FC_PY_GetCallable(obj.ptr(),"slot" #_name, py##_name);\
if(!py##_name.isNone())\
connect##_name = Application::Instance->signal##_name.connect(\
boost::bind(&DocumentObserverPython::slot##_name, this, ## __VA_ARGS__));
#define FC_PY_ELEMENT_ARG2(_name1, _name2) do {\
FC_PY_GetCallable(obj.ptr(), "slot" #_name1, py##_name1.py);\
if (!py##_name1.py.isNone())\
py##_name1.slot = Application::Instance->signal##_name2.connect(\
boost::bind(&DocumentObserverPython::slot##_name1, this, _1, _2));\
}\
while(0);
FC_PY_GDOC_OBSERVER
FC_PY_ELEMENT_ARG1(CreatedDocument, NewDocument)
FC_PY_ELEMENT_ARG1(DeletedDocument, DeleteDocument)
FC_PY_ELEMENT_ARG1(RelabelDocument, RelabelDocument)
FC_PY_ELEMENT_ARG1(RenameDocument, RenameDocument)
FC_PY_ELEMENT_ARG1(ActivateDocument, ActiveDocument)
FC_PY_ELEMENT_ARG1(CreatedObject, NewObject)
FC_PY_ELEMENT_ARG1(DeletedObject, DeletedObject)
FC_PY_ELEMENT_ARG2(ChangedObject, ChangedObject)
FC_PY_ELEMENT_ARG1(InEdit, InEdit)
FC_PY_ELEMENT_ARG1(ResetEdit, ResetEdit)
}
DocumentObserverPython::~DocumentObserverPython()
{
#undef FC_PY_ELEMENT
#define FC_PY_ELEMENT(_name,...) connect##_name.disconnect();
FC_PY_GDOC_OBSERVER
}
void DocumentObserverPython::slotCreatedDocument(const Gui::Document& Doc)

View File

@@ -75,26 +75,24 @@ private:
Py::Object inst;
static std::vector<DocumentObserverPython*> _instances;
typedef boost::signals2::connection Connection;
typedef struct {
boost::signals2::scoped_connection slot;
Py::Object py;
PyObject* ptr() {
return py.ptr();
}
} Connection;
#define FC_PY_GDOC_OBSERVER \
FC_PY_ELEMENT(CreatedDocument,_1) \
FC_PY_ELEMENT(DeletedDocument,_1) \
FC_PY_ELEMENT(RelabelDocument,_1) \
FC_PY_ELEMENT(RenameDocument,_1) \
FC_PY_ELEMENT(ActivateDocument,_1) \
FC_PY_ELEMENT(CreatedObject,_1) \
FC_PY_ELEMENT(DeletedObject,_1) \
FC_PY_ELEMENT(ChangedObject,_1,_2) \
FC_PY_ELEMENT(InEdit,_1) \
FC_PY_ELEMENT(ResetEdit,_1)
#undef FC_PY_ELEMENT
#define FC_PY_ELEMENT(_name,...) \
Connection connect##_name;\
Py::Object py##_name;
FC_PY_GDOC_OBSERVER
Connection pyCreatedDocument;
Connection pyDeletedDocument;
Connection pyRelabelDocument;
Connection pyRenameDocument;
Connection pyActivateDocument;
Connection pyCreatedObject;
Connection pyDeletedObject;
Connection pyChangedObject;
Connection pyInEdit;
Connection pyResetEdit;
};
} //namespace Gui