1 /**
2 * \file RMF/Category.h
3 * \brief Handle read/write of Model data from/to files.
4 *
5 * Copyright 2007-2021 IMP Inventors. All rights reserved.
6 *
7 */
8
9 #include <boost/shared_ptr.hpp>
10 #include <string>
11
12 #include "RMF/BufferHandle.h"
13 #include "RMF/FileConstHandle.h"
14 #include "RMF/FileHandle.h"
15 #include "RMF/ID.h"
16 #include "RMF/NodeHandle.h"
17 #include "RMF/config.h"
18 #include "RMF/enums.h"
19 #include "RMF/internal/SharedData.h"
20 #include "RMF/internal/shared_data_factories.h"
21
22 RMF_ENABLE_WARNINGS
23
24 namespace RMF {
25
26 FileHandle::FileHandle(boost::shared_ptr<internal::SharedData> shared)
27 : FileConstHandle(shared) {}
FileConstHandle(boost::shared_ptr<internal::SharedData> shared)28
29 NodeHandle FileHandle::get_node(NodeID id) const {
30 return NodeHandle(id, shared_);
31 }
32
33 void FileHandle::flush() const {
34 try {
get_description() const35 shared_->flush();
36 }
37 RMF_FILE_CATCH();
38 }
39
40 void FileHandle::set_description(std::string descr) const {
41 shared_->set_description(descr);
get_producer() const42 }
43
44 void FileHandle::set_producer(std::string descr) const {
45 shared_->set_producer(descr);
46 }
47
48 FrameID FileHandle::add_frame(std::string name, FrameType t) const {
get_values(const NodeConstHandles & nodes,FloatKey k,Float missing_value)49 FrameID ret = shared_->add_frame(name, t);
50 return ret;
51 }
52
53 FrameID FileHandle::add_frame(std::string name, FrameID parent,
54 FrameType t) const {
55 FrameID ret = shared_->add_frame(name, parent, t);
56 return ret;
57 }
58
59 NodeHandle FileHandle::add_node(std::string name, NodeType t) const {
open_rmf_file_read_only(std::string path)60 NodeID n = shared_->add_node(name, t);
61 return get_node(n);
62 }
63
open_rmf_buffer_read_only(BufferConstHandle buffer)64 FileHandle create_rmf_file(std::string path) {
65 return FileHandle(internal::create_file(path));
66 }
67
get_root_frames() const68 FileHandle create_rmf_buffer(BufferHandle buffer) {
69 return FileHandle(internal::create_buffer(buffer));
70 }
71
72 } /* namespace RMF */
73
74 RMF_DISABLE_WARNINGS
75