compiledclassdef.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 364 行
JAVA
364 行
/* * Copyright (c) 1998-2008 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 Software Foundation, Inc. * 59 Temple Place, Suite 330 * Boston, MA 02111-1307 USA * * @author Scott Ferguson */package com.caucho.quercus.program;import com.caucho.quercus.QuercusRuntimeException;import com.caucho.quercus.Location;import com.caucho.quercus.env.ArrayValue;import com.caucho.quercus.env.ArrayValueImpl;import com.caucho.quercus.env.Env;import com.caucho.quercus.env.QuercusClass;import com.caucho.quercus.env.Value;import com.caucho.quercus.expr.Expr;import com.caucho.util.IdentityIntMap;import java.util.ArrayList;/** * Represents a PHP class value. */public class CompiledClassDef extends ClassDef { private final Class _compiledClass; private final ArrayList<String> _fieldNames = new ArrayList<String>(); private final IdentityIntMap _fieldMap = new IdentityIntMap(); protected ArrayValue _extFields = new ArrayValueImpl(); protected Value _parent; protected boolean _isFinal; public CompiledClassDef(String name, String parent, String []ifaceList, Class compiledClass) { this(null, name, parent, ifaceList, compiledClass); } public CompiledClassDef(Location location, String name, String parent, String []ifaceList, Class compiledClass) { super(location, name, parent, ifaceList); _compiledClass = compiledClass; } public CompiledClassDef(Location location, String name, String parent, String []ifaceList, Class compiledClass, boolean isFinal) { this(location, name, parent, ifaceList, compiledClass); _isFinal = isFinal; } /** * Initialize the quercus class. */ @Override public void initClass(QuercusClass cl) { try { CompiledClass compClass = (CompiledClass) _compiledClass.newInstance(); compClass.init(cl); } catch (Exception e) { throw new QuercusRuntimeException(e); } } /* * Returns true for a final class. */ @Override public boolean isFinal() { return _isFinal; } /** * Returns the field index. */ public int findFieldIndex(String name) { return _fieldMap.get(name); } /** * Returns the key set. */ public ArrayList<String> getFieldNames() { return _fieldNames; } /** * Returns the field index. */ protected void addFieldIndex(String name, int id) { _fieldMap.put(name, id); _fieldNames.add(name); } /** * Returns the constructor */ @Override public AbstractFunction findConstructor() { return null; } /** * Creates a new instance. */ public void initInstance(Env env, Value value) { } /** * Adds a value. */ public Value get(Value name) { throw new UnsupportedOperationException(); /* if (_extFields != null) { Value value = _extFields.get(name); return value; } else return NullValue.NULL; */ } /** * Returns a reference to the field */ public Value getRef(Value name) { throw new UnsupportedOperationException(); /* if (_extFields == null) _extFields = new ArrayValue(); Value ref = _extFields.getRef(name); return ref; */ } /** * Returns a reference to the field */ public Value getArgRef(Value name) { throw new UnsupportedOperationException(); /* if (_extFields == null) _extFields = new ArrayValue(); return _extFields.getArgRef(name); */ } /** * Returns the field value, if unset, creates an array. */ public Value getArray(Value name) { throw new UnsupportedOperationException(); /* Value value = get(name); if (! value.isset()) { value = new ArrayValue(); put(name, value); } return value; */ } /** * Returns the field value, if unset, creates an object. */ public Value getObject(Env env, Value name) { throw new UnsupportedOperationException(); /* Value value = get(name); if (! value.isset()) { value = env.createObject(); put(name, value); } return value; */ } /** * Returns the field value, if unset, creates an ArgGetValue. */ public Value getArg(Value name) { throw new UnsupportedOperationException(); /* Value value = get(name); if (value.isset()) { return value; } else { // quercus/3d55 return new ArgGetValue(this, name); } return null; */ } /** * Adds a value. */ public Value put(Value name, Value value) { throw new UnsupportedOperationException(); /* if (_extFields == null) _extFields = new ArrayValue(); _extFields.put(name, value); return value; */ } /** * Adds a value. */ public Value put(Value value) { throw new UnsupportedOperationException(); /* if (_extFields == null) _extFields = new ArrayValue(); _extFields.put(value); return value; */ } /** * Adds a value. */ public Value putRef() { throw new UnsupportedOperationException(); /* // quercus/3d8i if (_extFields == null) _extFields = new ArrayValue(); return _extFields.putRef(); */ } /** * Removes a value. */ public Value remove(Value name) { throw new UnsupportedOperationException(); /* // quercus/3d91 if (_extFields != null) { Value value = _extFields.remove(name); return value; } else return NullValue.NULL; */ } /** * Creates a new instance. */ public Value newInstance() { /* try { return getClass().newInstance(); } catch (Exception e) { throw new QuercusRuntimeException(e); } */ throw new UnsupportedOperationException(); } /** * Eval new */ @Override public Value callNew(Env env, Expr []args) { return null; } /** * Eval new */ @Override public Value callNew(Env env, Value []args) { return null; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?