stromx  0.8.0
File.h
1 /*
2  * Copyright 2015 Matthias Fuchs
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef STROMX_RUNTIME_FILE_H
18 #define STROMX_RUNTIME_FILE_H
19 
20 #ifdef __GNUG__
21  #include <tr1/cstdint>
22 #else
23  #include <cstdint>
24 #endif
25 
26 #include "stromx/runtime/Data.h"
27 #include <vector>
28 
29 namespace stromx
30 {
31  namespace runtime
32  {
34  class STROMX_RUNTIME_API File : public Data
35  {
36  public:
38  enum OpenMode
39  {
43  TEXT
44  };
45 
49  static const std::string & tempDir();
50 
55  static void setTempDir(const std::string dir);
56 
61  static const std::string tempPath(const std::string & extension = "");
62 
64  File() : m_mode(TEXT) {}
65 
72  File(const std::string & path, const OpenMode mode = TEXT);
73 
78  File(const File & file);
79 
81  const std::string & path() const { return m_path; }
82 
84  OpenMode mode() const { return m_mode; }
85 
87  const std::string & extension() const { return m_extension; }
88 
96  void setExtension(const std::string & extension);
97 
98  virtual const Version & version() const { return VERSION; }
99  virtual const std::string & type() const { return TYPE; }
100  virtual const std::string & package() const { return PACKAGE; }
101 
102  virtual const VariantHandle & variant() const;
103 
104  virtual Data* clone() const { return new File(*this); }
105  virtual void serialize(OutputProvider & output) const;
106  virtual void deserialize(InputProvider & input, const Version & version);
107 
108  private:
109  static const std::string TYPE;
110  static const std::string PACKAGE;
111  static const Version VERSION;
112 
113  static std::string staticTempDir;
114 
115  OpenMode m_mode;
116  std::string m_path;
117  std::string m_extension;
118  };
119 
121  template <>
122  class STROMX_RUNTIME_API data_traits<File>
123  {
124  public:
125  static const VariantHandle & variant();
126  };
128  }
129 }
130 
131 #endif // STROMX_RUNTIME_FILE_H
A version of an operator or data type.
Definition: Version.h:46
OpenMode mode() const
Definition: File.h:84
Abstract data object.
Definition: Data.h:53
File()
Definition: File.h:64
Definition: VariantHandle.h:34
virtual const Version & version() const
Definition: File.h:98
Provides functions to serialize data to strings and files.
Definition: OutputProvider.h:27
Provides functions to deserialize data from strings and files.
Definition: InputProvider.h:27
virtual Data * clone() const
Definition: File.h:104
Data object which represents a path to a file.
Definition: File.h:34
Version version()
Returns the version of the stromx runtime library.
Definition: Runtime.cpp:54
Definition: File.h:41
const std::string & extension() const
Definition: File.h:87
The stromx class library.
Definition: AdjustRgbChannels.cpp:29
const std::string & path() const
Definition: File.h:81
virtual const std::string & package() const
Definition: File.h:100
OpenMode
Definition: File.h:38
virtual const std::string & type() const
Definition: File.h:99