Mono.CSharp.EmitContext.EmitLoadFromPtr C# (CSharp) Method

EmitLoadFromPtr() public method

public EmitLoadFromPtr ( System.TypeSpec t ) : void
t System.TypeSpec
return void
		public void EmitLoadFromPtr (TypeSpec t)
		{
			if (t == TypeManager.int32_type)
				ig.Emit (OpCodes.Ldind_I4);
			else if (t == TypeManager.uint32_type)
				ig.Emit (OpCodes.Ldind_U4);
			else if (t == TypeManager.short_type)
				ig.Emit (OpCodes.Ldind_I2);
			else if (t == TypeManager.ushort_type)
				ig.Emit (OpCodes.Ldind_U2);
			else if (t == TypeManager.char_type)
				ig.Emit (OpCodes.Ldind_U2);
			else if (t == TypeManager.byte_type)
				ig.Emit (OpCodes.Ldind_U1);
			else if (t == TypeManager.sbyte_type)
				ig.Emit (OpCodes.Ldind_I1);
			else if (t == TypeManager.uint64_type)
				ig.Emit (OpCodes.Ldind_I8);
			else if (t == TypeManager.int64_type)
				ig.Emit (OpCodes.Ldind_I8);
			else if (t == TypeManager.float_type)
				ig.Emit (OpCodes.Ldind_R4);
			else if (t == TypeManager.double_type)
				ig.Emit (OpCodes.Ldind_R8);
			else if (t == TypeManager.bool_type)
				ig.Emit (OpCodes.Ldind_I1);
			else if (t == TypeManager.intptr_type)
				ig.Emit (OpCodes.Ldind_I);
			else if (t.IsEnum) {
				if (t == TypeManager.enum_type)
					ig.Emit (OpCodes.Ldind_Ref);
				else
					EmitLoadFromPtr (EnumSpec.GetUnderlyingType (t));
			} else if (TypeManager.IsStruct (t) || TypeManager.IsGenericParameter (t))
				Emit (OpCodes.Ldobj, t);
			else if (t.IsPointer)
				ig.Emit (OpCodes.Ldind_I);
			else
				ig.Emit (OpCodes.Ldind_Ref);
		}

Usage Example

Example #1
0
            protected override void DoEmit(EmitContext ec)
            {
                for (int i = 0; i < fields.Length; ++i)
                {
                    var field = fields[i];
                    if (field == null)
                    {
                        continue;
                    }

                    ec.EmitArgumentLoad(thisParameterIndex);
                    ec.EmitArgumentLoad(i);
                    if (parametersTypes[i] is ReferenceContainer)
                    {
                        ec.EmitLoadFromPtr(field.MemberType);
                    }

                    ec.Emit(OpCodes.Stfld, field);
                }
            }
All Usage Examples Of Mono.CSharp.EmitContext::EmitLoadFromPtr