indilib / pyindi-client

GNU General Public License v3.0
21 stars 8 forks source link

Issue when compiling pyindi-client with CLANG #39

Open jodier opened 1 year ago

jodier commented 1 year ago

Dear pyindi-client developpers,

I experience an issue when compiling pyindi-client with clang.

From indiclientpython.i:

    /* TODO(chripell): is there a way to use %implicitconv? */
    void sendNewText(INDI::PropertyView<IText> * pp) {
      $self->sendNewText(static_cast<ITextVectorProperty *>(pp));
    }
    void sendNewNumber(INDI::PropertyView<INumber> * pp) {
      $self->sendNewNumber(static_cast<INumberVectorProperty *>(pp));
    }
    void sendNewSwitch(INDI::PropertyView<ISwitch> * pp) {
      $self->sendNewSwitch(static_cast<ISwitchVectorProperty *>(pp));
    }

I get these compilation errors:

clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /Users/jodier/miniconda3/include -fPIC -O2 -isystem /Users/jodier/miniconda3/include -Ilibindi -I./.local/include -I/Users/jodier/miniconda3/include/python3.10 -c indiclientpython_wrap.cpp -o build/temp.macosx-10.9-x86_64-cpython-310/indiclientpython_wrap.o -std=c++11 -Wno-deprecated-declarations
indiclientpython_wrap.cpp:6091:13: error: no matching member function for call to 'sendNewText'
      self->sendNewText(static_cast<ITextVectorProperty *>(pp));
      ~~~~~~^~~~~~~~~~~
libindi/abstractbaseclient.h:178:14: note: candidate function not viable: no known conversion from 'ITextVectorProperty *' (aka '_ITextVectorProperty *') to 'INDI::Property' for 1st argument
        void sendNewText(INDI::Property pp);
             ^
libindi/abstractbaseclient.h:180:14: note: candidate function not viable: requires 4 arguments, but 1 was provided
        void sendNewText(const char *deviceName, const char *propertyName, const char *elementName, const char *text);
             ^
indiclientpython_wrap.cpp:6094:13: error: no matching member function for call to 'sendNewNumber'
      self->sendNewNumber(static_cast<INumberVectorProperty *>(pp));
      ~~~~~~^~~~~~~~~~~~~
libindi/abstractbaseclient.h:182:14: note: candidate function not viable: no known conversion from 'INumberVectorProperty *' (aka '_INumberVectorProperty *') to 'INDI::Property' for 1st argument
        void sendNewNumber(INDI::Property pp);
             ^
libindi/abstractbaseclient.h:184:14: note: candidate function not viable: requires 4 arguments, but 1 was provided
        void sendNewNumber(const char *deviceName, const char *propertyName, const char *elementName, double value);
             ^
indiclientpython_wrap.cpp:6097:13: error: no matching member function for call to 'sendNewSwitch'
      self->sendNewSwitch(static_cast<ISwitchVectorProperty *>(pp));
      ~~~~~~^~~~~~~~~~~~~
libindi/abstractbaseclient.h:186:14: note: candidate function not viable: no known conversion from 'ISwitchVectorProperty *' (aka '_ISwitchVectorProperty *') to 'INDI::Property' for 1st argument
        void sendNewSwitch(INDI::Property pp);
             ^
libindi/abstractbaseclient.h:188:14: note: candidate function not viable: requires 3 arguments, but 1 was provided
        void sendNewSwitch(const char *deviceName, const char *propertyName, const char *elementName);

Could you fix this issue?

Best regards, Jérôme