/******************************************************************************* * 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 links()  * @type links  * @super Array  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537465.aspx*/function links(){};links.prototype= new Array();/**  * Property length  * @type Number  * @returns {Number}
  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms534101.aspx*/links.prototype.length=0;/**  * function item(vIndex,iSubindex)  * @param {Number} vIndex  * @param {Number} iSubindex  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536460.aspx*/links.prototype.item=function(vIndex,iSubindex){};/**  * function item(vIndex,iSubindex)  * @param {Number} vIndex  * @param {Number} iSubindex  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536460.aspx*/links.prototype.item=function(vIndex,iSubindex){};/**  * Property all  * @type all  * @returns {all}
  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms537434.aspx*/links.prototype.all= new all();/**  * function namedItem(sName)  * @param {String} sName  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536634.aspx*/links.prototype.namedItem=function(sName){};/**  * function tags(sTag)  * @param {Variant} sTag  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536776.aspx*/links.prototype.tags=function(sTag){};/**  * function urns(sUrn)  * @param {String} sUrn  * @memberOf links  * @since JScript 5.6  * @see http://msdn2.microsoft.com/en-us/library/ms536780.aspx*/links.prototype.urns=function(sUrn){};