Commit Graph

56 Commits

Author SHA1 Message Date
Noel Grandin
48e83f7be2 makeAny->Any in cppuhelper..cui
Change-Id: Ia54e6e9b71df68bd04c304a0bb02da8ebac74420
Reviewed-on: https://gerrit.libreoffice.org/34603
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-02-24 09:17:34 +00:00
Stephan Bergmann
e57ca02849 Remove dynamic exception specifications
...(for now, from LIBO_INTERNAL_CODE only).  See the mail thread starting at
<https://lists.freedesktop.org/archives/libreoffice/2017-January/076665.html>
"Dynamic Exception Specifications" for details.

Most changes have been done automatically by the rewriting loplugin:dynexcspec
(after enabling the rewriting mode, to be committed shortly).  The way it only
removes exception specs from declarations if it also sees a definition, it
identified some dead declarations-w/o-definitions (that have been removed
manually) and some cases where a definition appeared in multiple include files
(which have also been cleaned up manually).  There's also been cases of macro
paramters (that were used to abstract over exception specs) that have become
unused now (and been removed).

Furthermore, some code needed to be cleaned up manually
(avmedia/source/quicktime/ and connectivity/source/drivers/kab/), as I had no
configurations available that would actually build that code.  Missing @throws
documentation has not been applied in such manual clean-up.

Change-Id: I3408691256c9b0c12bc5332de976743626e13960
Reviewed-on: https://gerrit.libreoffice.org/33574
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2017-01-26 12:54:43 +00:00
Michael Stahl
6ef0336697 cppuhelper: implement environment mapping for constructor functions
ae3a0c8da5 unfortunately forgot to
implement mapping between UNO environments for constructor functions
in the UNO service manager, and due to the many componennt conversions
to constructor functions since then, the log UNO purpose environment
has become mostly useless.

Save the environment, create a closure today!

https://wiki.openoffice.org/wiki/Uno/Spec/Log_Environment

Change-Id: Idc03b5ed9529da8e81cd91efe50cbeceffa2b247
Reviewed-on: https://gerrit.libreoffice.org/33060
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2017-01-17 22:03:11 +00:00
Noel Grandin
d15b4e2045 teach sallogareas plugin to catch inconsistencies
Change-Id: I8bcea5ffc74d48148bea78da8c17744e288c069a
Reviewed-on: https://gerrit.libreoffice.org/32004
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-12-15 06:45:14 +00:00
Jochen Nitschke
61b00192cd tdf#88206 replace cppu::WeakImplHelper* in cppuhelper
Change-Id: I3130a3fe28c00bd83cade9667a6e3b3abcb719f7
Reviewed-on: https://gerrit.libreoffice.org/31714
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-12-07 13:25:50 +00:00
Noel Grandin
5c2c2d8dc4 loplugin:expandablemethods in comphelper..cppuhelper
Change-Id: I9d5487af4729bd3ee4f6450092e4b77f74a12e6d
Reviewed-on: https://gerrit.libreoffice.org/30717
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
2016-11-10 06:51:53 +00:00
Stephan Bergmann
d2615f96ac Improve some error reporting
Change-Id: Ibfdb0eeebec785438d46a0e8e6e9f4c847bfb807
2016-11-02 10:33:49 +01:00
Stephan Bergmann
91dd2db17b loplugin:override: No more need for the "MSVC dtor override" workaround
The issue of 362d4f0cd4 "Explicitly mark
overriding destructors as 'virtual'" appears to no longer be a problem with
MSVC 2013.

(The little change in the rewriting code of compilerplugins/clang/override.cxx
was necessary to prevent an endless loop when adding "override" to

  OOO_DLLPUBLIC_CHARTTOOLS    virtual ~CloseableLifeTimeManager();

in chart2/source/inc/LifeTime.hxx, getting stuck in the leading
OOO_DLLPUBLIC_CHARTTOOLS macro.  Can't remember what that
isAtEndOfImmediateMacroExpansion thing was originally necessary for, anyway.)

