skypjack / uvw

Header-only, event based, tiny and easy to use libuv wrapper in modern C++ - now available as also shared/static library!
MIT License
1.87k stars 211 forks source link

Filename extension of some headers changed? #195

Closed abrownsword closed 4 years ago

abrownsword commented 4 years ago

In some release since the last one I was using (2.1.0), many (but not all) of the header files changed from being .hpp to .h. This is annoying if you're including specific headers instead of the uvw.hpp. Why was this done and what is the significance of .h vs .hpp?

skypjack commented 4 years ago

With the last versions, we switched to a dual mode library. That is, you can use it as header-only library or as a precompiled one. Because of that, many class definitions that were contained in their own .hpp file (.h + .cpp file, declaration + definition) have been split in two files. This is more or less the reason for which many .hpp files turned to the .h extension.

stefanofiorentino commented 4 years ago

I could only confirm what @skypjack said. uvw was implemented into .hpp because of the "header-only" status. Once the static/shared came into play, we did split the declarations and definitions in .h/.cpp wherever possible. Is your question about compilation time? or what else? In case you use static/shared deployment, to include uvw.hpp brings similar effect to include specific headers in header-only configuration.

skypjack commented 4 years ago

I'm closing this issue as a question for which an answer has been provided. Feel free to reopen it if you find this isn't the case though. Thanks.