aboutsummaryrefslogtreecommitdiffstats
path: root/cppgenerator.h
diff options
context:
space:
mode:
authorHugo Lima <hugo.lima@openbossa.org>2009-11-03 17:29:04 -0200
committerHugo Lima <hugo.lima@openbossa.org>2009-11-03 19:11:43 -0200
commitec2e6f46ced20a82d886725f146e54e96fedd2ce (patch)
tree3cc90968ba188bcf7044bcc07535d3582524734f /cppgenerator.h
parente01eba39663c2f7d0f1137ab30ed18891394afb5 (diff)
Add initial support for python sequence protocol.
Diffstat (limited to 'cppgenerator.h')
-rw-r--r--cppgenerator.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/cppgenerator.h b/cppgenerator.h
index 3bff8171b..af62504dc 100644
--- a/cppgenerator.h
+++ b/cppgenerator.h
@@ -32,6 +32,8 @@
*/
class CppGenerator : public ShibokenGenerator
{
+public:
+ CppGenerator();
protected:
QString fileNameForClass(const AbstractMetaClass* metaClass) const;
QList<AbstractMetaFunctionList> filterGroupedFunctions(const AbstractMetaClass* metaClass = 0);
@@ -62,6 +64,10 @@ private:
void writeClassRegister(QTextStream& s, const AbstractMetaClass* metaClass);
void writeClassDefinition(QTextStream& s, const AbstractMetaClass* metaClass);
void writeMethodDefinition(QTextStream& s, const AbstractMetaFunctionList overloads);
+ /// Writes the implementation of all methods part of python sequence protocol
+ void writeSequenceMethods(QTextStream& s, const AbstractMetaClass* metaClass);
+ /// Writes the struct PySequenceMethods for types thats supports the python sequence protocol
+ void writeTypeAsSequenceDefinition(QTextStream& s, const AbstractMetaClass* metaClass);
void writeTypeAsNumberDefinition(QTextStream& s, const AbstractMetaClass* metaClass);
void writeRichCompareFunction(QTextStream& s, const AbstractMetaClass* metaClass);
@@ -80,6 +86,11 @@ private:
void writeFlagsUnaryOperator(QTextStream& s, const AbstractMetaEnum* cppEnum,
QString pyOpName, QString cppOpName, bool boolResult = false);
+ /// Returns true if the given class supports the python sequence protocol
+ bool supportsSequenceProtocol(const AbstractMetaClass* metaClass);
+ // Maps special function names to function parameters and return types
+ // used by CPython API in the sequence protocol.
+ QHash<QString, QPair<QString, QString> > m_sequenceProtocol;
};
#endif // CPPGENERATOR_H