Commit Graph

673 Commits

Author SHA1 Message Date
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
Alexandre Vicenzi
f9369d33a4 fdo#54938 Convert to cppu::supportsService
Change-Id: I512c525029ebd63d261560d27e9f38bbe94f7e10
Reviewed-on: https://gerrit.libreoffice.org/7649
Tested-by: LibreOffice gerrit bot <gerrit@libreoffice.org>
Reviewed-by: Marcos Souza <marcos.souza.org@gmail.com>
Tested-by: Marcos Souza <marcos.souza.org@gmail.com>
2014-02-03 14:35:46 +00:00
Stephan Bergmann
9e77c2fb7c Remove UNOIDL "array" and "union" vaporware remnants
...and deprecate what cannot be removed for compatibility.

Change-Id: I1ea335af775b867b468b8285113631167729a92a
2014-01-31 10:15:47 +01:00
Stephan Bergmann
c68a8f4558 bool improvements
Change-Id: Iaf63fd2282ce8de4f4c3dc7120afe1bc0613228a
2014-01-28 20:26:29 +01:00
Tor Lillqvist
24386ce4e3 Log what we are about to "load" in the DISABLE_DYNLOADING case
Change-Id: I75b9511e82d57da453527e7bc497ec1523ab2216
2014-01-24 17:58:22 +02:00
Stephan Bergmann
e3133ae237 Let C++ inline functions return bool instead of sal_Bool
...to improve diagnosing misuses of boolean expressions in client code (cf.
compilerplugins/clang/implicitboolconversion.cxx).  This change should be
transparent to client code.

Missing overloads of insert() for bool have been added to OStringBuffer and
OUStringBuffer (which required dropping one !VALID_CONVERSION check that would
now pick that overload, but would be flagged by
compilerplugins/clang/pointertobool.cxx).

Change-Id: I2d64cd923b8f47bfaa31e753def6515c29a3f8c9
2014-01-23 18:43:53 +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
Michael Stahl
2646b1594d cppuhelper: valgrind complains about uninitialized variable...
... cppuhelper::ServcieManager::Data::Implementation::dispose

Change-Id: I70a96e608f17eb6630326bbf32fff5fb5d7d4569
2014-01-16 21:50:59 +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
Tor Lillqvist
88e9329265 Use SAL_WARN, too, to increase chance of actually seeing the message
Passing an, as such useful, verbose error message to the
CannotActivateFactoryException constructor is fairly pointless if that
exception ends up being unexpected and causes program
termination. Which of course is exactly the case when one would be
very interested in seeing any message associated with the exception.

Change-Id: I1cd987669e39e47d5f072690dc5013e4a42fd50a
2014-01-14 19:02:18 +02:00
Noel Grandin
82625bb98e remove unnecessary sal_Unicode casts in OUStringBuffer::append calls
Convert code like:
    buf.append( static_cast<sal_Unicode>('!') );
to:
    buf.append( '!' );

Change-Id: Iacb03a61de65a895540940953b49620677b3d051
2014-01-07 09:43:37 +02:00
Matúš Kukan
202ea1975c Only component-mapping.h is needed here.
Change-Id: I09fc944d7d19e8a2804d8530ba2a98b5719d8b37
2014-01-01 20:13:42 +01:00
Andras Timar
b55259eeb5 typo fixes
Change-Id: Ia5f104bfd707bcf4e159c78ca2764c861fb0b6d9
2013-12-20 15:55:00 +01:00
Stephan Bergmann
3aac1ebd02 Missing initialization
Change-Id: I177da4fbe87eacfb86b6196df3d023218b1c9012
2013-12-19 11:00:13 +01:00
Stephan Bergmann
023e49921e Legacy cppu::loadSharedLibComponentFactory isn't DISABLE_DYNLOADING cond.
Change-Id: I020d4fc382470d7bc08df9b88e42ac62c97cb47e
2013-12-19 10:56:58 +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
Matúš Kukan
d8bbae2fd6 Get more --disable-dynamic-loading code out of shlib.cxx.
It's not terribly nice, but, hopefully, better.
The hope is that one day, lo_get_library_map will be no more.
In lo_get_implementation_map we can specify more precisely what to link
into the binary.

Change-Id: I99a1854fbae05be2f70302cc56bea88e522ec129
2013-12-18 07:15:49 +01:00
Matúš Kukan
e20f27f0a0 bootstrap component: Split into implementation functions.
Change-Id: I91cb0177edd79485eab885e995e79b1a19a769d5
2013-12-18 07:15:49 +01:00
Matúš Kukan
562b21949f Deduplicate some foo_component_getFactory declarations.
Change-Id: I9304b62134bab375b721399ae078bf66e01191d8
2013-12-18 07:15:47 +01:00
Matúš Kukan
b6cebf4a3e Allow UNO component libraries to have each implementation in its own function.
Demonstrating on expwrap library.

There is hope, this will bring code size savings for mobile
platforms, where we don't need every implementation.

