in asdoc/org/apache/royale/utils/Language.js [159:233]
org.apache.royale.utils.Language.is = function(leftOperand, rightOperand) {
var /** @type {Object} */ superClass;
if (leftOperand == null || rightOperand == null)
return false;
if (rightOperand === Array) {
return (Array.isArray(leftOperand) && !(org.apache.royale.utils.Language.SYNTH_TAG_FIELD in leftOperand));
}
if (leftOperand instanceof rightOperand)
return true;
if (rightOperand === Object)
return true;
var /** @type {string} */ theType = typeof(leftOperand);
if (theType === 'string')
return rightOperand === String;
if (theType === 'number') {
if (rightOperand === Number)
return true;
}
if (theType === 'boolean')
return rightOperand === Boolean;
if (rightOperand.constructor === org.apache.royale.utils.Language._synthType)
return !!(rightOperand['checkIs'](leftOperand));
if (leftOperand.ROYALE_CLASS_INFO === undefined)
return false;
if (!org.apache.royale.utils.Language.isInitInterfaceMap) {
if (typeof(WeakMap) == "function") {
org.apache.royale.utils.Language.interfaceMap = new WeakMap();
}
org.apache.royale.utils.Language.isInitInterfaceMap = true;
}
var /** @type {Object} */ classInterfaceMap;
if (org.apache.royale.utils.Language.interfaceMap && org.apache.royale.utils.Language.interfaceMap.has(leftOperand.ROYALE_CLASS_INFO)) {
classInterfaceMap = org.apache.royale.utils.Language.interfaceMap.get(leftOperand.ROYALE_CLASS_INFO);
if (classInterfaceMap && classInterfaceMap.has(rightOperand))
return !!(classInterfaceMap.get(rightOperand));
}
if (leftOperand.ROYALE_CLASS_INFO && leftOperand.ROYALE_CLASS_INFO.interfaces) {
if (org.apache.royale.utils.Language.checkInterfaces(leftOperand, rightOperand)) {
if (org.apache.royale.utils.Language.interfaceMap) {
if (!org.apache.royale.utils.Language.interfaceMap.has(leftOperand.ROYALE_CLASS_INFO)) {
org.apache.royale.utils.Language.interfaceMap.set(leftOperand.ROYALE_CLASS_INFO, new WeakMap());
}
classInterfaceMap = org.apache.royale.utils.Language.interfaceMap.get(leftOperand.ROYALE_CLASS_INFO);
classInterfaceMap.set(rightOperand, true);
}
return true;
}
}
superClass = leftOperand.constructor.superClass_;
if (superClass) {
while (superClass && superClass.ROYALE_CLASS_INFO) {
if (superClass.ROYALE_CLASS_INFO.interfaces) {
if (org.apache.royale.utils.Language.checkInterfaces(superClass, rightOperand)) {
if (org.apache.royale.utils.Language.interfaceMap) {
if (!org.apache.royale.utils.Language.interfaceMap.has(leftOperand.ROYALE_CLASS_INFO)) {
org.apache.royale.utils.Language.interfaceMap.set(leftOperand.ROYALE_CLASS_INFO, new WeakMap());
}
classInterfaceMap = org.apache.royale.utils.Language.interfaceMap.get(leftOperand.ROYALE_CLASS_INFO);
classInterfaceMap.set(rightOperand, true);
}
return true;
}
}
superClass = superClass.constructor.superClass_;
}
}
if (org.apache.royale.utils.Language.interfaceMap) {
if (!org.apache.royale.utils.Language.interfaceMap.has(leftOperand.ROYALE_CLASS_INFO)) {
org.apache.royale.utils.Language.interfaceMap.set(leftOperand.ROYALE_CLASS_INFO, new WeakMap());
}
classInterfaceMap = org.apache.royale.utils.Language.interfaceMap.get(leftOperand.ROYALE_CLASS_INFO);
classInterfaceMap.set(rightOperand, false);
}
return false;
};