cimnodes puzzle
sonoro1234 opened this issue · 1 comments
Hi,
Having the struct tag EmulateThreeButtonMouse equal to the field name EmulateThreeButtonMouse makes a problem for cimnodes:
Change was introduced when emulate_three_button_mouse was renamed to EmulateThreeButtonMouse
this is used in cimnodes.h so that EmulateThreeButtonMouse can be used as a type from both C and C++:
#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
typedef ImNodesIO::EmulateThreeButtonMouse EmulateThreeButtonMouse;
typedef ImNodesIO::LinkDetachWithModifierClick LinkDetachWithModifierClick;
#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS
with CIMGUI_DEFINE_ENUMS_AND_STRUCTS defined for C usage and without it for C++ usage
but that makes cpp compiler complain
[ 3%] Building CXX object CMakeFiles/cimgui_base.dir/cimnodes/cimnodes.cpp.obj
In file included from C:\LuaGL\gitsources\anima\LuaJIT-ImGui\cimnodes\cimnodes.cpp:6:
C:\LuaGL\gitsources\anima\LuaJIT-ImGui\cimnodes\cimnodes.h:135:20: error: 'EmulateThreeButtonMouse' in 'struct ImNodesIO' does not name a type
typedef ImNodesIO::EmulateThreeButtonMouse EmulateThreeButtonMouse;
^~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\LuaGL\gitsources\anima\LuaJIT-ImGui\cimnodes\cimnodes.cpp:5:
C:/LuaGL/gitsources/anima/LuaJIT-ImGui/cimnodes/imnodes/imnodes.h:110:7: note: 'ImNodesIO::EmulateThreeButtonMouse' declared here
} EmulateThreeButtonMouse;
^~~~~~~~~~~~~~~~~~~~~~~
The same happens with LinkDetachWithModifierClick
Problem disappears if both tag name and field name are different.
I am not able to solve it myself
The worst part for imnodes code is that changing the tag name makes necessary to change the constructor name also:
if tag is EmulateThreeButtonMouse_ for example then constructor should be EmulateThreeButtonMouse_ () (But perhaps end user is not expected to use this constructor)
It seems that adding struct keyword solves the ambiguity
#ifndef CIMGUI_DEFINE_ENUMS_AND_STRUCTS
typedef struct ImNodesIO::EmulateThreeButtonMouse EmulateThreeButtonMouse;
typedef struct ImNodesIO::LinkDetachWithModifierClick LinkDetachWithModifierClick;
#endif //CIMGUI_DEFINE_ENUMS_AND_STRUCTS