Change-Id: I3519fb6148fd7a47ed9df092c73779ea6add552f
2013-12-18 07:15:46 +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
a83b2af9ab Clean-up uno/lbnames.h
Change-Id: I4bd729499aa8be58f04194656e35c1f79d5d4919
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
Julien Nabet
332a317ea5 cppcheck: fix same expression, ')' = 29 not 28 in ascii'
Change-Id: I90e22a5532f59b190c59d267256b5e889e82da74
2013-12-13 23:30:29 +01:00
Stephan Bergmann
a4ed79bbf6 Shortcut common case of calling same-env component_getFactory fn
Change-Id: I7f5d31c3b3e128b2df4d83c915673bf7b5d2ab8c
2013-12-13 16:18:52 +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
Marcos Paulo de Souza
eebc1e9a8a fdo#60698: Merge fastsax and sax_shared into expwrap
Change-Id: I6f8c6827c00db50184a46f39968f882b944d18d4
Reviewed-on: https://gerrit.libreoffice.org/6967
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: LibreOffice gerrit bot <gerrit@libreoffice.org>
2013-12-11 20:45:30 +00:00
Matúš Kukan
9386576139 Let's have a static variable for getenv("UNO_ENV_LOG").
Change-Id: Id382726b86726515a9ae3017c11fad0420136a4c
2013-12-11 17:54:55 +01:00
Stephan Bergmann
49fa300703 Don't call Manager::addProvider(null) upon optional NoSuchFileException
Change-Id: I62e953c886886158f227362fef7048459192217b
2013-11-11 13:18:49 +01:00
Noel Grandin
fcd1637d51 convert OUString compareToAscii == 0 to equalsAscii
Convert code like
   aStr.compareToAscii("XXX") == 0
to
  aStr.equalsAscii("XXX")
which is both easier to read and faster.

Change-Id: I448abf58f2fa0e7715dba53f8e8825ca0587c83f
2013-11-11 12:58:13 +02:00
Noel Grandin
0a9ef5a18e convert OUString 0==compareToAscii to equalsAscii
Convert code like:
   0 == aStr.compareToAscii("XXX")
to
   aStr.equalsAscii("XXX")
which is both clearer and faster.

Change-Id: I2e906d7d38494db38eb292702fadb781b1251e07
2013-11-11 12:58:12 +02:00
Noel Grandin
e52779d2f8 remove unnecessary use of OUString constructor
Change-Id: Ifb220af71857ddacd64e8204fb6d3e4aad8eef71
2013-11-11 11:21:26 +02:00
Noel Grandin
0e6a2601b3 Convert code that calls OUString::getStr()[] to use the [] operator
This also means that this code now gets bounds checked in debug builds.

Change-Id: Id777f85eaee6a737bbcb84625e6e110abe0e0f27
2013-11-04 08:06:10 +02:00
Michael Stahl
d8be8a9c17 cppuhelper: remove obsolete Package_unorc
Change-Id: I4d513b69527ac21949f03b847a4638b92aef0a3e
2013-10-24 17:56:06 +02:00
Chr. Rossmanith
1ed2c24a6e remove RTL_CONSTASCII_(U)STRINGPARAM
Change-Id: I0bce921bfc7102b9a33b1c87eee3ddec0ebaed7b
Signed-off-by: Stephan Bergmann <sbergman@redhat.com>, with one little typo fix
2013-10-23 10:44:09 +02:00
Noel Grandin
7a06928bcf convert code to use OUString::endsWith
Convert places that call
   aStr[aStr.getLength()-1] == 'x'
to use the shorter form
   aStr.endsWith("x")

Change-Id: I1b3a19c0e89b8989cdbeed440f95fc76f9a4b6b6
2013-10-23 08:29:15 +02:00
Stephan Bergmann
04fe0cae20 Some clean-up
Change-Id: I8ab23a4b09f9d31ed49c98cdbbf1abc0e684358a
2013-10-20 18:49:48 +02:00
Stephan Bergmann
615a69e33f Clean-up std::bad_alloc handling
...post 0bc89aac4c "cppumaker: Allow UNO interface functions to throw std::exception."

Change-Id: I232a1b266a45d39856d44a2f4e012b5df10fa880
2013-10-20 18:24:57 +02:00
Tor Lillqvist
e9f260b380 Minor refactoring of iOS code
Rename functions so that functions called by the UI layer for actions
to happen in the LO layer and functions called by the LO layer for
things to happen in the UI layer use different prefixes. Move
declarations to the generic <touch/touch.h> and avoid iOS-specific
types in the API.

Change-Id: Ieb8979065e02a87c4a415c934163265f2790d011
2013-10-13 23:17:38 +03: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
Tor Lillqvist
01e1a2465e URE folder path fixes for the HAVE_FEATURE_MACOSX_MACLIKE_APP_STRUCTURE case
Change-Id: I5019cce2172db7b3ac74e25f5ea9dc62e9fd03f8
2013-10-05 21:10:42 +03:00
Tor Lillqvist
ecbe980c60 WaE: 'rPath' : unreferenced formal parameter
Change-Id: I35aee7a1f8c2d79ac275262ba0cd002e4d034c95
2013-10-01 20:48:18 +03:00
Markus Mohrhard
f189b1ab9b prevent WaE with unused parameters 2013-10-01 02:48:53 +02:00