Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*     */ package net.sf.cglib.core;
  /*     */ 
  /*     */ import java.util.HashMap;
  /*     */ import java.util.Map;
  /*     */ import net.sf.cglib.asm.Attribute;
  /*     */ import net.sf.cglib.asm.ClassAdapter;
  /*     */ import net.sf.cglib.asm.ClassVisitor;
  /*     */ import net.sf.cglib.asm.CodeAdapter;
  /*     */ import net.sf.cglib.asm.CodeVisitor;
 /*     */ import net.sf.cglib.asm.Type;
 /*     */ 
 /*     */ public class ClassEmitter extends ClassAdapter
 /*     */ {
 /*     */   private ClassInfo classInfo;
 /*     */   private Map fieldInfo;
 /*     */   private static int hookCounter;
 /*     */   private CodeVisitor rawStaticInit;
 /*     */   private CodeEmitter staticInit;
 /*     */   private CodeEmitter staticHook;
 /*     */   private Signature staticHookSig;
 /*     */ 
 /*     */   public ClassEmitter(ClassVisitor cv)
 /*     */   {
 /*  36 */     super(null);
 /*  37 */     setTarget(cv);
 /*     */   }
 /*     */ 
 /*     */   public ClassEmitter() {
 /*  41 */     super(null);
 /*     */   }
 /*     */ 
 /*     */   public void setTarget(ClassVisitor cv) {
 /*  45 */     this. = cv;
 /*  46 */     this. = new HashMap();
 /*     */ 
 /*  49 */     this. = (this. = null);
 /*  50 */     this. = null;
 /*     */   }
 /*     */ 
 /*     */   private static synchronized int getNextHook() {
 /*  54 */     return ++;
 /*     */   }
 /*     */ 
 /*     */   public ClassInfo getClassInfo() {
 /*  58 */     return this.;
 /*     */   }
 /*     */ 
 /*     */   public void begin_class(int versionint accessString classNameType superTypeType[] interfacesString sourceFile) {
 /*  62 */     Type classType = Type.getType("L" + className.replace('.''/') + ";");
 /*  63 */     this. = new ClassInfo(classTypesuperTypeinterfacesaccess) {
 /*     */       public Type getType() {
 /*  65 */         return this.;
 /*     */       }
 /*     */       public Type getSuperType() {
 /*  68 */         return this. != null ? this. : .;
 /*     */       }
 /*     */       public Type[] getInterfaces() {
 /*  71 */         return this.;
 /*     */       }
 /*     */       public int getModifiers() {
 /*  74 */         return this.;
 /*     */       }
 /*     */     };
 /*  77 */     this..visit(versionaccessthis..getType().getInternalName(), this..getSuperType().getInternalName(), TypeUtils.toInternalNames(interfaces), sourceFile);
 /*     */ 
 /*  83 */     init();
 /*     */   }
 /*     */ 
 /*     */   public CodeEmitter getStaticHook() {
 /*  87 */     if (TypeUtils.isInterface(getAccess())) {
 /*  88 */       throw new IllegalStateException("static hook is invalid for this class");
 /*     */     }
 /*  90 */     if (this. == null) {
 /*  91 */       this. = new Signature("CGLIB$STATICHOOK" + getNextHook(), "()V");
 /*  92 */       this. = begin_method(8, this.nullnull);
 /*     */ 
 /*  96 */       if (this. != null) {
 /*  97 */         this..invoke_static_this(this.);
 /*     */       }
 /*     */     }
 /* 100 */     return this.;
 /*     */   }
 /*     */ 
 /*     */   protected void init() {
 /*     */   }
 /*     */ 
 /*     */   public int getAccess() {
 /* 107 */     return this..getModifiers();
 /*     */   }
 /*     */ 
 /*     */   public Type getClassType() {
 /* 111 */     return this..getType();
 /*     */   }
 /*     */ 
 /*     */   public Type getSuperType() {
 /* 115 */     return this..getSuperType();
 /*     */   }
 /*     */ 
 /*     */   public void end_class() {
/* 119 */     if ((this. != null) && (this. == null))
/*     */     {
/* 121 */       begin_static();
/*     */     }
/* 123 */     if (this. != null) {
/* 124 */       this..return_value();
/* 125 */       this..end_method();
/* 126 */       this..visitInsn(177);
/* 127 */       this..visitMaxs(0, 0);
/* 128 */       this. = (this. = null);
/* 129 */       this. = null;
/*     */     }
/* 131 */     this..visitEnd();
/*     */   }
/*     */ 
/*     */   public CodeEmitter begin_method(int accessSignature sigType[] exceptionsAttribute attrs) {
/* 135 */     if (this. == null)
/* 136 */       throw new IllegalStateException("classInfo is null! " + this);
/* 137 */     CodeVisitor v = this..visitMethod(accesssig.getName(), sig.getDescriptor(), TypeUtils.toInternalNames(exceptions), attrs);
/*     */ 
/* 142 */     if ((sig.equals(.)) && (!TypeUtils.isInterface(getAccess()))) {
/* 143 */       this. = v;
/* 144 */       CodeVisitor wrapped = new CodeAdapter(v) {
/*     */         public void visitMaxs(int maxStackint maxLocals) {
/*     */         }
/*     */ 
/*     */         public void visitInsn(int insn) {
/* 149 */           if (insn != 177)
/* 150 */             super.visitInsn(insn);
/*     */         }
/*     */       };
/* 154 */       this. = new CodeEmitter(thiswrappedaccesssigexceptions);
/* 155 */       if (this. == null)
/*     */       {
/* 157 */         getStaticHook();
/*     */       }
/* 159 */       else this..invoke_static_this(this.);
/*     */ 
/* 161 */       return this.;
/* 162 */     }if (sig.equals(this.))
/* 163 */       return new CodeEmitter(thisvaccesssigexceptions) {
/*     */         public boolean isStaticHook() {
/* 165 */           return true;
/*     */         }
/*     */       };
/* 169 */     return new CodeEmitter(thisvaccesssigexceptions);
/*     */   }
/*     */ 
/*     */   public CodeEmitter begin_static()
/*     */   {
/* 174 */     return begin_method(8, .nullnull);
/*     */   }
/*     */ 
/*     */   public void declare_field(int accessString nameType typeObject valueAttribute attrs) {
/* 178 */     FieldInfo existing = (FieldInfo)this..get(name);
/* 179 */     FieldInfo info = new FieldInfo(accessnametypevalue);
/* 180 */     if (existing != null) {
/* 181 */       if (!info.equals(existing))
/* 182 */         throw new IllegalArgumentException("Field \"" + name + "\" has been declared differently");
/*     */     }
/*     */     else {
/* 185 */       this..put(nameinfo);
/* 186 */       this..visitField(accessnametype.getDescriptor(), valueattrs);
/*     */     }
/*     */   }
/*     */ 
/*     */   public void define_attribute(Attribute attrs) {
/* 191 */     this..visitAttribute(attrs);
/*     */   }
/*     */ 
/*     */   boolean isFieldDeclared(String name)
/*     */   {
/* 196 */     return this..get(name) != null;
/*     */   }
/*     */ 
/*     */   FieldInfo getFieldInfo(String name) {
/* 200 */     FieldInfo field = (FieldInfo)this..get(name);
/* 201 */     if (field == null) {
/* 202 */       throw new IllegalArgumentException("Field " + name + " is not declared in " + getClassType().getClassName());
/*     */     }
/* 204 */     return field;
/*     */   }
/*     */ 
/*     */   public void visit(int versionint accessString nameString superNameString[] interfacesString sourceFile)
/*     */   {
/* 244 */     begin_class(versionaccessname.replace('/''.'), TypeUtils.fromInternalName(superName), TypeUtils.fromInternalNames(interfaces), sourceFile);
/*     */   }
/*     */ 
/*     */   public void visitEnd()
/*     */   {
/* 253 */     end_class();
/*     */   }
/*     */ 
/*     */   public void visitField(int accessString nameString descObject valueAttribute attrs) {
/* 257 */     declare_field(accessname, Type.getType(desc), valueattrs);
/*     */   }
/*     */ 
/*     */   public CodeVisitor visitMethod(int accessString nameString descString[] exceptionsAttribute attrs)
/*     */   {
/* 263 */     return begin_method(accessnew Signature(namedesc), TypeUtils.fromInternalNames(exceptions), attrs);
/*     */   }
/*     */ 
/*     */   public void visitAttribute(Attribute attrs)
/*     */   {
/* 270 */     define_attribute(attrs);
/*     */   }
/*     */ 
/*     */   static class FieldInfo
/*     */   {
/*     */     int access;
/*     */     String name;
/*     */     Type type;
/*     */     Object value;
/*     */ 
/*     */     public FieldInfo(int accessString nameType typeObject value)
/*     */     {
/* 214 */       this. = access;
/* 215 */       this. = name;
/* 216 */       this. = type;
/* 217 */       this. = value;
/*     */     }
/*     */ 
/*     */     public boolean equals(Object o) {
/* 221 */       if (o == null)
/* 222 */         return false;
/* 223 */       if (!(o instanceof FieldInfo))
/* 224 */         return false;
/* 225 */       FieldInfo other = (FieldInfo)o;
/* 226 */       if ((this. != other.access) || (!this..equals(other.name)) || (!this..equals(other.type)))
/*     */       {
/* 229 */         return false;
/*     */       }
/* 231 */       if (((this. == null ? 1 : 0) ^ (other.value == null ? 1 : 0)) != 0) {
/* 232 */         return false;
/*     */       }
/* 234 */       return (this. == null) || (this..equals(other.value));
/*     */     }
/*     */ 
/*     */     public int hashCode()
/*     */     {
/* 239 */       return this. ^ this..hashCode() ^ this..hashCode() ^ (this. == null ? 0 : this..hashCode());
/*     */     }
/*     */   }
/*     */ }
/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/thirdparty-all.jar
 * Qualified Name:     net.sf.cglib.core.ClassEmitter
 * JD-Core Version:    0.6.0
 */
New to GrepCode? Check out our FAQ X