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

📄 nativeboolean.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;/** * JavaScript object */class NativeBoolean extends Native {  static final int NEW = 1;  static final int TO_STRING = NEW + 1;  static final int VALUE_OF = TO_STRING + 1;  /**   * Create a new object based on a prototype   */  private NativeBoolean(String name, int n, int len)  {    super(name, len);    this.n = n;  }  /**   * Creates the initial native Boolean object   */  static ESObject create(Global resin)  {    Native nativeBool = new NativeBoolean("Boolean", NEW, 1);    ESWrapper boolProto = new ESWrapper("Boolean", resin.objProto,                                        ESBoolean.FALSE);    NativeWrapper bool = new NativeWrapper(resin, nativeBool,                                           boolProto, ESThunk.BOOL_THUNK);    resin.boolProto = boolProto;    put(boolProto, "toString", TO_STRING, 0, DONT_ENUM);    put(boolProto, "valueOf", VALUE_OF, 0, DONT_ENUM);    bool.setClean();    boolProto.setClean();    return bool;  }  private static void put(ESObject obj, String name, int n, int len,                          int flags)  {    obj.put(name, new NativeBoolean(name, n, len), flags);  }  public ESBase call(Call eval, int length) throws Throwable  {    switch (n) {    case NEW:      if (length == 0)        return ESBoolean.FALSE;      else        return ESBoolean.create(eval.getArg(0).toBoolean());    case TO_STRING:      try {        return ((ESBase) ((ESWrapper) eval.getArg(-1)).value).toStr();      } catch (ClassCastException e) {        if (eval.getArg(-1) instanceof ESBoolean)          return eval.getArg(-1);        if (eval.getArg(-1) instanceof ESThunk)          return ((ESBase) ((ESWrapper) ((ESThunk) eval.getArg(-1)).getObject()).value).toStr();        throw new ESException("toString expected boolean object");      }    case VALUE_OF:      try {        return (ESBase) ((ESWrapper) eval.getArg(-1)).value;      } catch (ClassCastException e) {        if (eval.getArg(-1) instanceof ESBoolean)          return eval.getArg(-1);        if (eval.getArg(-1) instanceof ESThunk)          return (ESBase) ((ESWrapper) ((ESThunk) eval.getArg(-1)).getObject()).value;        throw new ESException("valueOf expected boolean object");      }    default:      throw new RuntimeException("Unknown object function");    }  }  public ESBase construct(Call eval, int length) throws Throwable  {    if (n != NEW)      return super.construct(eval, length);    ESBase value;    if (length == 0)      value = ESBoolean.FALSE;    else      value = ESBoolean.create(eval.getArg(0).toBoolean());    return value.toObject();  }}

⌨️ 快捷键说明

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