Gemmi C++ API
Loading...
Searching...
No Matches
json.hpp
Go to the documentation of this file.
1// Copyright 2017 Global Phasing Ltd.
2//
3// Reading CIF-JSON (COMCIFS) and mmJSON (PDBj) formats into cif::Document.
4
5#ifndef GEMMI_JSON_HPP_
6#define GEMMI_JSON_HPP_
7
8#include <utility> // for forward
9#include "cifdoc.hpp" // for Document, etc
10#include "fileutil.hpp" // for read_file_into_buffer
11
12namespace gemmi {
13namespace cif {
14
15// reads mmJSON file mutating the input buffer as a side effect
17 const std::string& name="mmJSON");
18
19inline Document read_mmjson_file(const std::string& path) {
21 return read_mmjson_insitu(buffer.data(), buffer.size(), path);
22}
23
24template<typename T>
26 std::string name = input.is_stdin() ? "stdin" : input.path();
27 CharArray buffer = read_into_buffer(std::forward<T>(input));
28 return read_mmjson_insitu(buffer.data(), buffer.size(), name);
29}
30
31} // namespace cif
32} // namespace gemmi
33#endif
struct Document that represents the CIF file (but can also be read from a different representation,...
#define GEMMI_DLL
Definition fail.hpp:53
File-related utilities.
Document read_mmjson(T &&input)
Definition json.hpp:25
Document read_mmjson_file(const std::string &path)
Definition json.hpp:19
GEMMI_DLL Document read_mmjson_insitu(char *buffer, std::size_t size, const std::string &name="mmJSON")
CharArray read_into_buffer(T &&input)
Definition fileutil.hpp:164
CharArray read_file_into_buffer(const std::string &path)
reading file into a memory buffer (optimized: uses fseek to determine file size)
Definition fileutil.hpp:140