Fileseq C++ API
A library for parsing file sequence strings commonly used in VFX and animation applications.
sequence.h
1 #ifndef FILESEQ_SEQUENCE_H_
2 #define FILESEQ_SEQUENCE_H_
3 
4 #include "frameset.h"
5 #include "pad.h"
6 
7 #include <ostream>
8 #include <memory>
9 #include <vector>
10 
11 namespace fileseq {
12 
13 class FileSequence;
14 
15 
16 // Fwd Decl
17 namespace internal {
18 
19 class FileSequenceData;
20 
21 } // internal
22 
23 
24 // typedefs
25 typedef std::vector<FileSequence> FileSequences;
26 
27 
28 
48 class FileSequence {
49 
50 public:
54  FileSequence();
55 
70  explicit FileSequence(const std::string &path, Status* ok=nullptr);
71 
93  FileSequence(const std::string &path, PadStyle padStyle, Status* ok=nullptr);
94 
95  virtual ~FileSequence();
96 
97  // Copy constructor
98  FileSequence(const FileSequence& rhs);
99 
100  // Assignment
101  FileSequence& operator=(FileSequence rhs);
102 
103  // Swap functionality
104  friend void swap(FileSequence &first, FileSequence &second);
105 
110  bool isValid() const;
111 
116  operator bool() const { return isValid(); }; // NOLINT(*-explicit-constructor)
117 
121  std::string string() const;
122 
123  operator std::string() const { return string(); } // NOLINT(*-explicit-constructor)
124 
125  friend std::ostream& operator<< (std::ostream& stream, const FileSequence& fs) {
126  stream << fs.string();
127  return stream;
128  }
129 
133  size_t length() const;
134 
138  Frame start() const;
139 
143  Frame end() const;
144 
149  int zfill() const;
150 
173  std::string format(const std::string &fmt, Status* ok=nullptr) const;
174 
178  std::string dirname() const;
179 
183  void setDirname(const std::string &dirname) const;
184 
189  std::string basename() const;
190 
195  void setBasename(const std::string &basename) const;
196 
201  std::string ext() const;
202 
207  void setExt(const std::string &ext) const;
208 
214  std::string padding() const;
215 
219  void setPadding(const std::string &padChars) const;
220 
225  PadStyle paddingStyle() const;
226 
231  void setPaddingStyle(PadStyle style) const;
232 
239  std::string frameRange(bool padded=false) const;
240 
244  void setFrameRange(const std::string &frange, Status* ok=nullptr);
245 
252  std::string invertedFrameRange(bool padded=false) const;
253 
260  std::string index(size_t idx) const;
261 
275  std::string frame(Frame frame) const;
276 
290  std::string frame(const std::string &fillPattern) const;
291 
297  FrameSet frameSet();
298 
302  void setFrameSet(const FrameSet &frameSet);
303 
304 private:
305  bool init(const std::string &frange, PadStyle padStyle, Status* ok=nullptr);
306 
307  friend FileSequence findSequenceOnDisk(const std::string &pattern, Status* ok);
308  friend FileSequence findSequenceOnDisk(const std::string &pattern, PadStyle style, Status* ok);
309 
310  friend Status findSequencesOnDisk(FileSequences &seqs,
311  const std::string &path,
312  bool hiddenFiles,
313  bool singleFiles,
314  PadStyle style);
315 private:
316  std::unique_ptr<internal::FileSequenceData> m_seqData;
317  FrameSet m_frameSet;
318 
319 };
320 
321 } // fileseq
322 
323 #endif // FILESEQ_SEQUENCE_H_
Definition: sequence.h:48
FileSequence()
Definition: sequence.cpp:16
Frame end() const
Definition: sequence.cpp:258
std::string string() const
Definition: sequence.cpp:171
void setBasename(const std::string &basename) const
Definition: sequence.cpp:205
int zfill() const
Definition: sequence.cpp:262
FrameSet frameSet()
Definition: sequence.cpp:267
friend FileSequence findSequenceOnDisk(const std::string &pattern, Status *ok)
Definition: fileseq.cpp:153
std::string frameRange(bool padded=false) const
Definition: sequence.cpp:275
void setExt(const std::string &ext) const
Definition: sequence.cpp:214
Frame start() const
Definition: sequence.cpp:254
std::string ext() const
Definition: sequence.cpp:209
void setFrameRange(const std::string &frange, Status *ok=nullptr)
Definition: sequence.cpp:279
PadStyle paddingStyle() const
Definition: sequence.cpp:239
std::string padding() const
Definition: sequence.cpp:224
std::string basename() const
Definition: sequence.cpp:200
void setDirname(const std::string &dirname) const
Definition: sequence.cpp:190
std::string frame(Frame frame) const
Definition: sequence.cpp:308
std::string invertedFrameRange(bool padded=false) const
Definition: sequence.cpp:333
bool isValid() const
Definition: sequence.cpp:145
std::string format(const std::string &fmt, Status *ok=nullptr) const
Definition: sequence.cpp:352
std::string index(size_t idx) const
Definition: sequence.cpp:294
size_t length() const
Definition: sequence.cpp:161
void setPaddingStyle(PadStyle style) const
Definition: sequence.cpp:244
void setPadding(const std::string &padChars) const
Definition: sequence.cpp:229
void setFrameSet(const FrameSet &frameSet)
Definition: sequence.cpp:271
std::string dirname() const
Definition: sequence.cpp:185
Definition: error.h:31