Change-Id: I534c634504d7216b9bb632c2775c04eaf27e927e
2016-09-13 13:19:22 +02:00
Noel Grandin
4722192098 Convert XmlReader::Result to scoped enum
Change-Id: I6a0d1dcf5ae51d2ac08aacdfec50865f93e51c21
Reviewed-on: https://gerrit.libreoffice.org/25365
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-25 11:59:08 +00:00
Noel Grandin
6bda2bf6fe Convert XmlReader::Text to scoped enum
Change-Id: I4741b13fcf887a95b85886cb41f8236e128e81a2
Reviewed-on: https://gerrit.libreoffice.org/25364
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-24 06:54:19 +00:00
Stephan Bergmann
14cd5182c5 Replace fallthrough comments with new SAL_FALLTHROUGH macro
...which (in LIBO_INTERNAL_ONLY) for Clang expands to [[clang::fallthrough]] in
preparation of enabling -Wimplicit-fallthrough.  (This is only relevant for
C++11, as neither C nor old C++ has a way to annotate intended fallthroughs.)

Could use BOOST_FALLTHROUGH instead of introducing our own SAL_FALLTHROUGH, but
that would require adding back in dependencies on boost_headers to many
libraries where we carefully removed any remaining Boost dependencies only
recently.  (At least make SAL_FALLTHROUGH strictly LIBO_INTERNAL_ONLY, so its
future evolution will not have any impact on the stable URE interface.)  C++17
will have a proper [[fallthroug]], eventually removing the need for a macro
altogether.

Change-Id: I342a7610a107db7d7a344ea9cbddfd9714d7e9ca
2016-05-10 16:42:16 +02:00
Jochen Nitschke
150ac9cf05 clean-up: unused using declarations and includes
Searched source for using declarations.
Checked if those symbols reappear in the source file,
even in comments or dead code but not in #include statements.
If they don't reappear, remove the declaration.
Remove includes whose symbol got removed.

Change-Id: Ibb77163f63c1120070e9518e3dc0a78c6c59fab0
Reviewed-on: https://gerrit.libreoffice.org/24148
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18 07:25:24 +00:00
Jochen Nitschke
98d7b02f2b tdf#94306 replace boost::noncopyable in cppuhelper
and related modules.
Replace with C++11 delete copy-constructur
and copy-assignment.

Change-Id: I18aa9fe4ff696f9b5472cbe4cd0097cb174618b7
Reviewed-on: https://gerrit.libreoffice.org/23904
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-04-08 09:32:48 +00:00
Julien Nabet
1151fec7a8 Let's use the iterator return by erase method (final)
Change-Id: I1934b0c2a9ae9fa089d7e9ded4a289908fb2709a
Reviewed-on: https://gerrit.libreoffice.org/23173
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-03-12 14:30:32 +00:00
Stephan Bergmann
79c11bb56e Use an XInitialization-based channel to request service mgr pre-init
...instead of private cppu::preInitBootstrap function

Change-Id: Id0e6fcf721b697c993e5acffaf7836452cfa9750
Reviewed-on: https://gerrit.libreoffice.org/22699
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tor Lillqvist <tml@collabora.com>
Tested-by: Tor Lillqvist <tml@collabora.com>
2016-02-26 12:37:04 +00:00
Henry Castro
6b41b89cc5 In loadAllImplementations(), also invoke component factory
Change-Id: Ie6f6d769b611c8440ddab802545e6bdc482d1476
2016-02-15 22:23:11 +02:00
Tor Lillqvist
682c48afd9 Just abort() in the DISABLE_DYNLOADING case for now
Should fix the build for Android.

Change-Id: Iabba9da8755805ad4d9d21d7a6b4b22e3fa6418f
2016-02-15 22:16:15 +02:00
Henry Castro
df5f7c6aba Introduce lok_preinit() to preload all registered UNO implementations
Intended to be used from an application like the LibreOffice On-Line
server so that it can be called in a process that then will call
fork() several times, and much space consuming data will end up being
shared.

