Ejemplo n.º 1
0
		internal sealed override void Write(FileImage output) 
		{
			base.Write(output);
			if (byteNum) 
				output.Write((sbyte)val);
			else 
				output.Write(val); 
		}
Ejemplo n.º 2
0
		internal sealed override void Write(FileImage output) 
		{
			base.Write(output);
			if (shortVer)
				output.Write((sbyte)target);
			else
				output.Write(target);
		}
Ejemplo n.º 3
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(flags);
			output.WriteCodedIndex(CIx.MemberForwarded,meth);
			output.StringsIndex(iNameIx);
			output.WriteIndex(MDTable.ModuleRef,importScope.Row);
		}
Ejemplo n.º 4
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(offset);
			output.WriteIndex(MDTable.Field,field.Row);
		}
Ejemplo n.º 5
0
		internal void WriteResources (FileImage output) 
		{
			if (resources == null) return;
			for (int i = 0; i < resources.Count; i ++) {
				byte [] resBytes = (byte []) resources [i];
				output.Write ((uint) resBytes.Length);
				output.Write (resBytes);
			} 
		}
Ejemplo n.º 6
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(action);
			output.WriteCodedIndex(CIx.HasDeclSecurity,parent);
			output.BlobIndex(permissionIx);
		}
Ejemplo n.º 7
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(major);
			output.Write(minor);
			output.Write(build);
			output.Write(revision);
			output.Write(flags);
			output.BlobIndex(keyIx);
			output.StringsIndex(nameIx);
			output.StringsIndex(cultIx);
			output.BlobIndex(hashIx);
		}
Ejemplo n.º 8
0
		internal sealed override void Write(FileImage output) 
		{
			if (ZeroRva ()) output.Write(0);
			else output.WriteCodeRVA(textOffset);
			output.Write(implFlags);
			output.Write(methFlags);
			output.StringsIndex(nameIx);
			output.BlobIndex(sigIx);
			output.WriteIndex(MDTable.Param,parIx);
		}
Ejemplo n.º 9
0
		internal override void Write(FileImage output, bool fatFormat) 
		{
			// Console.WriteLine("writing exception details");
			for (int i=0; i < handlers.Count; i++) {
				// Console.WriteLine("Except block " + i);
				HandlerBlock handler = (HandlerBlock)handlers[i];
				if (fatFormat) output.Write(flags);
				else output.Write((short)flags);
				// Console.WriteLine("flags = " + Hex.Short(flags));
				base.Write(output,fatFormat);
				handler.Write(output,fatFormat);
			}
		}
Ejemplo n.º 10
0
		internal virtual void Write(FileImage output, bool fatFormat) 
		{
			if (fatFormat) output.Write(start.GetLabelOffset());
			else output.Write((short)start.GetLabelOffset());
			uint len = end.GetLabelOffset() - start.GetLabelOffset();
			if (fatFormat) output.Write(len);
			else output.Write((byte)len);
		}
Ejemplo n.º 11
0
		internal void Write(FileImage output) 
		{
			// Console.WriteLine("Writing header flags = " + Hex.Short(headerFlags));
			if (tinyFormat) {
				// Console.WriteLine("Writing tiny code");
				output.Write((byte)headerFlags);
			} else {
				// Console.WriteLine("Writing fat code");
				output.Write(headerFlags);
				output.Write((ushort)maxStack);
				output.Write(offset);
				output.Write(localSigIx);
			}
			// Console.WriteLine(Hex.Int(tide) + " CIL instructions");
			// Console.WriteLine("starting instructions at " + output.Seek(0,SeekOrigin.Current));
			for (int i=0; i < tide; i++) {
				buffer[i].Write(output);
			}
			// Console.WriteLine("ending instructions at " + output.Seek(0,SeekOrigin.Current));
			for (int i=0; i < paddingNeeded; i++) { output.Write((byte)0); }
			if (exceptions != null) {
				// Console.WriteLine("Writing exceptions");
				// Console.WriteLine("header = " + Hex.Short(exceptHeader) + " exceptSize = " + Hex.Int(exceptSize));
				output.Write(exceptHeader);
				output.Write3Bytes((uint)exceptSize);
				for (int i=0; i < exceptions.Count; i++) {
					TryBlock tryBlock = (TryBlock)exceptions[i];
					tryBlock.Write(output,fatExceptionFormat);
				}
			}
		}
Ejemplo n.º 12
0
		internal override void Write(FileImage output) 
		{
			//Console.WriteLine("Writing instruction " + instr + " with size " + size);
			if (twoByteInstr) output.Write(leadByte);
			output.Write((byte)instr);
		}
Ejemplo n.º 13
0
		internal override void Write(FileImage output) 
		{
			output.Write(byteVal);
		}
Ejemplo n.º 14
0
		internal sealed override void Write(FileImage output) 
		{
			base.Write(output);
			output.Write(numCases);
			for (int i=0; i < numCases; i++) {
				int target = (int)cases[i].GetLabelOffset() - (int)(offset + size);
				output.Write(target);
			}
		}
Ejemplo n.º 15
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(flags);
			output.StringsIndex(nameIx);
			output.WriteCodedIndex(CIx.TypeDefOrRef,eventType);
		}
