/// <summary> /// Инициализирует новый экземпляр <see cref="V8Document"/> из указанного контейнера. /// В качестве адреса документа будет взята текущая позиция основного потока контейнера. /// </summary> /// <param name="container">Контейнер, документ которого инициализируется.</param> public V8Document(V8Container container) : this(container, 0) { long address = _superStream.Position; if (address > MaxAddress) { throw new ArgumentOutOfRangeException(nameof(address)); } _address = (int)address; }
/// <summary> /// Инициализирует новый экземпляр <see cref="V8Document"/> из указанного контейнера. /// В качестве адреса документ будет использован <paramref name="address"/>. /// </summary> /// <param name="container">Контейнер, документ которого инициализируется.</param> /// <param name="address">Адрес документа.</param> public V8Document(V8Container container, int address) { if (address < 0 || address > MaxAddress) { throw new ArgumentOutOfRangeException(nameof(address)); } _container = container ?? throw new ArgumentNullException(nameof(container)); _superStream = container.MainStream; _address = address; Debug.Assert(_superStream.CanSeek); }
/// <summary> /// Создает или перезаписывает указанный файл-контейнер и открывает его для записи. /// </summary> /// <param name="filename">Путь к файлу-контейнеру.</param> /// <returns>Созданный контейнер.</returns> public static V8Container Create(string filename) { if (filename == null) { throw new ArgumentNullException(nameof(filename)); } var stream = File.Create(filename); V8Container container; try { container = new V8Container(stream, V8ContainerMode.Write); } catch { stream.Dispose(); throw; } return(container); }
private V8File(V8Container container, in FileAddress fileAddress)