Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IDataCompressor.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* IDataCompressor.h (C) 2000-2021 */
9/* */
10/* Interface permettant de compresser/décompresser des données. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_IDATACOMPRESSOR_H
13#define ARCANE_UTILS_IDATACOMPRESSOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Interface d'un service permettant de compresser/décompresser des données.
29 */
30class ARCANE_UTILS_EXPORT IDataCompressor
31{
32 public:
33
34 virtual ~IDataCompressor() = default;
35
36 public:
37
38 virtual void build() =0;
39
40 public:
41
42 //! Nom de l'algorithme
43 virtual String name() const =0;
44
45 /*!
46 * \brief Taille minimale du tableau en dessous de laquelle il n'est pas utile
47 * de compresser.
48 *
49 * Cela peut être utilisé par l'appelant pour ne pas pas compresser/décompresser
50 * certains tableaux. Cette valeur n'est pas utilisée en interne par cette instance.
51 *
52 * Si l'appelant utilise cette valeur, il faut garantir la cohérence à la fois
53 * en compression et décompression (i.e: ne pas appeler la décompression pour les
54 * tableaux dont la taille décompressée est inférieure à minCompressSize() si
55 * la méthode compress() n'a pas été appelée pour ce tableau.
56 */
57 virtual Int64 minCompressSize() const =0;
58
59 /*!
60 * \brief Compresse les données \a values et les stocke dans \a compressed_values.
61 *
62 * Cette opération peut lever une exception de type IOException en cas d'erreur.
63 */
64 virtual void compress(Span<const std::byte> values,Array<std::byte>& compressed_values) =0;
65
66 /*!
67 * \brief Décompresse les données \a compressed_values et les stocke dans \a values.
68 *
69 * \a values doit déjà avoir été allouée à la taille nécessaire pour contenir
70 * les données décompressées.
71 * Cette opération peut lever une exception de type IOException en cas d'erreur.
72 */
73 virtual void decompress(Span<const std::byte> compressed_values,Span<std::byte> values) =0;
74};
75
76/*---------------------------------------------------------------------------*/
77/*---------------------------------------------------------------------------*/
78
79} // End namespace Arcane
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84#endif
Déclarations des types utilisés dans Arcane.
Interface d'un service permettant de compresser/décompresser des données.
virtual String name() const =0
Nom de l'algorithme.
virtual void decompress(Span< const std::byte > compressed_values, Span< std::byte > values)=0
Décompresse les données compressed_values et les stocke dans values.
virtual void compress(Span< const std::byte > values, Array< std::byte > &compressed_values)=0
Compresse les données values et les stocke dans compressed_values.
virtual Int64 minCompressSize() const =0
Taille minimale du tableau en dessous de laquelle il n'est pas utile de compresser.
Classe de base des vecteurs 1D de données.
Vue d'un tableau d'éléments de type T.
Definition Span.h:510
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-