⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 esarraywrap.java

📁 RESIN 3.2 最新源码
💻 JAVA
字号:
/* * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the *   Free SoftwareFoundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.es;import com.caucho.util.IntMap;import java.util.Iterator;/** * JavaScript object */class ESArrayWrap extends ESJavaWrapper {  static ESId LENGTH = ESId.intern("length");  protected ESArrayWrap() {}  protected int length() { return 0; }  public ESBase getProperty(int i) throws Throwable { return esEmpty; }  public ESBase delete(int i) throws ESException { return ESBoolean.FALSE; }  public void setProperty(int i, ESBase value) throws Throwable { }  public ESBase getProperty(ESString name) throws Throwable  {    if (name.equals(LENGTH))      return ESNumber.create(length());    try { // XXX: to fix mips bugs      double value = name.toNum();      int iValue = (int) value;      if (iValue == value)	return getProperty(iValue);      return super.getProperty(name);    } catch (Exception e) {      return super.getProperty(name);    }  }  public void setProperty(ESString name, ESBase value) throws Throwable  {    if (name.equals(LENGTH))      return;        try { // XXX: to fix mips bugs      double dIndex = name.toNum();      int index = (int) dIndex;      if (index == dIndex)	setProperty(index, value);      else	super.setProperty(name, value);    } catch (Exception e) {      super.setProperty(name, value);    }  }  public ESBase delete(ESString name) throws Throwable  {    if (name.equals(LENGTH))      return ESBoolean.FALSE;    try {      double dIndex = name.toNum();      int index = (int) dIndex;      if (index == dIndex)	return delete(index);      else	return super.delete(name);    } catch (Exception e) {      return super.delete(name);    }  }    class ArrayIterator implements Iterator {    int length;    int i;    public boolean hasNext() { return i < length; }    public Object next()    {      try {	return i < length ? getProperty(i++) : ESBase.esNull;      } catch (Throwable e) {	return ESBase.esNull;      }    }    public void remove() { }    ArrayIterator()    {      length = length();    }  }  public Iterator keys() throws ESException  {    return new ArrayIterator();  }  public ESString toStr() throws Throwable  {    return (ESString) NativeArray.toString(this);  }  public ESString toSource(IntMap map, boolean isLoopPass) throws Throwable  {    return ESArray.arrayToSource(this, map, isLoopPass);  }  protected ESArrayWrap(ESBase proto, Object value)  {    super(proto, value);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -