亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? idscriptableobject.java

?? 主要的怎么樣結合java 和 javascript!
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* -*- Mode: java; tab-width: 4; indent-tabs-mode: 1; c-basic-offset: 4 -*- * * The contents of this file are subject to the Netscape Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code is Rhino code, released * May 6, 1999. * * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are * Copyright (C) 1997-1999 Netscape Communications Corporation. All * Rights Reserved. * * Contributor(s): * Igor Bukanov * * Alternatively, the contents of this file may be used under the * terms of the GNU Public License (the "GPL"), in which case the * provisions of the GPL are applicable instead of those above. * If you wish to allow use of your version of this file only * under the terms of the GPL and not to allow others to use your * version of this file under the NPL, indicate your decision by * deleting the provisions above and replace them with the notice * and other provisions required by the GPL.  If you do not delete * the provisions above, a recipient may use your version of this * file under either the NPL or the GPL. */package org.mozilla.javascript;import java.io.*;/**Base class for native object implementation that uses IdFunctionObject to export its methods to script via <class-name>.prototype object.Any descendant should implement at least the following methods:    findInstanceIdInfo    getInstanceIdName    execIdCall    methodArityTo define non-function properties, the descendant should override    getInstanceIdValue    setInstanceIdValueto get/set property value and provide its default attributes.To customize initializition of constructor and protype objects, descendantmay override scopeInit or fillConstructorProperties methods.*/public abstract class IdScriptableObject extends ScriptableObject    implements IdFunctionCall{    private transient volatile PrototypeValues prototypeValues;    private static final class PrototypeValues implements Serializable    {        static final long serialVersionUID = 3038645279153854371L;        private static final int VALUE_SLOT = 0;        private static final int NAME_SLOT = 1;        private static final int SLOT_SPAN = 2;        private IdScriptableObject obj;        private Object tag;        private int maxId;        private volatile Object[] valueArray;        private volatile short[] attributeArray;        private volatile int lastFoundId = 1;        // The following helps to avoid creation of valueArray during runtime        // initialization for common case of "constructor" property        int constructorId;        private IdFunctionObject constructor;        private short constructorAttrs;        PrototypeValues(IdScriptableObject obj, int maxId)        {            if (obj == null) throw new IllegalArgumentException();            if (maxId < 1) throw new IllegalArgumentException();            this.obj = obj;            this.maxId = maxId;        }        final int getMaxId()        {            return maxId;        }        final void initValue(int id, String name, Object value, int attributes)        {            if (!(1 <= id && id <= maxId))                throw new IllegalArgumentException();            if (name == null)                throw new IllegalArgumentException();            if (value == NOT_FOUND)                throw new IllegalArgumentException();            ScriptableObject.checkValidAttributes(attributes);            if (obj.findPrototypeId(name) != id)                throw new IllegalArgumentException(name);            if (id == constructorId) {                if (!(value instanceof IdFunctionObject)) {                    throw new IllegalArgumentException("consructor should be initialized with IdFunctionObject");                }                constructor = (IdFunctionObject)value;                constructorAttrs = (short)attributes;                return;            }            initSlot(id, name, value, attributes);        }        private void initSlot(int id, String name, Object value,                              int attributes)        {            Object[] array = valueArray;            if (array == null)                throw new IllegalStateException();            if (value == null) {                value = UniqueTag.NULL_VALUE;            }            int index = (id - 1) * SLOT_SPAN;            synchronized (this) {                Object value2 = array[index + VALUE_SLOT];                if (value2 == null) {                    array[index + VALUE_SLOT] = value;                    array[index + NAME_SLOT] = name;                    attributeArray[id - 1] = (short)attributes;                } else {                    if (!name.equals(array[index + NAME_SLOT]))                         throw new IllegalStateException();                }            }        }        final IdFunctionObject createPrecachedConstructor()        {            if (constructorId != 0) throw new IllegalStateException();            constructorId = obj.findPrototypeId("constructor");            if (constructorId == 0) {                throw new IllegalStateException(                    "No id for constructor property");            }            obj.initPrototypeId(constructorId);            if (constructor == null) {                throw new IllegalStateException(                    obj.getClass().getName()+".initPrototypeId() did not "                    +"initialize id="+constructorId);            }            constructor.initFunction(obj.getClassName(),                                     ScriptableObject.getTopLevelScope(obj));            constructor.markAsConstructor(obj);            return constructor;        }        final int findId(String name)        {            Object[] array = valueArray;            if (array == null) {                return obj.findPrototypeId(name);            }            int id = lastFoundId;            if (name == array[(id - 1) * SLOT_SPAN + NAME_SLOT]) {                return id;            }            id = obj.findPrototypeId(name);            if (id != 0) {                int nameSlot = (id - 1) * SLOT_SPAN + NAME_SLOT;                // Make cache to work!                array[nameSlot] = name;                lastFoundId = id;            }            return id;        }        final boolean has(int id)        {            Object[] array = valueArray;            if (array == null) {                // Not yet initialized, assume all exists                return true;            }            int valueSlot = (id  - 1) * SLOT_SPAN + VALUE_SLOT;            Object value = array[valueSlot];            if (value == null) {                // The particular entry has not been yet initialized                return true;            }            return value != NOT_FOUND;        }        final Object get(int id)        {            Object value = ensureId(id);            if (value == UniqueTag.NULL_VALUE) {                value = null;            }            return value;        }        final void set(int id, Scriptable start, Object value)        {            if (value == NOT_FOUND) throw new IllegalArgumentException();            ensureId(id);            int attr = attributeArray[id - 1];            if ((attr & READONLY) == 0) {                if (start == obj) {                    if (value == null) {                        value = UniqueTag.NULL_VALUE;                    }                    int valueSlot = (id  - 1) * SLOT_SPAN + VALUE_SLOT;                    synchronized (this) {                        valueArray[valueSlot] = value;                    }                }                else {                    int nameSlot = (id  - 1) * SLOT_SPAN + NAME_SLOT;                    String name = (String)valueArray[nameSlot];                    start.put(name, start, value);                }            }        }        final void delete(int id)        {            ensureId(id);            int attr = attributeArray[id - 1];            if ((attr & PERMANENT) == 0) {                int valueSlot = (id  - 1) * SLOT_SPAN + VALUE_SLOT;                synchronized (this) {                    valueArray[valueSlot] = NOT_FOUND;                    attributeArray[id - 1] = EMPTY;                }            }        }        final int getAttributes(int id)        {            ensureId(id);            return attributeArray[id - 1];        }        final void setAttributes(int id, int attributes)        {            ScriptableObject.checkValidAttributes(attributes);            ensureId(id);            synchronized (this) {                attributeArray[id - 1] = (short)attributes;            }        }        final Object[] getNames(boolean getAll, Object[] extraEntries)        {            Object[] names = null;            int count = 0;            for (int id = 1; id <= maxId; ++id) {                Object value = ensureId(id);                if (getAll || (attributeArray[id - 1] & DONTENUM) == 0) {                    if (value != NOT_FOUND) {                        int nameSlot = (id  - 1) * SLOT_SPAN + NAME_SLOT;                        String name = (String)valueArray[nameSlot];                        if (names == null) {                            names = new Object[maxId];                        }                        names[count++] = name;                    }                }            }            if (count == 0) {                return extraEntries;            } else if (extraEntries == null || extraEntries.length == 0) {                if (count != names.length) {                    Object[] tmp = new Object[count];                    System.arraycopy(names, 0, tmp, 0, count);                    names = tmp;                }                return names;            } else {                int extra = extraEntries.length;                Object[] tmp = new Object[extra + count];                System.arraycopy(extraEntries, 0, tmp, 0, extra);                System.arraycopy(names, 0, tmp, extra, count);                return tmp;            }        }        private Object ensureId(int id)        {            Object[] array = valueArray;            if (array == null) {                synchronized (this) {                    array = valueArray;                    if (array == null) {                        array = new Object[maxId * SLOT_SPAN];                        valueArray = array;                        attributeArray = new short[maxId];                    }                }            }            int valueSlot = (id  - 1) * SLOT_SPAN + VALUE_SLOT;            Object value = array[valueSlot];            if (value == null) {                if (id == constructorId) {                    initSlot(constructorId, "constructor",                             constructor, constructorAttrs);                    constructor = null; // no need to refer it any longer                } else {                    obj.initPrototypeId(id);                }                value = array[valueSlot];                if (value == null) {                    throw new IllegalStateException(                        obj.getClass().getName()+".initPrototypeId(int id) "                        +"did not initialize id="+id);                }            }            return value;        }    }    public IdScriptableObject()    {    }    public IdScriptableObject(Scriptable scope, Scriptable prototype)    {        super(scope, prototype);    }    protected final Object defaultGet(String name)    {        return super.get(name, this);    }    protected final void defaultPut(String name, Object value)    {        super.put(name, this, value);    }    public boolean has(String name, Scriptable start)    {        int info = findInstanceIdInfo(name);        if (info != 0) {            int attr = (info >>> 16);            if ((attr & PERMANENT) != 0) {                return true;            }            int id = (info & 0xFFFF);            return NOT_FOUND != getInstanceIdValue(id);        }        if (prototypeValues != null) {            int id = prototypeValues.findId(name);            if (id != 0) {                return prototypeValues.has(id);            }        }        return super.has(name, start);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品传媒在线观看| 久久99精品视频| 蓝色福利精品导航| 91捆绑美女网站| 国产午夜亚洲精品理论片色戒| 亚洲已满18点击进入久久| 国产成人综合视频| 91麻豆精品国产91久久久资源速度| 国产精品网站一区| 国产成人av电影| 久久综合九色综合97_久久久| 午夜精品影院在线观看| 99精品视频中文字幕| 久久先锋影音av鲁色资源网| 日本vs亚洲vs韩国一区三区| 91浏览器打开| 亚洲欧美另类小说视频| 成人av午夜电影| 国产精品视频yy9299一区| 加勒比av一区二区| 26uuu亚洲综合色| 国产一区二区不卡老阿姨| 精品国产免费视频| 极品瑜伽女神91| 26uuu欧美| 国产精品一区二区久久不卡| 精品国产一区a| 久久99久久99小草精品免视看| 日韩欧美一二三四区| 免费久久99精品国产| 日韩欧美你懂的| 国产资源在线一区| 日本一区二区视频在线| 大陆成人av片| 亚洲日本va午夜在线电影| 99视频热这里只有精品免费| 亚洲欧洲国产日韩| 欧美午夜理伦三级在线观看| 亚洲成人手机在线| 欧美一二三区在线| 国产在线精品免费| 国产精品日韩成人| 在线精品国精品国产尤物884a| 亚洲一卡二卡三卡四卡无卡久久| 欧美无人高清视频在线观看| 亚洲成人精品一区二区| 欧美一级久久久久久久大片| 久久99国产精品尤物| 亚洲国产精品激情在线观看| 一本一本大道香蕉久在线精品| 午夜精品福利视频网站| 日韩免费高清视频| 成人美女在线观看| 亚洲一卡二卡三卡四卡| 精品88久久久久88久久久| caoporm超碰国产精品| 午夜不卡av在线| 久久夜色精品一区| 色综合久久久久久久久| 日本中文在线一区| 中文字幕欧美一| 欧美精品久久天天躁| 国产精品99久久久久久久女警 | 久久久久久久久久久电影| 成人中文字幕在线| 午夜电影一区二区三区| 国产欧美一区二区在线| 欧美三级日本三级少妇99| 国模少妇一区二区三区| 亚洲国产美女搞黄色| 久久精品一区二区三区四区| 欧美性猛片xxxx免费看久爱| 国内精品国产成人| 亚洲一区二区三区自拍| 久久久三级国产网站| 欧美日韩二区三区| 成人av网在线| 国产一区二三区| 性久久久久久久久| 亚洲免费在线视频| 欧美激情中文字幕| 欧美一区二区三区免费在线看| 波多野结衣中文一区| 精品一区二区三区视频在线观看| 亚洲一区在线电影| 国产精品国产成人国产三级| 精品少妇一区二区三区日产乱码| 99精品久久只有精品| 精品一区二区三区视频| 午夜精品久久久久久久99樱桃| 亚洲婷婷综合久久一本伊一区| 精品国一区二区三区| 欧美日韩aaaaa| 色婷婷综合久久久久中文| 国产成人aaa| 国产精品一区专区| 麻豆精品精品国产自在97香蕉 | 狠狠久久亚洲欧美| 日韩国产一二三区| 亚洲成人av中文| 亚洲一区二三区| 18成人在线观看| 亚洲欧美激情视频在线观看一区二区三区| 久久综合狠狠综合久久激情 | 在线观看日韩精品| 91麻豆精东视频| 色综合久久久网| 成人av电影免费在线播放| 粉嫩一区二区三区在线看| 国产综合久久久久影院| 国产麻豆午夜三级精品| 国产专区综合网| 国产高清精品在线| 国产91精品一区二区麻豆网站| 国产精品一区免费视频| 国产成人精品一区二区三区四区| 国产在线视频不卡二| 国产九色精品成人porny| 国产乱子轮精品视频| 国产激情偷乱视频一区二区三区| 国产精品一区二区黑丝| av一二三不卡影片| 91丝袜呻吟高潮美腿白嫩在线观看| k8久久久一区二区三区| 色偷偷88欧美精品久久久| 欧洲一区二区av| 91精品一区二区三区久久久久久| 欧美一区二区不卡视频| 久久嫩草精品久久久久| 国产精品丝袜久久久久久app| 亚洲视频在线一区观看| 一区二区免费看| 青青草原综合久久大伊人精品| 免费观看在线综合| 成人美女视频在线观看| 在线一区二区三区四区五区| 欧美吻胸吃奶大尺度电影| 3atv一区二区三区| 久久综合精品国产一区二区三区 | 成人黄色免费短视频| 色94色欧美sute亚洲线路一久| 91精品免费在线观看| 久久久九九九九| 亚洲一区二区三区四区在线观看 | 色综合久久88色综合天天免费| 91黄色激情网站| 91精品麻豆日日躁夜夜躁| 国产农村妇女毛片精品久久麻豆| 亚洲精品成人精品456| 卡一卡二国产精品| 99久久精品免费看国产免费软件| 欧美片网站yy| 日本一区二区三区免费乱视频| 亚洲一区二区av在线| 国内久久婷婷综合| 欧美视频一区二区在线观看| 精品国产免费一区二区三区四区| 亚洲欧洲综合另类| 久久精品国产免费| 欧美三级中文字幕在线观看| 精品成人私密视频| 五月婷婷久久综合| 99视频一区二区三区| 精品免费视频.| 亚洲制服丝袜在线| 成人爽a毛片一区二区免费| 欧美高清视频一二三区| 自拍偷拍亚洲综合| 精品一二三四区| 欧美日韩视频在线一区二区| 国产精品色噜噜| 国产一区二区三区免费在线观看| 欧美丰满一区二区免费视频| 国产精品卡一卡二| 国产高清精品在线| 精品成a人在线观看| 天天综合网 天天综合色| 91老师国产黑色丝袜在线| 国产精品午夜春色av| 国产一区在线观看视频| 欧美变态口味重另类| 亚洲福利视频导航| 色88888久久久久久影院野外| 国产精品国产三级国产三级人妇| 韩国女主播成人在线| 91精品婷婷国产综合久久竹菊| 亚洲精品欧美激情| 色8久久精品久久久久久蜜| 中文字幕一区二区三区四区| 成人免费av网站| 国产精品素人一区二区| 国产成人亚洲综合色影视| 久久久久久**毛片大全| 国产传媒日韩欧美成人| 久久婷婷成人综合色| 国产毛片精品一区| 国产女同互慰高潮91漫画| 成人永久免费视频| 国产精品久久久久久久第一福利 | 国产精品一区二区男女羞羞无遮挡 |