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
195 scriptRegisterMetaType<QJsonArray, JsonArrayToScriptValue, JsonArrayFromScriptValue>(this);195 scriptRegisterMetaType<QJsonArray, JsonArrayToScriptValue, JsonArrayFromScriptValue>(this);
196}196}
197 197
198int 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
198bool ScriptEngineQtScript::castValueToVariant(const QScriptValue& val, QVariant& dest, int destTypeId) {279bool ScriptEngineQtScript::castValueToVariant(const QScriptValue& val, QVariant& dest, int destTypeId) {
199 280
200 // if we're not particularly interested in a specific type, try to detect if we're dealing with a registered type281 // 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