Apache GraphAr C++ Library
The C++ Library for Apache GraphAr
yaml.h
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 #pragma once
21 
22 #include <iosfwd>
23 #include <memory>
24 #include <string>
25 
26 #include "graphar/result.h"
27 
28 // forward declaration
29 namespace Yaml {
30 class Node;
31 }
32 
33 namespace graphar {
34 
36 class Yaml {
37  public:
38  explicit Yaml(std::shared_ptr<::Yaml::Node> root_node)
39  : root_node_(root_node) {}
40 
41  ~Yaml() = default;
42 
43  const ::Yaml::Node operator[](const std::string& key) const;
44 
50  static Result<std::shared_ptr<Yaml>> Load(const std::string& input);
51 
57  static Result<std::shared_ptr<Yaml>> Load(std::iostream& input);
58 
64  static Result<std::shared_ptr<Yaml>> LoadFile(const std::string& file_name);
65 
66  private:
67  std::shared_ptr<::Yaml::Node> root_node_;
68 };
69 
70 } // namespace graphar
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