I have restructured the whole library in the following aspects:
Full use of C++ and STL; no more C-style. There were many C-style parts, like raw pointers, manual dynamic allocation, etc.
Separate each class into a separate file
Put everything in the fcwt namespace
Wavelet is now a pure virtual class
A lot of performance improvements by making the code const-correct and marking noexcept.
Replaced the "fcwt" class with the API class; usage: fcwt::API
And many more
We will probably need to regenerate the auto-generated Python bindings.
At the moment, I have not touched the API class much, as it is closely related to the underlying C-API. The next step will be to refactor this to modern C++, especially making use of unique_ptr, which allows us to define a deallocator for it. This will make it possible to automate the deallocation of FFT memory (and respect the RAII principle, which is the basis of modern C++).
I have restructured the whole library in the following aspects:
We will probably need to regenerate the auto-generated Python bindings.
At the moment, I have not touched the API class much, as it is closely related to the underlying C-API. The next step will be to refactor this to modern C++, especially making use of unique_ptr, which allows us to define a deallocator for it. This will make it possible to automate the deallocation of FFT memory (and respect the RAII principle, which is the basis of modern C++).