diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-10-29 11:51:53 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-10-30 14:24:20 -0300 |
commit | cb4b14c179887735ffa925ea01de333c3ed41677 (patch) | |
tree | acdcc074079d3b7ca368ad9c108b82b40dffd841 /overloaddata.h | |
parent | 10b5327e02c3ce3f7339226c6289ce0daf230d95 (diff) |
improved OverloadData class to sort the alternative arguments putting
the primitive types first and moving down the wrapper objects with more
implicit converversions; this ordering scheme is needed to avoid
unnecessary (and sometimes wrong) conversions
Diffstat (limited to 'overloaddata.h')
-rw-r--r-- | overloaddata.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/overloaddata.h b/overloaddata.h index 508aca781..5fd6ff547 100644 --- a/overloaddata.h +++ b/overloaddata.h @@ -28,13 +28,15 @@ #include <QtCore/QList> #include <QtCore/QBitArray> +#include "shibokengenerator.h" + class OverloadData; typedef QList<OverloadData*> OverloadDataList; class OverloadData { public: - OverloadData(const AbstractMetaFunctionList overloads); + OverloadData(const AbstractMetaFunctionList overloads, const ShibokenGenerator* generator); int minArgs() const { return m_headOverloadData->m_minArgs; } int maxArgs() const { return m_headOverloadData->m_maxArgs; } @@ -61,11 +63,13 @@ public: void dumpGraph(QString filename) const; QString dumpGraph() const; + int argTypeWeight() const { return m_argTypeWeight; } + ~OverloadData(); private: OverloadData(OverloadData* headOverloadData, const AbstractMetaFunction* func, - const AbstractMetaType* argType, int argPos); + const AbstractMetaType* argType, int argPos); void addOverload(const AbstractMetaFunction* func); OverloadData* addOverloadData(const AbstractMetaFunction* func, const AbstractMetaType* argType); @@ -77,10 +81,12 @@ private: int m_maxArgs; int m_argPos; const AbstractMetaType* m_argType; + int m_argTypeWeight; QList<const AbstractMetaFunction*> m_overloads; OverloadData* m_headOverloadData; OverloadDataList m_nextOverloadData; + const ShibokenGenerator* m_generator; }; |