Ejemplo n.º 16
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(fileOffset);
			output.Write(flags);
			output.StringsIndex(nameIx);
			output.WriteCodedIndex(CIx.Implementation,rRef);
		}
Ejemplo n.º 17
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(packSize);
			output.Write(classSize);
			output.WriteIndex(MDTable.TypeDef,parent.Row);
		}
Ejemplo n.º 18
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write((ushort)type);
			output.WriteIndex(MDTable.Method,meth.Row);
			output.WriteCodedIndex(CIx.HasSemantics,eventOrProp);
		}
Ejemplo n.º 19
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(cValue.GetTypeIndex());
			output.Write((byte)0);
			output.WriteCodedIndex(CIx.HasConst,parent);
			output.BlobIndex(valIx);
		}
Ejemplo n.º 20
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(parMode);
			output.Write(seqNo);
			output.StringsIndex(nameIx);
		}
Ejemplo n.º 21
0
		internal void WriteTildeStream(FileImage output) 
		{
			long startTilde = output.Seek(0,SeekOrigin.Current);
			output.Write((uint)0); // Reserved
#if NET_2_0 || BOOTSTRAP_NET_2_0
			output.Write((byte)2); // MajorVersion
			output.Write((byte)0); // MinorVersion
#else
			output.Write((byte)1); // MajorVersion
			output.Write((byte)0); // MinorVersion
#endif
			output.Write(heapSizes);
			output.Write((byte)1); // Reserved
			output.Write(valid);
			output.Write(sorted);
			for (int i=0; i < numMetaDataTables; i++) {
				if (metaDataTables[i] != null) {
					uint count = (uint)metaDataTables[i].Count;
					output.Write(count);
				}
			}
			long tabStart = output.Seek(0,SeekOrigin.Current);
			// Console.WriteLine("Starting metaData tables at " + tabStart);
			for (int i=0; i < numMetaDataTables; i++) {
				if (metaDataTables[i] != null) {
					// Console.WriteLine("Starting metaData table " + i + " at " + (output.Seek(0,SeekOrigin.Current) - startTilde));
					ArrayList table = metaDataTables[i];
					for (int j=0; j < table.Count; j++) {
						((MetaDataElement)table[j]).Write(output);
					}
				}
			}
			// Console.WriteLine("Writing padding at " + output.Seek(0,SeekOrigin.Current));
			for (int i=0; i < tildePadding; i++) output.Write((byte)0);
		}
Ejemplo n.º 22
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(flags);
			output.StringsIndex(nameIx);
			output.StringsIndex(nameSpaceIx);
			//if (superType != null) 
			// Console.WriteLine("getting coded index for superType of " + name + " = " + superType.GetCodedIx(CIx.TypeDefOrRef));
			output.WriteCodedIndex(CIx.TypeDefOrRef,superType);
			output.WriteIndex(MDTable.Field,fieldIx);
			output.WriteIndex(MDTable.Method,methodIx);
		}
Ejemplo n.º 23
0
		internal void WriteByteCodes(FileImage output) 
		{
			for (int i=0; i < byteCodes.Count; i++) {
				((CILInstructions)byteCodes[i]).Write(output);
			}
			for (int i=0; i < byteCodePadding; i++) {
				output.Write((byte)0);
			}
		}
Ejemplo n.º 24
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(flags);
			output.Write(0);
			output.StringsIndex(nameIx);
			output.StringsIndex(nameSpaceIx);
			output.WriteCodedIndex(CIx.Implementation,parent);
		}
Ejemplo n.º 25
0
		internal void WriteCodedIndex(CIx code, MetaDataElement elem, FileImage output) 
		{
			uint ix = 0;
			if (elem != null) { 
				ix = (elem.Row << CIxShiftMap[(uint)code]) | elem.GetCodedIx(code);
				// Console.WriteLine("coded index = " + ix + " row = " + elem.Row);
				//} else {
				// Console.WriteLine("elem for coded index is null");
			}
			if (lgeCIx[(uint)code]) 
				output.Write(ix);
			else
				output.Write((ushort)ix);
		}
Ejemplo n.º 26
0
		internal sealed override void Write(FileImage output) 
		{
			//      Console.WriteLine("Writing assembly element with nameIx of " + nameIx + " at file offset " + output.Seek(0,SeekOrigin.Current));
			output.Write((uint)hashAlgId);
			output.Write(majorVer);
			output.Write(minorVer);
			output.Write(buildNo);
			output.Write(revisionNo);
			output.Write(flags);
			output.BlobIndex(keyIx);
			output.StringsIndex(nameIx);
			output.StringsIndex(cultIx);
		}
Ejemplo n.º 27
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write(flags);
			output.StringsIndex(nameIx);
			output.BlobIndex(hashIx);
		}
Ejemplo n.º 28
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write((short)0);
			output.StringsIndex(nameIx);
			output.GUIDIndex(mvidIx);
			output.GUIDIndex(0);
			output.GUIDIndex(0);
		}
Ejemplo n.º 29
0
		internal sealed override void Write(FileImage output) 
		{
			output.Write ((short) index);
			output.Write ((short) attr);
			output.WriteCodedIndex(CIx.TypeOrMethodDef, owner);
			output.StringsIndex (nameIx);
		}
Ejemplo n.º 30
0
		internal sealed override void Write(FileImage output) 
		{
			base.Write(output);
			output.Write(theType.Token());
		}