Change-Id: I65341c57d00308d246ec90deab8050b2c4bb3e61
2016-02-15 16:17:53 +02:00
Stephan Bergmann
80c0767b98 Work around clang-cl PR25641
"defaultbootstrap.o : error LNK2001: unresolved external symbol
'[thunk]:private: virtual class com::sun::uno::Sequence<class
rtl::OUString> __cdecl cppuhelper::ServiceManager::getAvailableServiceNames`adjustor{24}'
(void)'
(?getAvailableServiceNames@ServiceManager@cppuhelper@@GBI@EAA?AV?$Sequence@VOUString@rtl@@@uno@star@sun@com@@XZ)"

Change-Id: I04b7353305ffeeb316d70ab8408aeb52ea0f7186
2015-11-28 08:44:53 +01:00
Stephan Bergmann
bf3f840302 loplugin:nullptr (automatic rewrite)
Change-Id: I62a63915dfc0bced2cd8ffe3999cbde5c4d97b0b
2015-11-10 10:31:21 +01:00
Noel Grandin
cb4fa1d1e2 use uno::Reference::set method instead of assignment
Change-Id: I080668f86f0ab8b3bba857ee21411f907ae285c4
2015-10-30 11:08:36 +02:00
Stephan Bergmann
b36963c0a6 Replace "SAL_OVERRIDE" with "override" in LIBO_INTERNAL_ONLY code
Change-Id: I2ea407acd763ef2d7dae2d3b8f32525523ac8274
2015-10-12 17:52:29 +02:00
Caolán McNamara
22b80ac8e2 boost->std
Change-Id: I3fd9e1599c5ad812879a58cf1dabbcd393105e1c
Reviewed-on: https://gerrit.libreoffice.org/18564
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2015-09-14 12:54:25 +00:00
Noel Grandin
7b4ca582fc convert RegError to scoped enum
Change-Id: I55977c38578cb59deb195d91f8948da2e0905b6a
2015-04-09 08:41:11 +02:00
Noel Grandin
95600edeaf convert RegValueType to scoped enum
Change-Id: Ic672e75db4d7323760577b19490ffa28d38965b6
2015-04-09 08:41:11 +02:00
Noel Grandin
1bdbe0b475 convert REG_ constants to scoped enum
Change-Id: I11d92218c5e0678d497f8964723033e2bd8b3300
2015-04-09 08:41:11 +02:00
Matúš Kukan
98bb53a560 fdo#80927: css.office.Quickstart should be single-instance service.
Incorrectly converted in a384b21cc4
where SFX_IMPL_ONEINSTANCEFACTORY was used.

AFAICS it's the first converted single-instance service which implements
css::lang::XInitialization. That's kind of strange but can do its job.

sbergman@redhat.com:  Three things were necessary in order to not call the
~ShutdownIcon code too late during exit now:

* Move the relevant code from ~ShutdownIcon to ShutdownIcon::disposing.

* Add a dummy <singleton name="com.sun.star.office.theQuickstart"/> so the
  service manager will eventually dispose the (single) instance.

* In
  cppuhelper::ServiceManager::Data::Implementation::createInstanceWithArguments
  do not shortcut updateDisposeSingleton in that odd case of calling
  createInstanceWithArguments on an implementation that (effectively) is a
  singleton (as otherwise the service manager would still not dispose it).  It
  looks to me like that "return inst;" was an inadvertent leftover in
  874c481801 "Simplify service manager's tracking
  of singletons" and wasn't intended to serve some subtle purpose.

Change-Id: Icd4d3168ec0bbb820b17ac321fe897ac9f9ce7fc
2014-10-08 14:45:54 +02:00
Matthew J. Francis
0af1c09b3a Eliminate memory leak due to circular shared_ptr
Without this, a Data::Implementation can have a circular reference of
shared_ptr to itself through .factory1

Change-Id: Ie05545e7ecc0ae85256d2c374fe79f0c678ccf64

Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2014-09-25 10:45:31 +02:00
Matthew Pottage
608ebc6f01 Remove redundant inclusions of header "cppuhelper/shlib.h"
Change-Id: Iab402035613a6cc96b7b4ebd2981a1fd0f8bed23
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>
2014-08-08 12:02:16 +02:00
Thomas Arnhold
530899ba18 cppuhelper: fix includes
Change-Id: I0e6bc822d19cf266dea716fe92f2ccd08d87c51f
2014-06-04 21:18:39 +02:00
Noel Grandin
e7bc3cab01 remove boilerplate in UNO Exception constructor calls
Now that we have default values for Exception constructor params,
remove lots of boilerplate code.

Change-Id: I620bd641eecfed38e6123873b3b94aaf47922e74
2014-05-23 15:06:00 +02:00
Matúš Kukan
5f0321b3d0 fix creating com.sun.star.sheet.Solver instance
Change-Id: I100d45b8f749ece5496d8e5a0e3343dee96f7138
2014-04-04 15:44:32 +02:00
Stephan Bergmann
70cc2b191b First batch of adding SAL_OVERRRIDE to overriding function declarations
...mostly done with a rewriting Clang plugin, with just some manual tweaking
necessary to fix poor macro usage.

Change-Id: I71fa20213e86be10de332ece0aa273239df7b61a
2014-03-26 16:39:26 +01:00
Noel Grandin
86a32589e9 Find places where OUString and OString are passed by value.
It's not very efficient, because we generally end up copying it twice -
once into the parameter and again into the destination OUString.

So I create a clang plugin that finds such places and generates a
warning so that we can convert them to pass-by-reference.

Change-Id: I5341a6ea9e3190f4b4c05c42c85595e3dcd83361
2014-03-18 08:32:26 +02:00
Stephan Bergmann
5e21a413c7 cppuhelper: retrofit std::exception into overriding exception specs
Change-Id: I56e32131b7991ee9948ce46765632eb823d463b3
2014-02-26 18:22:20 +01:00
Stephan Bergmann
874c481801 Simplify service manager's tracking of singletons
It only tracks whether to dispose a singleton instance now, and (at least
conceptually) no longer remembers the single instance (apart from what is
necessary in order to call dispose on it), as the underlying implementation
already needs to keep track of that to support direct calls of constructor
functions.

Change-Id: I154bf05438e1db099c1c5ffb1c56377725c6bfc6
2014-02-07 11:10:06 +01:00
Jan Holesovsky
c2c530da69 Introduce static inline cppu::acquire(), and make use of that.
This is much better approach compared to the callback function, as it allows
passing arguments to the c++ constructor directly, while still allowing some
additional initialization after having acquired the instance.

Change-Id: I5a0f981915dd58f1522ee6054e53a3550b29d624
2014-01-22 15:09:28 +01:00
Jan Holesovsky
f278397787 Change _get_implementation()'s not to do initialization directly.
Many of the initalizations (in eg. framework) have to be done on an
acquire()'d object, so instead of doing the initialization directly, return
the initialization member function back to the createInstance() /
createInstanceWithContext() / ... and perform the initialization there.

As a sideeffect, I belive the calling initialize() from servicemanager is not
that much a hack any more - whoever converts the implementation to be
constructor-base has the choice to provide the callback, or still initialize
through XInitialization, where the callback is preferred by servicemanager
when it exists.

Change-Id: I8a87b75c54c1441ca0f184967d31ff4902fc4081
2014-01-21 21:25:22 +01:00
Stephan Bergmann
585d5621f1 Simplify code; STATUS_LOADED => component||factory1||factory2
Change-Id: I661eb69551eae3d888d156c6bd4291a532d0b6ab
2014-01-20 23:30:49 +01:00
Jan Holesovsky
306efefe22 Minimize the constructor functions to a bare minimum.
Most of the constructors are supposed to be only a call of

  new TheInstance(arguments)

or an equivalent; so let's just change the constructor caller accordingly, to
accept unacquired new instance.

If there are exceptions that need to do more heavy lifting, they do not have
to use the constructor feature, or there can be a wrapper for the real
implementation, doing the additional work in their (C++) constructor.

Change-Id: I035c378778aeda60d15af4e56ca3761c586d5ded
2014-01-20 17:37:40 +01:00
Stephan Bergmann
997d211833 Support for singleton constructor functions
The service manager now keeps track of instances of singleton implementations
(i.e., implementations whose XML description lists at least one
<singleton ...>).  These instances will be disposed either when the service
manager is disposed, or, for instances that have been instantiated into the
component context's /singleton/* map, when the component context is disposed.

This change allows to use constructor functions for such singleton
implementations, too.

Change-Id: I220c9ddc9824e4d7f7556daefb599e2ec36b0e6c
2014-01-16 18:40:05 +01:00
Matúš Kukan
4337a0664f Use const& arguments parameter for ctor functions.
Change-Id: I19ce8bd1a23123ac9a62a7fc95cd54fea5315221
2014-01-15 08:51:27 +01:00
Matúš Kukan
bdeb57c239 Initialize constructor based implementations in one place.
Change-Id: I324f25bb5ec7d792c3e015815f2a11b08f519764
2014-01-15 08:51:25 +01:00
Stephan Bergmann
0506c3a1f0 FactoryWrapper is a misnomer now
Change-Id: I59d77b4712e273318409a326c835861dc467596c
2013-12-19 09:57:10 +01:00
Stephan Bergmann
ae3a0c8da5 Add .component <implementation constructor="..." feature
...to directly call constructor functions of ComponentContext-based C++
implementations of (non-single-instance) UNO services.  The case where these
calls would need to be bridged across different environments (e.g., from gcc3
to gcc3:affine) is not yet implemented.

bootstrap.component and expwrap.component are adapted accordingly as a proof-of-
concept (which had previously been adapted to use the prefix="direct" feature,
which may become unnecessary again in the end, depending on how to handle
single-instance services/singletons).  More to follow.

Change-Id: I18682d75bcd29d3d427e31331b4ce8161dbb846d
2013-12-19 08:48:56 +01:00
Stephan Bergmann
b1d65c9f15 Allow setting environment value directly in .component files
...for internal loader="com.sun.star.loader.SharedLibrary" components, instead
of exported component_getImplementationEnvironmen (or implicit
CPPU_CURRENT_LANGUAGE_BINDING_NAME).  Adapted a few .component files as proof-
of-concept, more to follow.

Change-Id: I82332e0a48e6fc1da245990bb72265fe6e58447e
2013-12-16 21:43:12 +01:00
Stephan Bergmann
9630b97355 Parser::attrImplementation_ can be a local var
Change-Id: I402040a4b747d457b1b7a3695d0b3567fa7bf478
2013-12-16 21:43:12 +01:00
Stephan Bergmann
698158655a Clean-up: The "_" delimiter is logically not part of the prefix
Change-Id: I60329aabe465da48aac11ad76dd72e9a0ae4d078
2013-12-16 21:43:12 +01:00
Stephan Bergmann
2f7b329297 [API CHANGE] remove cppu::loadSharedLibComponentFactory w/ rPrefix again
...it was never meant to be called by client code anyway and is no longer needed
to be exposed since the global service manager implementation moved to
cppuhelper.

Change-Id: If2d0510b2364084d36edeb156a3459d9b8aeb983
2013-12-13 15:13:57 +01:00
Stephan Bergmann
284347b764 Not being able to honor a "prefix" is a rather hard error
It happens when an extension has just been live-deployed into the running
soffice process and then trying to instantiate out-of-process in an additional
uno process one of that extension's shared library components and that component
---erroneously---uses the "prefix" feature.  (Which can be reproduced with the
mysql-connector-ooo.oxt extension, --enable-ext-mariadb-connector: "rm -rf
instdir/*/share/extensions/mysql-connector-ooo", "instdir/*/program/soffice
workdir/*/Extension/mysql-connector.oxt", install the per-user, then "File - New
- Database - Connect to an existing database: MySQL - Next >> - Connect directly
- Next >> - Database name: foo - Server / Port - Server: bar - Next >> - Test
Connection", crash.)

Change-Id: Ibab2ad31199eec5dc26ffa337a5e3e7490f782d7
2013-10-11 15:03:11 +02:00