1 29 30 package com.caucho.quercus.program; 31 32 import com.caucho.quercus.env.Env; 33 import com.caucho.quercus.env.ObjectExtValue; 34 import com.caucho.quercus.env.QuercusClass; 35 import com.caucho.quercus.env.Value; 36 import com.caucho.quercus.expr.Expr; 37 import com.caucho.util.L10N; 38 39 import java.util.Map ; 40 import java.util.Set ; 41 42 45 abstract public class ClassDef { 46 private final static L10N L = new L10N(ClassDef.class); 47 48 private final String _name; 49 private final String _parentName; 50 51 private final String []_ifaceList; 52 53 protected ClassDef(String name, String parentName, String []ifaceList) 54 { 55 _name = name; 56 _parentName = parentName; 57 _ifaceList = ifaceList; 58 } 59 60 63 public String getName() 64 { 65 return _name; 66 } 67 68 71 public String getParentName() 72 { 73 return _parentName; 74 } 75 76 79 public String []getInterfaces() 80 { 81 return _ifaceList; 82 } 83 84 87 public boolean isAbstract() 88 { 89 return false; 90 } 91 92 95 public boolean isInterface() 96 { 97 return false; 98 } 99 100 103 public void initClass(QuercusClass cl) 104 { 105 } 106 107 110 public Value newInstance(Env env, QuercusClass qcl) 111 { 112 if (isAbstract()) { 113 throw env.errorException(L.l("abstract class '{0}' cannot be instantiated.", 114 getName())); 115 } 116 else if (isInterface()) { 117 throw env.errorException(L.l("interface '{0}' cannot be instantiated.", 118 getName())); 119 } 120 121 return new ObjectExtValue(qcl); 122 } 123 124 127 public Value callNew(Env env, Expr []args) 128 { 129 return null; 130 } 131 132 135 public Value callNew(Env env, Value []args) 136 { 137 return null; 138 } 139 140 143 public boolean isA(String name) 144 { 145 if (_name.equalsIgnoreCase(name)) 146 return true; 147 148 for (int i = 0; i < _ifaceList.length; i++) { 149 if (_ifaceList[i].equalsIgnoreCase(name)) 150 return true; 151 } 152 153 return false; 154 } 155 156 159 abstract public AbstractFunction findConstructor(); 160 161 164 public Expr findConstant(String name) 165 { 166 return null; 167 } 168 169 public String toString() 170 { 171 return "Class[" + getName() + "]"; 172 } 173 174 public Set <Map.Entry <String , Expr>> fieldSet() 175 { 176 return null; 177 } 178 179 public Set <Map.Entry <String , AbstractFunction>> functionSet() 180 { 181 return null; 182 } 183 } 184 185 | Popular Tags |