xref: /aosp_15_r20/external/cronet/base/json/json_value_converter.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/json/json_value_converter.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/strings/utf_string_conversions.h"
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker namespace base {
10*6777b538SAndroid Build Coastguard Worker namespace internal {
11*6777b538SAndroid Build Coastguard Worker 
Convert(const base::Value & value,int * field) const12*6777b538SAndroid Build Coastguard Worker bool BasicValueConverter<int>::Convert(
13*6777b538SAndroid Build Coastguard Worker     const base::Value& value, int* field) const {
14*6777b538SAndroid Build Coastguard Worker   if (!value.is_int())
15*6777b538SAndroid Build Coastguard Worker     return false;
16*6777b538SAndroid Build Coastguard Worker   if (field)
17*6777b538SAndroid Build Coastguard Worker     *field = value.GetInt();
18*6777b538SAndroid Build Coastguard Worker   return true;
19*6777b538SAndroid Build Coastguard Worker }
20*6777b538SAndroid Build Coastguard Worker 
Convert(const base::Value & value,std::string * field) const21*6777b538SAndroid Build Coastguard Worker bool BasicValueConverter<std::string>::Convert(
22*6777b538SAndroid Build Coastguard Worker     const base::Value& value, std::string* field) const {
23*6777b538SAndroid Build Coastguard Worker   if (!value.is_string())
24*6777b538SAndroid Build Coastguard Worker     return false;
25*6777b538SAndroid Build Coastguard Worker   if (field)
26*6777b538SAndroid Build Coastguard Worker     *field = value.GetString();
27*6777b538SAndroid Build Coastguard Worker   return true;
28*6777b538SAndroid Build Coastguard Worker }
29*6777b538SAndroid Build Coastguard Worker 
Convert(const base::Value & value,std::u16string * field) const30*6777b538SAndroid Build Coastguard Worker bool BasicValueConverter<std::u16string>::Convert(const base::Value& value,
31*6777b538SAndroid Build Coastguard Worker                                                   std::u16string* field) const {
32*6777b538SAndroid Build Coastguard Worker   if (!value.is_string())
33*6777b538SAndroid Build Coastguard Worker     return false;
34*6777b538SAndroid Build Coastguard Worker   if (field)
35*6777b538SAndroid Build Coastguard Worker     *field = base::UTF8ToUTF16(value.GetString());
36*6777b538SAndroid Build Coastguard Worker   return true;
37*6777b538SAndroid Build Coastguard Worker }
38*6777b538SAndroid Build Coastguard Worker 
Convert(const base::Value & value,double * field) const39*6777b538SAndroid Build Coastguard Worker bool BasicValueConverter<double>::Convert(
40*6777b538SAndroid Build Coastguard Worker     const base::Value& value, double* field) const {
41*6777b538SAndroid Build Coastguard Worker   if (!value.is_double() && !value.is_int())
42*6777b538SAndroid Build Coastguard Worker     return false;
43*6777b538SAndroid Build Coastguard Worker   if (field)
44*6777b538SAndroid Build Coastguard Worker     *field = value.GetDouble();
45*6777b538SAndroid Build Coastguard Worker   return true;
46*6777b538SAndroid Build Coastguard Worker }
47*6777b538SAndroid Build Coastguard Worker 
Convert(const base::Value & value,bool * field) const48*6777b538SAndroid Build Coastguard Worker bool BasicValueConverter<bool>::Convert(
49*6777b538SAndroid Build Coastguard Worker     const base::Value& value, bool* field) const {
50*6777b538SAndroid Build Coastguard Worker   if (!value.is_bool())
51*6777b538SAndroid Build Coastguard Worker     return false;
52*6777b538SAndroid Build Coastguard Worker   if (field)
53*6777b538SAndroid Build Coastguard Worker     *field = value.GetBool();
54*6777b538SAndroid Build Coastguard Worker   return true;
55*6777b538SAndroid Build Coastguard Worker }
56*6777b538SAndroid Build Coastguard Worker 
57*6777b538SAndroid Build Coastguard Worker }  // namespace internal
58*6777b538SAndroid Build Coastguard Worker }  // namespace base
59*6777b538SAndroid Build Coastguard Worker 
60