<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><span class="tab">    <br></span><div><span class="tab">    Hi all,</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><br><span class="tab"></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab">    I' d like to propose a change in the behaviour of SMOKE. Currently it treats all headers it parses the same way, regardless of whether they are wrapped or simply dependencies. This leads to the following problems:</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color:
 transparent; font-style: normal;"><span class="tab">    1. </span><span class="tab">Repetition of functions and enums</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab"></span><span class="tab"></span><span class="tab"></span><span class="tab"></span><span class="tab"></span><span class="tab"></span><span class="tab"></span><span class="tab"></span><span class="tab">    </span><span class="tab">    </span>All functions and enums of core modules are generated in each module that depends on this core. Arno, with some help from me, has been working on some changes that load the already compiled SMOKE libs and for each function or enum check if it is already there and if so, skip it. This works with the exception of SMOKE KDE, with which Arno has some problems. Besides, I strongly
 believe this is only a workaround because these functions and enums should've been dropped when still parsing the headers.</div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab">    2. Repetition of classes</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab">    </span><span class="tab">    </span>Classes do not actually repeat but this is only because the requested classes are explicitly defined in the smokeconfig.xml. I think this enumerating of classes is a bad idea because it kills the whole point of automation, in theory, and creates the need of manually reviewing the API of the bound lib with every new version, in practice (Qt 5, for example). Therefore I
 attempted some changes causing the generation of simply all public classes in the headers, with the exception of some internals found by trial and error (the only way I am aware of). For that purpose I extended Arno's changes from 1. to check for repeating classes as well. The result was that those black lists of internals of core modules had to be repeated in every smokeconfig of dependant modules because as the internals were not generated, the check for repetition could not find them and the logic attempted to generate them in the new module. While there may be some kind of workaround for that, I am convinced that the need for a second workaround is proof that the problem should be solved another way.<br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab"><br></span></div><div style="color: rgb(0, 0, 0); font-size: 16px;
 font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab">    I would like to try and implement this distinction in headers. However, to determine the </span><span class="tab">best place to introduce the changes, I need to know in details the whole process of parsing headers and extracting types and members from them. So I'd like to ask everybody familiar enough with SMOKE to lay it out as much as they can. Thanks.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab">    <br></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: times new roman,new york,times,serif; background-color: transparent; font-style: normal;"><span class="tab">    Dimitar</span><br><span
 class="tab"></span></div></div></body></html>