<?php
namespace nur\sery\file;

use nur\sery\os\IOException;

/**
 * Interface IWriter: un objet dans lequel on peut écrire des données
 */
interface IWriter extends _IFile {
  /** @throws IOException */
  function ftruncate(int $size): self;

  /** @throws IOException */
  function fwrite(string $data, int $length=0): int;

  /** @throws IOException */
  function fputcsv(array $row): void;

  /** @throws IOException */
  function fflush(): self;

  /** afficher les lignes */
  function writeLines(?iterable $lines): self;

  /** écrire le contenu spécifié dans le fichier */
  function putContents(string $contents, bool $close=true, bool $alreadyLocked=false): void;

  /** sérialiser l'objet dans la destination */
  function serialize($object, bool $close=true, bool $alreadyLocked=false): void;
}
