/
EvilBeaver
/
OneScript
Обзор
Документация
Войти
/
EvilBeaver
/
OneScript
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
v2.0.1
src/OneScript.StandardLibrary/Binary/GenericStreamImpl.cs
91 строка
3 KB
EvilBeaver
Полностью удалены обращения к GetRawValue
22 май 2025, 10:51
22 май 2025, 10:51
104506e
Код
Авторство
О чём код?
/*---------------------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v.2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. ----------------------------------------------------------*/ using System.IO; using OneScript.Exceptions; using ScriptEngine.Machine; namespace OneScript.StandardLibrary.Binary { internal class GenericStreamImpl { private Stream _underlyingStream; public GenericStreamImpl(Stream stream) { _underlyingStream = stream; } public void Write(BinaryDataBuffer buffer, int positionInBuffer, int number) { buffer.ThrowIfReadonly(); _underlyingStream.Write(buffer.Bytes, positionInBuffer, number); } public void CopyTo(IValue targetStream, int bufferSize = 0) { if (!(targetStream is IStreamWrapper sw)) throw RuntimeException.InvalidArgumentType("targetStream"); var stream = sw.GetUnderlyingStream(); if (bufferSize == 0) _underlyingStream.CopyTo(stream); else _underlyingStream.CopyTo(stream, bufferSize); } public long Seek(int offset, StreamPositionEnum initialPosition = StreamPositionEnum.Begin) { SeekOrigin origin; switch (initialPosition) { case StreamPositionEnum.End: origin = SeekOrigin.End; break; case StreamPositionEnum.Current: origin = SeekOrigin.Current; break; default: origin = SeekOrigin.Begin; break; } return _underlyingStream.Seek(offset, origin); } public GenericStream GetReadonlyStream() { return new GenericStream(_underlyingStream, true); } public long Read(BinaryDataBuffer buffer, int positionInBuffer, int number) { return _underlyingStream.Read(buffer.Bytes, positionInBuffer, number); } public long Size() { return _underlyingStream.Length; } public void Flush() { _underlyingStream.Flush(); } public long CurrentPosition() { return _underlyingStream.Position; } public void SetSize(long size) { _underlyingStream.SetLength(size); } } }