office-gobmx/lotuswordpro
Stephan Bergmann db3a61cd95 Generally determine Rdb content from gb_*_set_componentfile calls
...instead of by listing the content somewhat redundantly in the Rdb_*.mk
files, to avoid duplication of logic for components that are only built
conditionally (and thus should only be included conditionally in the
corresponding Rdb).  To achieve that, add an "rdb" parameter to
gb_ComponentTarget_ComponentTarget (and to the gb_*_set_componentfile macros
that internally call gb_ComponentTarget_ComponentTarget), which is used to make
the appropriate gb_Rdb_add_component call internally from within
gb_ComponentTarget_ComponentTarget.  (As a special case,
gb_CppunitTest_set_componentfile shall not call gb_Rdb_add_component, as that
has already been done by the corresponding gb_Library_set_componentfile call, so
allow the gb_ComponentTarget_ComponentTarget "rdb" parameter to be empty to
support that special case.)

Most Rdb_*.mk files are thus mostly empty now.  One exception is
i18npool/Rdb_saxparser.mk, which duplicates some of the Rdb_services content as
needed during the build in CustomTarget_i18npool/localedata.

1c9a40299d "gbuild: create services.rdb from built
components" had already tried to do something similar (in addition to other
things) under a new --enable-services-rdb-from-build option.  However, that
approach had four drawbacks that this approach here addresses (and which thus
partly reverts 1c9a40299d):

1  Rdb_services shall not contain the component files of all libraries that are
built.  While that commit filtered out the component files that go into
Rdb_ure/services (ure/Rdb_ure.mk), it failed to filter out the component files
that go into others like Rdb_postgresql-sdbc
(connectivity/Rdb_postgresql-sdbc.mk).

2  The code added by that commit to Makefile.gbuild codified the knowledge that
there is an Rdb_services, which is brittle.

3  The code added by that commit to solenv/gbuild/Rdb.mk codified the knowledge
(for gb_Rdb__URECOMPONENTS) that there is an Rdb_ure/services, which is brittle.

4  Introducing an --enable-services-rdb-from-build option needlessly provided
two different ways how the content of Rdb_services is assembled.

The changes done here would leave --enable-services-rdb-from-build as a
misnomer, as it no longer controls how Rdb_services is assembled.  I thus
renamed it to --enable-customtarget-components, as that is apparently what it
still does now.

Change-Id: Ia5e8df4b640146c77421fcec6daa11a9cd260265
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126577
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2021-12-10 08:14:24 +01:00
..
inc
qa/cppunit
source/filter loplugin:stringliteraldefine in l10ntools..oox 2021-11-26 09:45:44 +01:00
util
CppunitTest_lotuswordpro_import_test.mk
CppunitTest_lotuswordpro_test_lotuswordpro.mk
IwyuFilter_lotuswordpro.yaml
Library_lwpft.mk Generally determine Rdb content from gb_*_set_componentfile calls 2021-12-10 08:14:24 +01:00
Makefile
Module_lotuswordpro.mk
README.md

Import Filter for File Format of Lotus Word Pro (lwp)

Description

The import is not direct, but via an intermediate format: StarOffice XML, the predecessor of ODF (yes, the code is old). The entry point to the filter is class LotusWordProImportFilter (refer to Source code section), but that just hooks up the necessary machinery for processing StarOffice XML produced by the filter. The real fun starts in function ReadWordproFile() (source/filter/lwpfilter.cxx); this function initializes the parser (class Lwp9Reader) and the SAX XML handler that produces the output (class XFSaxStream). The Lwp9Reader class then does the actual parsing.

If the module is built with debug level greater than 0, it is possible to examine the intermediate XML: set environment variable DBG_LWPIMPORT_DIR= to an existing directory and, on opening an lwp document, a file named lwpimport.xml will be created in that directory.

Source Code

Module Contents

  • inc: module-global headers (can be included by any file in source)
  • qa: cppunit tests
  • source: the filter itself
  • util: UNO passive registration config

Source Contents

  • filter: lwp document format parser
  • filter/LotusWordProImportFilter.cxx: the entry point to the filter
  • filter/xfilter: export to StarOffice XML