office-gobmx/filter
Stephan Bergmann 7e403195e5 Introduce o3tl::optional as an alias for std::optional
...with a boost::optional fallback for Xcode < 10 (as std::optional is only
available starting with Xcode 10 according to
<https://en.cppreference.com/w/cpp/compiler_support>, and our baseline for iOS
and macOS is still Xcode 9.3 according to README.md).  And mechanically rewrite
all code to use o3tl::optional instead of boost::optional.

One immediate benefit is that disabling -Wmaybe-uninitialized for GCC as per
fed7c3deb3 "Slience bogus
-Werror=maybe-uninitialized" should no longer be necessary (and whose check
happened to no longer trigger for GCC 10 trunk, even though that compiler would
still emit bogus -Wmaybe-uninitialized for uses of boost::optional under
--enable-optimized, which made me ponder whether this switch from
boost::optional to std::optional would be a useful thing to do; I keep that
configure.ac check for now, though, and will only remove it in a follow up
commit).

Another longer-term benefit is that the code is now already in good shape for an
eventual switch to std::optional (a switch we would have done anyway once we no
longer need to support Xcode < 10).

Only desktop/qa/desktop_lib/test_desktop_lib.cxx heavily uses
boost::property_tree::ptree::get_child_optional returning boost::optional, so
let it keep using boost::optional for now.

After a number of preceding commits have paved the way for this change, this
commit is completely mechanical, done with

> git ls-files -z | grep -vz -e '^bin/find-unneeded-includes$' -e '^configure.ac$' -e '^desktop/qa/desktop_lib/test_desktop_lib.cxx$' -e '^dictionaries$' -e '^external/' -e '^helpcontent2$' -e '^include/IwyuFilter_include.yaml$' -e '^sc/IwyuFilter_sc.yaml$' -e '^solenv/gdb/boost/optional.py$' -e '^solenv/vs/LibreOffice.natvis$' -e '^translations$' -e '\.svg$' | xargs -0 sed -i -E -e 's|\<boost(/optional)?/optional\.hpp\>|o3tl/optional.hxx|g' -e 's/\<boost(\s*)::(\s*)(make_)?optional\>/o3tl\1::\2\3optional/g' -e 's/\<boost(\s*)::(\s*)none\>/o3tl\1::\2nullopt/g'

(before committing include/o3tl/optional.hxx, and relying on some GNU features).
It excludes some files where mention of boost::optional et al should apparently
not be changed (and the sub-repo directory stubs).  It turned out that all uses
of boost::none across the code base were in combination with boost::optional, so
had all to be rewritten as o3tl::nullopt.

Change-Id: Ibfd9f4b3d5a8aee6e6eed310b988c4e5ffd8b11b
Reviewed-on: https://gerrit.libreoffice.org/84128
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-12-01 14:57:16 +01:00
..
inc
qa new loplugin:bufferadd 2019-10-15 14:33:57 +02:00
source Introduce o3tl::optional as an alias for std::optional 2019-12-01 14:57:16 +01:00
uiconfig/ui tdf#128303 PDF Dialog update 2019-11-16 09:13:03 +01:00
AllLangMoTarget_flt.mk
Configuration_filter.mk
CppunitTest_filter_dialogs_test.mk
CppunitTest_filter_dxf_test.mk
CppunitTest_filter_eps_test.mk
CppunitTest_filter_met_test.mk
CppunitTest_filter_msfilter.mk
CppunitTest_filter_pcd_test.mk
CppunitTest_filter_pcx_test.mk
CppunitTest_filter_pict_test.mk
CppunitTest_filter_ppm_test.mk
CppunitTest_filter_priority.mk
CppunitTest_filter_psd_test.mk
CppunitTest_filter_ras_test.mk
CppunitTest_filter_textfilterdetect.mk
CppunitTest_filter_tga_test.mk
CppunitTest_filter_tiff_test.mk
CppunitTest_filter_xslt.mk
CustomTarget_svg.mk
JunitTest_filter_complex.mk
Library_filterconfig.mk
Library_flash.mk
Library_gie.mk use common PCH for more libraries 2019-10-14 22:27:00 +02:00
Library_graphicfilter.mk
Library_icg.mk
Library_msfilter.mk
Library_odfflatxml.mk
Library_pdffilter.mk
Library_storagefd.mk
Library_svgfilter.mk
Library_t602filter.mk
Library_textfd.mk
Library_xmlfa.mk
Library_xmlfd.mk
Library_xsltdlg.mk
Library_xsltfilter.mk
Makefile
Module_filter.mk
Package_docbook.mk
Package_xhtml.mk
Package_xslt.mk
README
UIConfig_filter.mk

Filter registration and some simple filters (also descriptions).

Desperate splitting of code into small shared libraries for historical
reasons presumably (OS/2 and Windows 3.x). The libraries produced from
the code in each subdirectory of filter/source/graphicfilter are
graphic format import or export filters. But they don't have uniform
API. Some have either a GraphicImport or GraphicExport entry point,
and are loaded and used in a uniform fashion from code in
svtools/source/filter/filter.cxx. Others have different API and are
loaded from other places. For instance "icgm" has ImportCGM, and is
loaded and used by sd/source/filter/cgm/sdcgmfilter.cxx (!).
Svgreader is used for "File->Open" and then to choose the svg file.
For "Insert->Picture->From File", see svgio/source/svgreader directory.

====================
filter configuration
====================

The filter configuration consists of two parts, the type definition in
filter/source/config/fragments/types/ and the actual filter definition
in filter/source/config/fragments/filters/.

Each file type e.g. text file should be represented by exactly one
type definition. This type can then be referenced by several different
filters, e.g. calc text, writer text.