Apache GraphAr C++ Library
The C++ Library for Apache GraphAr
yaml.cc
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
20 #include <memory>
21 #include <string>
22 
23 #include "mini-yaml/yaml/Yaml.hpp"
24 
25 #include "graphar/result.h"
26 #include "graphar/yaml.h"
27 
28 namespace graphar {
29 
30 const ::Yaml::Node Yaml::operator[](const std::string& key) const {
31  return root_node_->operator[](key);
32 }
33 
34 Result<std::shared_ptr<Yaml>> Yaml::Load(const std::string& input) {
35  std::shared_ptr<::Yaml::Node> root_node = std::make_shared<::Yaml::Node>();
36  try {
37  ::Yaml::Parse(*root_node, input);
38  } catch (::Yaml::Exception& e) { return Status::YamlError(e.what()); }
39  return std::make_shared<Yaml>(root_node);
40 }
41 
42 Result<std::shared_ptr<Yaml>> Yaml::Load(std::iostream& input) {
43  std::shared_ptr<::Yaml::Node> root_node = std::make_shared<::Yaml::Node>();
44  try {
45  ::Yaml::Parse(*root_node, input);
46  } catch (::Yaml::Exception& e) { return Status::YamlError(e.what()); }
47  return std::make_shared<Yaml>(root_node);
48 }
49 
50 Result<std::shared_ptr<Yaml>> Yaml::LoadFile(const std::string& file_name) {
51  std::shared_ptr<::Yaml::Node> root_node = std::make_shared<::Yaml::Node>();
52  try {
53  ::Yaml::Parse(*root_node, file_name.c_str());
54  } catch (::Yaml::Exception& e) { return Status::YamlError(e.what()); }
55  return std::make_shared<Yaml>(root_node);
56 }
57 
58 } // namespace graphar
static Status YamlError(Args &&... args)
Definition: status.h:204
static Result< std::shared_ptr< Yaml > > Load(const std::string &input)
Definition: yaml.cc:34
static Result< std::shared_ptr< Yaml > > LoadFile(const std::string &file_name)
Definition: yaml.cc:50