History

Added scoring system for determining overloaded function to call

ksuprynowicz committed 4 years ago

Commit 979e9ff1 parent 8304a0c3 files · +125 −13Browse files

Showing the changes to libraries/script-engine/src/qtscript/ScriptEngineQtScript_cast.cpp (1 of 3 files). Show all

Unified · Split

libraries/script-engine/src/qtscript/ScriptEngineQtScript_cast.cpp+81−0
@@ -195,6 +195,87 @@ void ScriptEngineQtScript::registerSystemTypes() { · 194 unmodified lines
195195 scriptRegisterMetaType<QJsonArray, JsonArrayToScriptValue, JsonArrayFromScriptValue>(this);
196196 }
197197
198+int ScriptEngineQtScript::computeCastPenalty(QScriptValue& val, int destTypeId) {
199+ if (val.isNumber()) {
200+ switch (destTypeId){
201+ case QMetaType::Bool:
202+ return 5;
203+ break;
204+ case QMetaType::UInt:
205+ case QMetaType::ULong:
206+ case QMetaType::Int:
207+ case QMetaType::Long:
208+ case QMetaType::Short:
209+ case QMetaType::Double:
210+ case QMetaType::Float:
211+ case QMetaType::ULongLong:
212+ case QMetaType::LongLong:
213+ case QMetaType::UShort:
214+ return 0;
215+ break;
216+ case QMetaType::QString:
217+ case QMetaType::QByteArray:
218+ case QMetaType::QDateTime:
219+ case QMetaType::QDate:
220+ return 100;
221+ break;
222+ default:
223+ return 5;
224+ }
225+ } else if (val.isString() || val.isDate() || val.isRegExp()) {
226+ switch (destTypeId){
227+ case QMetaType::Bool:
228+ return 100;
229+ case QMetaType::UInt:
230+ case QMetaType::ULong:
231+ case QMetaType::Int:
232+ case QMetaType::Long:
233+ case QMetaType::Short:
234+ case QMetaType::Double:
235+ case QMetaType::Float:
236+ case QMetaType::ULongLong:
237+ case QMetaType::LongLong:
238+ case QMetaType::UShort:
239+ return 100;
240+ case QMetaType::QString:
241+ return 0;
242+ case QMetaType::QByteArray:
243+ case QMetaType::QDateTime:
244+ case QMetaType::QDate:
245+ return 5;
246+ default:
247+ return 5;
248+ }
249+ } else if (val.isBool() || val.isBoolean()) {
250+ switch (destTypeId){
251+ case QMetaType::Bool:
252+ return 0;
253+ break;
254+ case QMetaType::UInt:
255+ case QMetaType::ULong:
256+ case QMetaType::Int:
257+ case QMetaType::Long:
258+ case QMetaType::Short:
259+ case QMetaType::Double:
260+ case QMetaType::Float:
261+ case QMetaType::ULongLong:
262+ case QMetaType::LongLong:
263+ case QMetaType::UShort:
264+ return 5;
265+ break;
266+ case QMetaType::QString:
267+ case QMetaType::QByteArray:
268+ case QMetaType::QDateTime:
269+ case QMetaType::QDate:
270+ return 50;
271+ break;
272+ default:
273+ return 5;
274+ }
275+ }
276+ return 0;
277+}
278+
198279 bool ScriptEngineQtScript::castValueToVariant(const QScriptValue& val, QVariant& dest, int destTypeId) {
199280
200281 // if we're not particularly interested in a specific type, try to detect if we're dealing with a registered type

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t