private ushort Add(ConstantPoolItem cpi) { object index = cphashtable[cpi]; if (index == null) { index = (ushort)cplist.Add(cpi); if (cpi is ConstantPoolItemDouble || cpi is ConstantPoolItemLong) { cplist.Add(null); } cphashtable[cpi] = index; } return((ushort)index); }
private ushort Add(ConstantPoolItem cpi) { ushort index; if (!cphashtable.TryGetValue(cpi, out index)) { index = (ushort)cplist.Count; cplist.Add(cpi); if (cpi is ConstantPoolItemDouble || cpi is ConstantPoolItemLong) { cplist.Add(null); } cphashtable.Add(cpi, index); } return(index); }
public void Write(Stream stream) { BigEndianStream bes = new BigEndianStream(stream); bes.WriteUInt32(0xCAFEBABE); bes.WriteUInt16(minorVersion); bes.WriteUInt16(majorVersion); bes.WriteUInt16((ushort)cplist.Count); for (int i = 1; i < cplist.Count; i++) { ConstantPoolItem cpi = (ConstantPoolItem)cplist[i]; if (cpi != null) { cpi.Write(bes); } } bes.WriteUInt16((ushort)access_flags); bes.WriteUInt16(this_class); bes.WriteUInt16(super_class); // interfaces count bes.WriteUInt16((ushort)interfaces.Count); for (int i = 0; i < interfaces.Count; i++) { bes.WriteUInt16((ushort)interfaces[i]); } // fields count bes.WriteUInt16((ushort)fields.Count); for (int i = 0; i < fields.Count; i++) { ((FieldOrMethod)fields[i]).Write(bes); } // methods count bes.WriteUInt16((ushort)methods.Count); for (int i = 0; i < methods.Count; i++) { ((FieldOrMethod)methods[i]).Write(bes); } // attributes count bes.WriteUInt16((ushort)attribs.Count); for (int i = 0; i < attribs.Count; i++) { ((ClassFileAttribute)attribs[i]).Write(bes); } }
private ushort Add(ConstantPoolItem cpi) { ushort index; if (!cphashtable.TryGetValue(cpi, out index)) { index = (ushort)cplist.Count; cplist.Add(cpi); if (cpi is ConstantPoolItemDouble || cpi is ConstantPoolItemLong) { cplist.Add(null); } cphashtable.Add(cpi, index); } return index; }
private ushort Add(ConstantPoolItem cpi) { object index = cphashtable[cpi]; if (index == null) { index = (ushort)cplist.Add(cpi); if (cpi is ConstantPoolItemDouble || cpi is ConstantPoolItemLong) { cplist.Add(null); } cphashtable[cpi] = index; } return (ushort)index; }