/******************************************************************************* * Copyright (c) 2007, 2008 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: *     IBM Corporation - initial API and implementation ****************************************************************************** * **//**  * Object plugins()  * @type plugins  * @super Array  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537477.aspx*/function plugins(){};plugins.prototype= new Array();/**  * Property length  * @type Number  * @returns {Number}
  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534101.aspx*/plugins.prototype.length=0;/**  * function item(vIndex,iSubindex)  * @param {Number} vIndex  * @param {Number} iSubindex  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536460.aspx*/plugins.prototype.item=function(vIndex,iSubindex){};/**  * function item(vIndex,iSubindex)  * @param {Number} vIndex  * @param {Number} iSubindex  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536460.aspx*/plugins.prototype.item=function(vIndex,iSubindex){};/**  * Property all  * @type all  * @returns {all}
  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537434.aspx*/plugins.prototype.all= new all();/**  * function namedItem(sName)  * @param {String} sName  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536634.aspx*/plugins.prototype.namedItem=function(sName){};/**  * function tags(sTag)  * @param {Variant} sTag  * @memberOf plugins  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536776.aspx*/plugins.prototype.tags=function(sTag){};