public override object ExecIdCall(IdFunctionObject f, Context cx, IScriptable scope, IScriptable thisObj, object [] args) { if (!f.HasTag(XMLOBJECT_TAG)) { return(base.ExecIdCall(f, cx, scope, thisObj, args)); } int id = f.MethodId; if (id == Id_constructor) { return(JsConstructor(cx, thisObj == null, args)); } // All XML.prototype methods require thisObj to be XML if (!(thisObj is XMLList)) { throw IncompatibleCallError(f); } XMLList realThis = (XMLList)thisObj; XMLName xmlName; switch (id) { case Id_attribute: xmlName = XMLName.Parse(lib, cx, GetArgSafe(args, 0)); return(realThis.Attribute(xmlName)); case Id_attributes: return(realThis.Attributes()); case Id_child: xmlName = XMLName.Parse(lib, cx, GetArgSafe(args, 0)); if (xmlName == null) { long index = ScriptRuntime.lastUint32Result(cx); return(realThis.Child(index)); } else { return(realThis.Child(xmlName)); } case Id_children: return(realThis.Children()); case Id_contains: return(realThis.Contains(GetArgSafe(args, 0))); case Id_copy: return(realThis.Copy()); case Id_descendants: { xmlName = (args.Length == 0) ? XMLName.FormStar() : XMLName.Parse(lib, cx, GetArgSafe(args, 0)); return(realThis.Descendants(xmlName)); } case Id_hasOwnProperty: xmlName = XMLName.Parse(lib, cx, GetArgSafe(args, 0)); return(realThis.HasOwnProperty(xmlName)); case Id_hasComplexContent: return(realThis.HasComplexContent()); case Id_hasSimpleContent: return(realThis.HasSimpleContent()); case Id_length: return(realThis.Length()); case Id_normalize: realThis.Normalize(); return(Undefined.Value); case Id_parent: return(realThis.Parent()); case Id_processingInstructions: xmlName = (args.Length > 0) ? XMLName.Parse(lib, cx, args [0]) : XMLName.FormStar(); return(realThis.ProcessingInstructions(xmlName)); case Id_propertyIsEnumerable: { return(realThis.PropertyIsEnumerable(GetArgSafe(args, 0))); } case Id_text: return(realThis.Text()); case Id_toString: return(realThis.ToString()); case Id_toXMLString: return(realThis.ToXMLString()); case Id_valueOf: return(realThis); case Id_addNamespace: return(realThis.DelegateTo("addNamespace").AddNamespace(GetArgSafe(args, 0))); case Id_appendChild: return(realThis.DelegateTo("appendChild").AppendChild(GetArgSafe(args, 0))); case Id_childIndex: return(realThis.DelegateTo("childIndex").ChildIndex()); case Id_inScopeNamespaces: return(realThis.DelegateTo("inScopeNamespaces").InScopeNamespaces()); case Id_insertChildAfter: return(realThis.DelegateTo("insertChildAfter").InsertChildAfter(GetArgSafe(args, 0), GetArgSafe(args, 1))); case Id_insertChildBefore: return(realThis.DelegateTo("insertChildBefore").InsertChildBefore(GetArgSafe(args, 0), GetArgSafe(args, 1))); case Id_localName: return(realThis.DelegateTo("localName").LocalName()); case Id_name: return(realThis.DelegateTo("name").Name()); case Id_namespace: return(realThis.DelegateTo("namespace").Namespace(GetArgSafe(args, 0))); case Id_namespaceDeclarations: return(realThis.DelegateTo("namespaceDeclarations").NamespaceDeclarations()); case Id_nodeKind: return(realThis.DelegateTo("nodeKind").NodeKind()); case Id_prependChild: return(realThis.DelegateTo("prependChild").PrependChild(GetArgSafe(args, 0))); case Id_removeNamespace: return(realThis.DelegateTo("removeNamespace").RemoveNamespace(GetArgSafe(args, 0))); case Id_replace: return(realThis.DelegateTo("replace").Replace(GetArgSafe(args, 0), GetArgSafe(args, 1))); case Id_setChildren: return(realThis.DelegateTo("setChildren").SetChildren(GetArgSafe(args, 0))); case Id_setLocalName: realThis.DelegateTo("setLocalName").SetLocalName(GetArgSafe(args, 0)); return(Undefined.Value); case Id_setName: realThis.DelegateTo("setName").SetName(GetArgSafe(args, 0)); return(Undefined.Value); case Id_setNamespace: realThis.DelegateTo("setNamespace").SetNamespace(GetArgSafe(args, 0)); return(Undefined.Value); } throw new System.ArgumentException(System.Convert.ToString(id)); }