Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IHashAlgorithm.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* IHashAlgorithm.h (C) 2000-2023 */
9/* */
10/* Interface d'un algorithme de hashage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_IHASHALGORITHM_H
13#define ARCANE_UTILS_IHASHALGORITHM_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arccore/base/Span.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33class ARCANE_UTILS_EXPORT HashAlgorithmValue
34{
35 public:
36
37 static constexpr Int32 MAX_SIZE = 64;
38
39 public:
40
42 {
43 return { m_value.data(), m_size };
44 }
45 SmallSpan<const std::byte> bytes() const
46 {
47 return { m_value.data(), m_size };
48 }
49 SmallSpan<const Byte> asLegacyBytes() const
50 {
51 return { reinterpret_cast<const Byte*>(m_value.data()), m_size };
52 }
53 void setSize(Int32 size);
54
55 private:
56
57 std::array<std::byte, MAX_SIZE> m_value = {};
58 Int32 m_size = MAX_SIZE;
59};
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
82class ARCANE_UTILS_EXPORT IHashAlgorithmContext
83{
84 public:
85
86 virtual ~IHashAlgorithmContext() = default;
87
88 public:
89
91 virtual void reset() = 0;
92
95
98};
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
105class ARCANE_UTILS_EXPORT IHashAlgorithm
106{
107 public:
108
109 virtual ~IHashAlgorithm() = default;
110
111 public:
112
113 //NOTE: pour l'instant (version 3.10) par encore virtuel pure pour rester
114 // compatible avec l'existant
116 virtual String name() const;
117
118 //NOTE: pour l'instant (version 3.10) par encore virtuel pure pour rester
119 // compatible avec l'existant. Envoi FatalErrorException si pas surchargée
121 virtual Int32 hashSize() const;
122
129 virtual void computeHash64(Span<const Byte> input, ByteArray& output);
130
137 virtual void computeHash64(Span<const std::byte> input, ByteArray& output);
138
139 //NOTE: pour l'instant (version 3.11) par encore virtuel pure pour rester
140 // compatible avec l'existant
146 virtual void computeHash(Span<const std::byte> input, HashAlgorithmValue& value);
147
148 //NOTE: pour l'instant (version 3.11) par encore virtuel pure pour rester
149 // compatible avec l'existant
157 virtual Ref<IHashAlgorithmContext> createContext();
158
159 //NOTE: pour l'instant (version 3.11) par encore virtuel pure pour rester
160 // compatible avec l'existant
162 virtual bool hasCreateContext() const { return false; }
163
164 public:
165
172 ARCANE_DEPRECATED_REASON("Y2023: Use computeHash64(Span<const std::byte> input,ByteArray& output) instead")
173 virtual void computeHash(ByteConstArrayView input, ByteArray& output) = 0;
174};
175
176/*---------------------------------------------------------------------------*/
177/*---------------------------------------------------------------------------*/
178
179} // namespace Arcane
180
181/*---------------------------------------------------------------------------*/
182/*---------------------------------------------------------------------------*/
183
184#endif
185
Déclarations des types utilisés dans Arcane.
Tableau d'items de types quelconques.
Valeur retournée par un algorithme de hashage.
Contexte pour calculer un hash de manière incrémentale.
virtual void updateHash(Span< const std::byte > input)=0
Ajoute le tableau input au hash calculé
virtual void reset()=0
Réinitialise l'instance pour calculer une nouvelle valeur de hash.
virtual void computeHashValue(HashAlgorithmValue &hash_value)=0
Calcule la valeur de hashage et la retourne dans hash_value.
Interface d'un algorithme de hashage.
virtual bool hasCreateContext() const
Indique si l'implémentation supporte un hash incrémental.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-