see https://gerrit.libreoffice.org/#/c/3367/
and Change-Id: I00c96fa77d04b33a6f8c8cd3490dfcd9bdc9e84a for details
Change-Id: I199a75bc4042af20817265d5ef85b1134a96ff5a
Make uno-skeletonmaker work on top of unoidl/ instead of registry/.
These changes have only been tested so far rather lightly. Basic
uno-skeletonmaker still works, but more thorough testing of the various input
flags is needed.
Change-Id: Id7f3aee863a10f8c649325db2d6f34a4057f70ff
Make javamaker work on top of unoidl/ instead of registry/.
API CHANGE: javamaker no longer supports the -B switch, as that is meaningless
with the new format. When reading from an old-format .rdb file, /UCR is hard-
coded as the prefix now.
Change-Id: I8cca39f8ebacd0476934f7bd493d206928d063a9
This reverts commit ba8372449b.
The "reg" library is not actually a stable URE interface.
Conflicts:
odk/CustomTarget_doxygen.mk
registry/Module_registry.mk
Change-Id: Ic53e1b8eecd6a12c9ec194df2f0093004db7c01b
Make cppumaker work on top of unoidl/ instead of registry/, as a first step to
change all the various codemakers.
* API CHANGE: cppumaker no longer supports the -B switch, as that is meaningless
with the new format. When reading from an old-format .rdb file, /UCR is
hard-coded as the prefix now.
* TODO: The new format does not yet support deprecation annotations, so the
generated .hdl/.hpp files lack any SAL_DEPRECATED_INTERNALs for now.
* codemaker/typemanager.hxx is extended with access to unoidl/ functionality, so
the various codemakers can use registry/ and unoidl/ in parallel for now.
The access to registry/ functionality will be removed. (Added small throwaway
helper functions u2b/b2u to easily map between OString and OUString at the
remaining seams for now.)
* Includes a selective revert of ba044b1e96
"remove needless forward rtl::OUString declarations" in those parts of
codemaker, unodevtools, unoidl that were covered by this local
work-in-progress patch; I would otherwise have hard a hard time re-applying
it.
* The generated .hdl/.hpp files are mostly unchanged, except for a few minor
things:
** Any SAL_DEPRECATED_INTERNALs are missing (see above).
** In comprehensive getCppuType definitions, some members were erroneously
classified as TypeCalss_UNKNOWN.
** In comprehensive getCppuType definitions, some unnecessary calls like
::cppu::UnoType< ::sal_Int32 >::get();
can be removed.
** For typedef sequence<X>, the .hdl file need not include X.hdl, but only needs
to forward-declare it.
** Unnecessary includes for optional bases of interfaces can be removed.
** Some numbering of local variable names (sMethodName1, ...) has changed.
Change-Id: Icad98f248ac15177337f1b4ab709a755a8af6238
Modules sal, salhelper, cppu, cppuhelper, codemaker (selectively) and odk
have kept them, in order not to break external API (the automatic using declaration
is LO-internal).
Change-Id: I588fc9e0c45b914f824f91c0376980621d730f09
...by switching from boost::unordered_map to std::map; mainly to be able to
easily diff workdir/*/UnoApiHeadersTarget trees for regressions with upcoming
changes to cppumaker.
Change-Id: I286f9828ef2918ace635ecd551ac273f2cba803d
Now we build only what we really need for 'build' platform - there is
new build-tools make target.
The list of tools is in solenv/gbuild/extensions/pre_BuildTools.mk.
Also similar is done to some extent for 'host' platform using
gb_Module_add_targets_for_build which is ignored for 'host'.
Change-Id: I6acd1762b16aca366aac1a0688500f27869cfca2
...so include the latter in isBootstrapType too, see
dee53a32a9 "Temporary hack around
cppu_detail_getCppuType variants violating ODR."
Change-Id: I613cf3d8699eccb149e0e1d31f4398a426ce0966
More macros removed, and some simplifications when callind methods.
Conflicts:
codemaker/source/javamaker/javatype.cxx
Change-Id: If55046a5a9ceb6c8c84f3fa190f26cc9e1dde352
For more easy review, this is the first part of these changes.
More will come :)
Change-Id: Ic6ab0c7baebf0414dbcccb5dcfad434b3b07964c
Reviewed-on: https://gerrit.libreoffice.org/2595
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
And another cleanups like removing RTL_CONST* macros and other simple
things.
Much more can be done inside codemaker.
Change-Id: I338e1c0e88558124741c6202896355533535a129
Reviewed-on: https://gerrit.libreoffice.org/2583
Reviewed-by: Thomas Arnhold <thomas@arnhold.org>
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
...that had once been workarounds for compilers that did not yet support the
C++98 scoping rules for declarations in for-init-statements.
Change-Id: I51dc42982b30bf3adea6de1a10a91c0b4b4acfbe
Exception specifications are useless for production code, but make
for useful assertions in dbgutil builds (on platforms where they
are enforced at runtime).
Because we do not have API tests that exhaustively trigger all
documented error conditions, much less the undocumented or wrongly
handled error conditions that would cause the implementation to violate
its API specification, there is likely some benefit in having these
runtime-checked specifications in debug builds, in the hope that our
various tests which may incidentally call various API methods, or
general soffice usage, uncovers these bugs.
Also, there may be some benefit to making API implementers more
aware of the exception specifications, to quote Stephan's mail:
To be able to programmatically react to an exception raised by a UNO
method (which is the raison d'être of non-runtime UNO exceptions), the
specification of that method must document the method's behavior with
respect to raising that exception, and any implementation of the method
must adhere to that specification. However, with that part of a UNO
method's interface moved out of sight of a programmer writing a C++
implementation of that method, I fear that adherence to specification
will degrade in practice. And that negatively affects an area where we
do not shine anyway: reaction to errors.
This partially reverts commits:
0295bd6b3f155cd09b5e
Change-Id: I9c7664c9f1b238f4f9501aacb065981236949440
This changes all generated API headers (.hpp and .hdl) to use a
namespace alias 'css' instead of the pointlessly long com::sun::star
Makes the change in cppumaker & associated tools, adds a global
namespace alias definition in sal/types.h, and removes a kiloton
of local, now pointless-to-harmful versions of that alias from all
over the code.
Change-Id: Ice5a644a6b971a981f01dc0589d48f5add31cc0f
The general agreement in the project is that c++ exception
specs are pointless and add bloat in production code.
See also this rant for more background:
http://drdobbs.com/cpp/184401544
This removes the code that generates the exception specs on the
generated c++ headers, and fixes up the few places that broke
subsequently because of widening exception specs, which in turn
was due to the rather unfortunate decision to not have a virtual
dtor in XInterface.
Change-Id: I60db26e1cc4d4fe6eeef5975e39497841e92588a
...as there are typically no direct calls to it anyway. What is apparently
needed is to decorate the cppumaker-generated headers instead:
* cppumaker obtains deprecation-information from the documentation strings in
.rdb files. As these are normally generated by idlc without documentation
included (no -C), idlc got changed to nevertheless contain documentation
consisting of just "@deprecated" in this case, to allow to easily tunnel this
information to cppumaker always.
* The mechanism of parsing for "@deprecated" in documentation strings is
somewhat crude, of course.
* For now, cppumaker only decorates C++ functions that correspond to UNOIDL
interface attributes and methods. More should be possible (but, e.g., being
able to decorate a complete C++ class corresponding to a deprecated UNOIDL
interface type depends on whether all platforms would accept
SAL_DEPRECATED_INTERNAL at the same position in a C++ class declaration.
* This could also be extended to other languages than C++/cppumaker.
* Always using SAL_DEPRECATED_INERNAL instead of SAL_DEPRECATED for decoration
is to keep things simple and our codebase working. Improvements are possible
here, too, of course.
Change-Id: Ia2917892f780d477652e4cd9f286588a6898c3f5