Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
 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;
		}