<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Priority</th>
          <td>medium
          </td>
        </tr>

        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - get rid of prex.h / postx.h wrapper headers"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=82577">82577</a>
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>libreoffice@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>libreoffice-bugs@lists.freedesktop.org
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>get rid of prex.h / postx.h wrapper headers
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux (All)
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>mstahl@redhat.com
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Other
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>Inherited From OOo
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Libreoffice
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>LibreOffice
          </td>
        </tr></table>
      <p>
        <div>
        <pre>includes of X11 headers in LO are wrapped with
#include <prex.h>
and
#include <postx.h>

this is because old LO code, especially in "tools" and "vcl",
defines types that have the same names as X11 types,
so the headers do a bunch of stupid macro hackery
to rename the X11 types so they don't collide with LO types.

it would be obviously much simpler if the LO types
simply had names that don't collide with X11 types.

"git grep" or ctags or opengrok.libreoffice.org
should find the definitions of types in LO that are re-defined
in the wrapper headers.

there are several ways to clean up collisions:

1) if there is no equivalent in LO of the redefined type,
   it can just be removed from the wrapper header

2) in some cases it can be avoided to have the X11 type
   and the LO type visible in the same LO source file
   by not including both the defining LO and X11 headers

3) if the X11 type is not a macro, then putting the LO
   type into a namespace and namespace-qualifying the uses
   should avoid the collisions

4) if the X11 type is a macro, then adding a namespace
   prefix to the LO type is probably required</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>