Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
JSONReader.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/* JSONReader.h (C) 2000-2023 */
9/* */
10/* Lecteur au format JSON. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_JSONREADER_H
13#define ARCANE_UTILS_JSONREADER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/utils/Array.h"
19
20#include <vector>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27class JSONWrapperUtils;
28class JSONKeyValue;
29class JSONKeyValueList;
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
42class ARCANE_UTILS_EXPORT JSONValue
43{
44 class Impl;
45 friend JSONWrapperUtils;
46 friend JSONKeyValue;
47
48 private:
49
50 explicit JSONValue(Impl* p)
51 : m_p(p)
52 {}
53
54 public:
55
56 JSONValue()
57 : m_p(nullptr)
58 {}
59
60 public:
61
63 bool null() const { return !m_p; }
64 bool operator!() const { return null(); }
65
66 public:
67
68 ARCANE_DEPRECATED_REASON("Y2023: Use valueAsStringView() or value() instead")
69 StringView valueAsString() const;
70
72 String value() const;
79 StringView valueAsStringView() const;
81 Real valueAsReal() const;
83 Int64 valueAsInt64() const;
85 Int32 valueAsInt32() const;
87 bool valueAsBool() const;
88 JSONValueList valueAsArray() const;
89
90 public:
91
92 JSONKeyValue keyValueChild(StringView name) const;
94 JSONValue child(StringView name) const;
96 JSONValue expectedChild(StringView name) const;
97 // Liste des objects fils de cet objet. L'instance doit être un objet
98 JSONValueList children() const;
99 JSONKeyValueList keyValueChildren() const;
100
101 public:
102
103 bool isArray() const;
104 bool isObject() const;
105
106 private:
107
108 Impl* m_p;
109};
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
122class ARCANE_UTILS_EXPORT JSONKeyValue
123{
124 class Impl;
125 friend JSONWrapperUtils;
126
127 private:
128
129 explicit JSONKeyValue(Impl* p)
130 : m_p(p)
131 {}
132
133 public:
134
136 : m_p(nullptr)
137 {}
138
139 public:
140
142 bool null() const { return !m_p; }
143 bool operator!() const { return null(); }
144
145 public:
146
147 StringView name() const;
148 JSONValue value() const;
149
150 private:
151
152 Impl* m_p;
153};
154
155/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
165class ARCANE_UTILS_EXPORT JSONKeyValueList
166{
167 typedef std::vector<JSONKeyValue> ContainerType;
168
169 public:
170
171 typedef ContainerType::const_iterator const_iterator;
172 typedef ContainerType::iterator iterator;
173
174 public:
175
176 void add(JSONKeyValue v)
177 {
178 m_values.push_back(v);
179 }
180 const_iterator begin() const { return m_values.begin(); }
181 const_iterator end() const { return m_values.end(); }
182
183 private:
184
185 std::vector<JSONKeyValue> m_values;
186};
187
188/*---------------------------------------------------------------------------*/
189/*---------------------------------------------------------------------------*/
198class ARCANE_UTILS_EXPORT JSONValueList
199{
200 typedef std::vector<JSONValue> ContainerType;
201
202 public:
203
204 typedef ContainerType::const_iterator const_iterator;
205 typedef ContainerType::iterator iterator;
206
207 public:
208
209 void add(JSONValue v)
210 {
211 m_values.push_back(v);
212 }
213 const_iterator begin() const { return m_values.begin(); }
214 const_iterator end() const { return m_values.end(); }
215
216 private:
217
218 std::vector<JSONValue> m_values;
219};
220
221/*---------------------------------------------------------------------------*/
222/*---------------------------------------------------------------------------*/
229class ARCANE_UTILS_EXPORT JSONDocument
230{
231 class Impl;
232
233 public:
234
235 JSONDocument();
237
238 public:
239
241 void parse(Span<const Byte> bytes);
243 void parse(Span<const std::byte> bytes);
245 void parse(Span<const Byte> bytes, StringView file_name);
247 void parse(Span<const std::byte> bytes, StringView file_name);
249 JSONValue root() const;
250
251 private:
252
253 Impl* m_p;
254};
255
256/*---------------------------------------------------------------------------*/
257/*---------------------------------------------------------------------------*/
258
259} // namespace Arcane
260
261/*---------------------------------------------------------------------------*/
262/*---------------------------------------------------------------------------*/
263
264#endif
Déclarations des types utilisés dans Arcane.
Gestion d'un document JSON.
Definition JSONReader.h:230
Liste de (clé,valeur) d'un document JSON.
Definition JSONReader.h:166
Représente une paire (clé,valeur) de JSON.
Definition JSONReader.h:123
bool null() const
Vrai si le noeud est nul.
Definition JSONReader.h:142
Liste de valeurs d'un document JSON.
Definition JSONReader.h:199
Représente une valeur JSON.
Definition JSONReader.h:43
bool null() const
Vrai si le noeud est nul.
Definition JSONReader.h:63
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue sur une chaîne de caractères UTF-8.
Definition StringView.h:47
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-