btzy / nativefiledialog-extended

Cross platform (Windows, Mac, Linux) native file dialog library with C and C++ bindings, based on mlabbe/nativefiledialog.
zlib License
598 stars 89 forks source link

Add versioned API #128

Closed btzy closed 1 week ago

btzy commented 5 months ago

This PR adds a new API function for each of the four kinds of dialogs, which take in a versioned struct. The version is set by an inline function in nfd.h, and the library checks the version to determine the number of fields in the struct. Additional fields can then be added to the end of the struct without breaking forward compatibility (binary built with an older version of NFDe works with a newer version of NFDe) or backward compatibility (automatically by ignoring the additional fields).

This will allow new options to be added without breaking forward compatibility, which will make #90, #93, #99, and #126 implementable.

Resolves #92.