Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
StringView.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/* StringView.h (C) 2000-2023 */
9/* */
10/* Vue sur une chaîne de caractères UTF-8. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_BASE_STRINGVIEW_H
13#define ARCCORE_BASE_STRINGVIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arccore/base/Span.h"
19
20#include <string_view>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arccore
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
46class ARCCORE_BASE_EXPORT StringView
47{
48 public:
49
51 StringView() = default;
53 StringView(const char* str) ARCCORE_NOEXCEPT
54 : StringView(str ? std::string_view(str) : std::string_view()){}
56 StringView(std::string_view str) ARCCORE_NOEXCEPT
57 : m_v(reinterpret_cast<const Byte*>(str.data()),str.size()){}
59 constexpr StringView(Span<const Byte> str) ARCCORE_NOEXCEPT
60 : m_v(str){}
62 constexpr StringView(const StringView& str) = default;
64 constexpr StringView& operator=(const StringView& str) = default;
66 StringView& operator=(const char* str) ARCCORE_NOEXCEPT
67 {
68 operator=(str ? std::string_view(str) : std::string_view());
69 return (*this);
70 }
72 StringView& operator=(std::string_view str) ARCCORE_NOEXCEPT
73 {
74 m_v = Span<const Byte>(reinterpret_cast<const Byte*>(str.data()),str.size());
75 return (*this);
76 }
78 constexpr StringView& operator=(Span<const Byte> str) ARCCORE_NOEXCEPT
79 {
80 m_v = str;
81 return (*this);
82 }
83
84 ~StringView() = default;
85
86 public:
87
96 constexpr Span<const Byte> bytes() const ARCCORE_NOEXCEPT { return m_v; }
97
99 constexpr Int64 length() const ARCCORE_NOEXCEPT { return m_v.size(); }
100
102 constexpr Int64 size() const ARCCORE_NOEXCEPT { return m_v.size(); }
103
105 constexpr bool empty() const ARCCORE_NOEXCEPT { return size()==0; }
106
107 public:
108
112 std::string_view toStdStringView() const ARCCORE_NOEXCEPT
113 {
114 return std::string_view(reinterpret_cast<const char*>(m_v.data()),m_v.size());
115 }
116
118 friend ARCCORE_BASE_EXPORT std::ostream& operator<<(std::ostream& o,const StringView&);
119
125 friend ARCCORE_BASE_EXPORT bool operator==(const StringView& a,const StringView& b);
126
133 friend inline bool operator!=(const StringView& a,const StringView& b)
134 {
135 return !operator==(a,b);
136 }
137
144 friend ARCCORE_BASE_EXPORT bool operator==(const char* a,const StringView& b);
145
152 friend bool operator!=(const char* a,const StringView& b){ return !operator==(a,b); }
153
160 friend ARCCORE_BASE_EXPORT bool operator==(const StringView& a,const char* b);
161
168 friend inline bool operator!=(const StringView& a,const char* b)
169 {
170 return !operator==(a,b);
171 }
172
179 friend ARCCORE_BASE_EXPORT bool operator<(const StringView& a,const StringView& b);
180
181 public:
182
184 void writeBytes(std::ostream& o) const;
185
186 private:
187
189};
190
191/*---------------------------------------------------------------------------*/
192/*---------------------------------------------------------------------------*/
193
194} // End namespace Arccore
195
196/*---------------------------------------------------------------------------*/
197/*---------------------------------------------------------------------------*/
198
199#endif
Déclarations des types de la composante 'base' de Arccore.
Vue d'un tableau d'éléments de type T.
Definition Span.h:510
Vue sur une chaîne de caractères UTF-8.
Definition StringView.h:47
constexpr Int64 length() const ARCCORE_NOEXCEPT
Longueur en octet de la chaîne de caractères.
Definition StringView.h:99
constexpr StringView(const StringView &str)=default
Opérateur de recopie.
constexpr bool empty() const ARCCORE_NOEXCEPT
Vrai si la chaîne est nulle ou vide.
Definition StringView.h:105
constexpr StringView & operator=(Span< const Byte > str) ARCCORE_NOEXCEPT
Créé une vue à partir de str codé en UTF-8.
Definition StringView.h:78
friend bool operator!=(const char *a, const StringView &b)
Compare deux chaînes unicode.
Definition StringView.h:152
StringView(const char *str) ARCCORE_NOEXCEPT
Créé une vue à partir de str codé en UTF-8. str peut être nul.
Definition StringView.h:53
StringView & operator=(const char *str) ARCCORE_NOEXCEPT
Créé une vue à partir de str codé en UTF-8.
Definition StringView.h:66
StringView()=default
Crée une vue sur une chaîne vide.
friend bool operator!=(const StringView &a, const StringView &b)
Compare deux chaînes unicode.
Definition StringView.h:133
constexpr Span< const Byte > bytes() const ARCCORE_NOEXCEPT
Retourne la conversion de l'instance dans l'encodage UTF-8.
Definition StringView.h:96
~StringView()=default
Libère les ressources.
std::string_view toStdStringView() const ARCCORE_NOEXCEPT
Retourne une vue de la STL de la vue actuelle.
Definition StringView.h:112
constexpr StringView & operator=(const StringView &str)=default
Copie la vue str dans cette instance.
friend bool operator!=(const StringView &a, const char *b)
Compare deux chaînes unicode.
Definition StringView.h:168
StringView & operator=(std::string_view str) ARCCORE_NOEXCEPT
Créé une vue à partir de str codé en UTF-8.
Definition StringView.h:72
constexpr StringView(Span< const Byte > str) ARCCORE_NOEXCEPT
Créé une chaîne à partir de str dans l'encodage UTF-8.
Definition StringView.h:59
constexpr Int64 size() const ARCCORE_NOEXCEPT
Longueur en octet de la chaîne de caractères.
Definition StringView.h:102
StringView(std::string_view str) ARCCORE_NOEXCEPT
Créé une chaîne à partir de str dans l'encodage UTF-8.
Definition StringView.h:56
Espace de nom de Arccore.
Definition ArcaneTypes.h:24
std::int64_t Int64
Type entier signé sur 64 bits.
unsigned char Byte
Type d'un octet.
Definition BaseTypes.h:43