[PyKDE] Trouble binding code with SIP

Aurélien Gâteau aurelien at dental-on-line.fr
Mon Oct 13 11:29:01 BST 2003


Hello list

I'm experimenting trouble binding some code with SIP. The original C++ header 
code is composed of one namespace (DolSphinx) and a class 
(DolSphinxListener). Here are some interesting excerpts:

--- dolsphinx.h ---
class DolSphinxListener;

namespace DolSphinx {
    enum State {Uninitialized, Initializing, Listening, Calibrating, Paused};

    /* Snipped some functions */
    
    DolSphinxListener* listener();
    void setListener(DolSphinxListener*);

    State state();
    
    State stringToState(const QString&);
    QString stateToString(State);
}
---

The DolSphinxListener class:

--- dolsphinxlistener.h ---
class DolSphinxListener : public QObject {
Q_OBJECT
public:
    /* Snipped some functions */

signals:
    void wordHeard(const QString&);
    void stateChanged(DolSphinx::State);
/* snip */
};
---

I wrote the following files to bind them:

--- dolsphinx.sip ---
%Module dolsphinx

%Import qtmod.sip

%HeaderCode
#include <dolsphinx.h>
%End

%Include dolsphinxlistener.sip

namespace DolSphinx {
    enum State {Uninitialized, Initializing, Listening, Calibrating, Paused };

    DolSphinxListener* listener();
    void setListener(DolSphinxListener*);

    DolSphinx::State state();

    DolSphinx::State stringToState(const QString&);
    QString stateToString(DolSphinx::State);
};
/* Snipped Makefile code */
---

--- dolsphinxlistener.h ---
class DolSphinxListener : QObject
{
%HeaderCode
#include <dolsphinxlistener.h>
%End
public:

signals:
    void wordHeard(const QString&);
    void stateChanged(DolSphinx::State);
};
---

Sip	(3.7) generates correctly the C++ files, but compiling the generated files 
fails with this error:
sipdolsphinxProxydolsphinx.h:22: `DolSphinx' was not declared in this scope

The offending line is:
void proxySlot(DolSphinx::State);

If I manually add a '#include <dolsphinx.h>' in this file, it works, but I 
don't know how to tell sip to add this include itself. Does anyone got an 
idea?

Please excuse my long message, I think it's necessary to include file excerpts 
in order to find the problem.

Thanks in advance

Aurélien




More information about the PyQt mailing list