Inheritance: TargetNullableObject
Example #1
0
        internal override void SetObject(TargetMemoryAccess target, TargetLocation location,
                                         TargetObject obj)
        {
            TargetLocation flag_loc = location.GetLocationAtOffset(ElementType.Size);

            byte[] buffer = new byte [1];

            if (obj is TargetNullObject)
            {
                buffer [0] = 0;
                flag_loc.WriteBuffer(target, buffer);
                return;
            }

            MonoNullableObject nobj = obj as MonoNullableObject;

            if (nobj != null)
            {
                if (!nobj.HasValue(target))
                {
                    buffer [0] = 0;
                    flag_loc.WriteBuffer(target, buffer);
                    return;
                }
                else
                {
                    obj = nobj.GetValue(target);
                }
            }

            buffer [0] = 1;
            flag_loc.WriteBuffer(target, buffer);

            ElementType.SetObject(target, location, obj);
        }