kossebau added a comment.

  @dfaure Thanks for first in-detail feedback, good to get a feeling this is 
not totally insane over-engineered stuff to other people'e eyes :)
  
  In D23789#528994 <https://phabricator.kde.org/D23789#528994>, @dfaure wrote:
  
  > Great work. Not really easy to grasp at first sight (because it handles BC 
for no-compat builds of the lib itself, which we never did before) but this is 
certainly quite comprehensive.
  
  
  It's basically trying to solve 2 problems at the same time, as they both 
would be solved by the same macro techniques:
   a) allow control over warnings and API visibility to people building against 
the library (incl. 2 level settings by additional library group level)
  b) allow building of the library itself with legacy code stripped
  
  If there are suggestions for better wording of variables/arguments, or 
improved ordering/threading of the documentation, all eager to hear. Myself 
still too much into thinking about details to be able to simulate a 
first-contact experience again, where ideas are taken from docs and term 
semantics :)
  
  > Since we don't yet have any source compat to worry about for these macros 
(unlike Qt, which needed _X variants for that), how about simply adding a third 
argument to FOO_DEPRECATED_VERSION right away, to allow specifying a hint in 
the compiler warning, provided the compiler supports C++14?
  > 
  > kio's src/core/job_base.h:77 would become
  > 
  >   KIOCORE_DEPRECATED_VERSION(5, 0, "use uiDelegate()") KJobUiDelegate *ui() 
const;
  >    
  > 
  > If your first version just ignores the argument, at least we'll start 
writing those hints and we can work on making cmake's GenerateExportHeaders 
support that, or fork it here to support it.
  
  As there might not be always a simple hint text, I would still like to also 
keep the just-version variant of that macro. So if we overload the macro name 
to support both 2 (major, minor) and 3 (major, minor, message) arguments,  any 
simple way to do default argument value with C++ preprocessor macros? Never 
wrote such code myself, all things I just found do complicated dances around 
__VA_ARGS__ of which I none could resolve to a simple application for our 
single-parameter default value yet.
  
  So, any C++ macro  magicians around to be able to tell how to support both
  
    KIOCORE_DEPRECATED_VERSION(5, 0)
    KIOCORE_DEPRECATED_VERSION(5, 0, "use uiDelegate()")
  
  while also making sure there is only one argument, and not many? (at least 
that would be my ambition here to catch this ourselves, instead of just taking 
__VA_ARGS__ and pass it on, to fail later if >1 args are used.

REPOSITORY
  R240 Extra CMake Modules

REVISION DETAIL
  https://phabricator.kde.org/D23789

To: kossebau
Cc: dfaure, cgiboudeaux, kde-frameworks-devel, kde-buildsystem, LeGast00n, 
GB_2, bencreasy, michaelh, ngraham, bruns

Reply via email to