Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restructured entire code base to modern C++ #58

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

bilaljo
Copy link

@bilaljo bilaljo commented Mar 3, 2024

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++).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant