Fileseq C++ API
A library for parsing file sequence strings commonly used in VFX and animation applications.
CHANGES
Changes:

2.12.0
----------------

* cpp - fix potential FileSequence memory leak during copy; switch to unique_ptr private data member
* cpp - use shared_ptr for internal map management instead of custom deleter
* cpp - clang-tidy formatting

2.11.2
----------------
* go/cpp: fix regex to handle parsing complex extensions with single character component ("file.1.a.ext")
* go/cpp: improve handling of ambiguous frame patterns in FindSequenceOnDisk ("100.1.ext")
* go: remove print statement from FindSequenceOnDiskPad

2.11.1
----------------
* cpp - Fix FrameSet::inverted() memory leak
* cpp - Fix framesToFrameRange() bad formatting with 2 frames

2.11.0
----------------
* go/cpp - Implement UDIM style syntax for padding
* go/cpp - Fix parsing error by relaxing acceptable characters in extension component (align with pyfileseq)

2.10.0
----------------
* go - Prevent single file path from being appended more than one FindSequences*
* go - Fix FindSequencesInList formatting bad sequence string for single-file sequence with ambiguous range-ish pattern
* go/cpp - Refactor FindSequences* to use optional frame range pattern when detecting single frame paths

2.9.0
----------------
* Split the FindSequencesOnDisk logic to expose new FindSequencesInList function

2.8.0
----------------
* go/cpp - Add support for printf (%04d) and houdini ($F04) pad syntax formats
* cpp - Prevent segfault when calling getters on default constructed FileSequence; return default values
* cpp - Define FileSequence::operator bool() to return FileSequence::isValid()
* cmd/seqls - Update to a faster parallel filesystem walk library
* go - Update to Go 1.15.x

2.7.1
----------------
* cmd/seqls - Switch to a faster parallel filesystem walking library

2.7.0
----------------
* Removed vendored Go dependencies
* Fix handling of Windows path separator in FileSequence.SetDirname and findSequencesOnDisk
* cmd/seqls - Properly build against gofileseq/v2
* cmd/seqls - Add --hash1 flag to use pad hash width=1 instead of 4
* cmd/seqls - Add --strict flag to apply strict length of search pattern pad character to matches
* cpp: Add a cmake build setup

2.6.3
----------------
* Convert from Glide to Go module

2.6.2
----------------
* Add Go module support as v2
* exp/cpp: cleanups of experimental go/cpp binding

2.6.1
----------------
* Support a negative stepping value when start > end in frame range string pattern
* cpp: Prevent compiler warnings from int vs size_t

2.6.0
----------------
* cpp: Using C++11 and std::regex by default. Detect older compilers and use libpcre automatically as needed.
* go/cpp: Preserve complex file extensions parsed after a frame, such as file.0001.tar.gz (".tar.gz")

2.5.0
----------------
* go: Use strings.Builder instead of bytes.Buffer for less allocations (requires go >= 1.10)

2.4.0
----------------
* Update FindSequencesOnDisk to sort mixed frame padding into discreet sequence results
* Allow strict padding length check when filtering files for pattern match in FindSequenceOnDisk
* go/cpp: Adjust path split regex to better handle range directive chars being used at the end of a base name

2.3.1
----------------
* cpp-port: Fix: FrameSet::isValid() would return true even if it had a zero length range

2.3.0
----------------
* cpp - pure c++ port now available

2.2.3
----------------
* #8 - Bug: Use deterministic resolution of the padding character in findSequencesOnDisk()

2.2.2
----------------
* cmd/seqinfo - New tool for parsing and printing info about one or more file seq patterns
* Refactored vendoring into cmd/ location

2.2.1
----------------
* waf c++ build flags updated for static lib to avoid errors about -fPIC when link into another C++ lib

2.2.0
----------------
* #6 - Bug: Single frame parsing for padding and zfill does not match py-fileseq
* #7 - Feature: Allow option for changing frame padding styles (i.e. to something like Nuke)

2.1.0
----------------
* cpp - New C++ bindings on top of gofileseq

2.0.1
----------------
* cmd/seqls - Detect symlinks to directories and don't interpret them as discovered sequences

2.0.0
----------------
* Major refactor to the underlying logic of resolving ranges. Use an optimized storage and iteration approach, in order to
handle arbitrarily large ranges. Avoids memory allocation crashes, and very slow construction of FrameSet/FileSequence

Known Issues:
* While creating a FrameSet from a massive range like "1-10000000000x2" will be very quick, creating
FrameSets from multi-ranges with massive components like "20,50,60-10000000000" may be slow.
Improvements are still needed to the process of detecting unique values in the previously added
range components.
* Invert/Normalize functions are not as optimized as they could be. While they are much faster now for the common case of source
ranges like "1-10x2,50-100x3", they are significantly slower for less common cases where the source range is a massive amount
of individual values like "1,2,3,4,...,100000"

1.0.0
----------------
* cmd/seqls - Large refactor ; added support for passing sequence patterns (path/files.#.jpg)
* cmd/seqls - Skip hidden directories (in addition to hidden files), unless -a flag is used
* Docstring corrections


0.9.9
----------------
* Add support for reverse frame ranges (10-1)
* Improve the logic for parsing non-sequence single file paths
* Improve the logic for parsing frame numbers
* Add options to FindSequencesOnDisk for showing hidden files
* Fix various parsing conditions that could crash FindSequencesOnDisk
* seqls: Expose options for all / hidden files in results


0.9.2
----------------
* seqls: Buffer stdout


0.9.1
----------------
* Tweaks to gox cross-compiling
* seqls: Added a -quiet flag
* seqls: Format adjustments for Windows platform
* seqls: Continuing listing, even when encountering file errors


0.9.0
----------------
* Initial Release