<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/105299/">http://git.reviewboard.kde.org/r/105299/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On July 4th, 2012, 7:28 a.m., <b>Aleix Pol Gonzalez</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Do we really need to add a dependency between ILanguage and the Project system?

Isn't too abstract to pass a string list only? How is the buildsystem supposed to know what to return?</pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The ILanguage introduction in IBuildSystemManager is necessary because the same file could contain several languages, therefore we need to discriminate between them. Instead of a reference to ILanguage we could use a string with the name of the language - because basically I don't think there is use for more than the name() method in there.

About using a string list, this is exactly the place where you want to be abtract. Language features are a contract between language support and the build manager. The returned values only make sense to the targeted language support. For instance, CppLanguageSupport would recognize strings such as "C99" or "C++11" and tune the parser accordingly. But you can also imagine that this could be extended to contain other information like additional defines or include paths, although we have other functions (defines, includeDirectories) in IBuildSystemManager that serve these specific purposes. Btw, these are *not* abstract enough IMHO, since they bring very C-like concepts (defines, includes) down into the IBuildProjectManager interface, which should be generic. They would be better-fitted as the second or third members of the QStringList, for instance. Of course every language would need to have its own convention as to what is returned and where that both build managers and language supports should follow.

What do you think should be returned instead of a QStringList here?</pre>
<br />








<p>- Alexandre</p>


<br />
<p>On June 20th, 2012, 1:43 a.m., Alexandre Courbot wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for KDevelop.</div>
<div>By Alexandre Courbot.</div>


<p style="color: grey;"><i>Updated June 20, 2012, 1:43 a.m.</i></p>






<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Add support for "language features"

Sometimes the same language can run using different variants - the most
obvious example is the C++ language support, which may also support C
and other variants and behave differently according to the type of file.

This patch adds a new method to IBuildSystemManager allowing it to get a
list of features to pass to ILanguageSupport::createParseJob as an
additional argument. ILanguageSupport can then adapt the behavior of its
parser according to the features the build manager says the parsed file
uses.

Corresponding support for kdevelop (since this patch breaks API compatibility) is there: https://git.reviewboard.kde.org/r/105300/</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Compiled kdevplatform & updated kdevelop, checked things were working.</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>language/backgroundparser/backgroundparser.cpp <span style="color: grey">(417a8e4b7f38acfa959959895f186c11e3a76f93)</span></li>

 <li>language/backgroundparser/tests/testlanguagesupport.h <span style="color: grey">(ed3864c9e8da8eed97d3d91500eec6c623fae41e)</span></li>

 <li>language/backgroundparser/tests/testlanguagesupport.cpp <span style="color: grey">(3f88894d728610ebd433bff46936f38dcd2138be)</span></li>

 <li>language/interfaces/ilanguagesupport.h <span style="color: grey">(22cedf09656aaf80275dd3a14d3752003fe9a912)</span></li>

 <li>project/interfaces/ibuildsystemmanager.h <span style="color: grey">(c0813d8f781b0be29829b9278f191299af823b68)</span></li>

 <li>project/interfaces/ibuildsystemmanager.cpp <span style="color: grey">(74af0e76f8c8bc9276d79ff54be4d3d41927c298)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/105299/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>