Mono.Debugger.Languages.Mono.MonoVariableLocation.WriteBuffer C# (CSharp) Method

WriteBuffer() private method

private WriteBuffer ( TargetMemoryAccess target, byte data ) : void
target TargetMemoryAccess
data byte
return void
        internal override void WriteBuffer(TargetMemoryAccess target, byte[] data)
        {
            if (!is_valid)
                throw new LocationInvalidException ();

            if (HasAddress) {
                base.WriteBuffer (target, data);
                return;
            }

            long contents;

            if (data.Length > target.TargetMemoryInfo.TargetIntegerSize)
                throw new InternalError ();

            if (data.Length < target.TargetMemoryInfo.TargetIntegerSize) {
                switch (data.Length) {
                case 1: contents = data[0]; break;
                case 2: contents = BitConverter.ToInt16 (data, 0); break;
                case 4: contents = BitConverter.ToInt32 (data, 0); break;
                default:
                  throw new InternalError ();
                }
            }
            else if (target.TargetMemoryInfo.TargetIntegerSize == 4)
                contents = BitConverter.ToInt32 (data, 0);
            else if (target.TargetMemoryInfo.TargetIntegerSize == 8)
                contents = BitConverter.ToInt64 (data, 0);
            else
                throw new InternalError ();

            // If this is a valuetype, the register hold the whole data.
            register.WriteRegister (target, contents);
            update (target);
        }