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  const std::string& dirname() const;
179 
183  void setDirname(const std::string &dirname);
184 
189  const std::string& basename() const;
190 
195  void setBasename(const std::string &basename);
196 
201  const std::string& ext() const;
202 
207  void setExt(const std::string &ext);
208 
214  const std::string& padding() const;
215 
219  void setPadding(const std::string &padChars);
220 
225  PadStyle paddingStyle() const;
226 
231  void setPaddingStyle(PadStyle style);
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  const FrameSet& frameSet() const;
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:19
Frame end() const
Definition: sequence.cpp:231
const std::string & ext() const
Definition: sequence.cpp:182
std::string string() const
Definition: sequence.cpp:144
int zfill() const
Definition: sequence.cpp:235
friend FileSequence findSequenceOnDisk(const std::string &pattern, Status *ok)
Definition: fileseq.cpp:151
std::string frameRange(bool padded=false) const
Definition: sequence.cpp:248
Frame start() const
Definition: sequence.cpp:227
void setBasename(const std::string &basename)
Definition: sequence.cpp:178
void setDirname(const std::string &dirname)
Definition: sequence.cpp:163
const std::string & basename() const
Definition: sequence.cpp:173
void setFrameRange(const std::string &frange, Status *ok=nullptr)
Definition: sequence.cpp:252
const FrameSet & frameSet() const
Definition: sequence.cpp:240
void setExt(const std::string &ext)
Definition: sequence.cpp:187
PadStyle paddingStyle() const
Definition: sequence.cpp:212
void setPaddingStyle(PadStyle style)
Definition: sequence.cpp:217
std::string frame(Frame frame) const
Definition: sequence.cpp:281
std::string invertedFrameRange(bool padded=false) const
Definition: sequence.cpp:306
const std::string & dirname() const
Definition: sequence.cpp:158
bool isValid() const
Definition: sequence.cpp:118
void setPadding(const std::string &padChars)
Definition: sequence.cpp:202
const std::string & padding() const
Definition: sequence.cpp:197
std::string format(const std::string &fmt, Status *ok=nullptr) const
Definition: sequence.cpp:325
std::string index(size_t idx) const
Definition: sequence.cpp:267
size_t length() const
Definition: sequence.cpp:134
void setFrameSet(const FrameSet &frameSet)
Definition: sequence.cpp:244
Definition: error.h:28