Files
odfstudio/solenv/bin/native-code.py
T
Tomaž Vajngerl 7fbb96c2fb Move (and rename) graphic stuff from svtools to vcl
This is preparing to change how GraphicManager works where it
won't base itself around GraphicObject anymore but Graphic. No
functional or cosmetic change was made to the classes, only
changes that were needed because of the move and rename.

The only thing that wasn't moved is the GraphicRenderer as it
is not needed in vcl for now (but makes sense to move it in the
future to keep graphic stuff together).

grfmgr was renamed to GraphicObject as the GraphicManager will be
changed a lot and most likely moved out, so the name grfmgr won't
make any sense anymore.

All the UNO implementations were renamed with a prefix Uno and
used the same name as the class name. This is made to be more
specific which are the Uno objects (for example graphic.cxx
contained the implementation of XGraphic, which is similar to
graph.cxx contains Graphic).

Change-Id: I54a2fa6c7e997469aaa7770db05244adb9f64137
Reviewed-on: https://gerrit.libreoffice.org/51068
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2018-03-11 13:37:21 +01:00

544 lines
26 KiB
Python
Executable File

#!/usr/bin/python
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from __future__ import print_function
from optparse import OptionParser
import re
import sys
import xml.etree.ElementTree as ET
# foo_component_getFactory functions are split into groups, so that you could
# choose e.g. 'core' and 'writer' functionality and through factory_map,
# relevant function sections will be referenced in lo_get_factory_map().
# That prevents garbage collector to ignore them as unused.
# The same groups are used for constructor based implementations
# referenced in lo_get_constructor_map().
core_factory_list = [
("libembobj.a", "embobj_component_getFactory"),
("libevtattlo.a", "evtatt_component_getFactory"),
("libcomphelper.a", "comphelp_component_getFactory"),
("libconfigmgrlo.a", "configmgr_component_getFactory"),
("libdrawinglayerlo.a", "drawinglayer_component_getFactory"),
("libemfiolo.a", "emfio_component_getFactory"),
("libfilterconfiglo.a", "filterconfig1_component_getFactory"),
("libfsstoragelo.a", "fsstorage_component_getFactory"),
("libhyphenlo.a", "hyphen_component_getFactory"),
("libi18npoollo.a", "i18npool_component_getFactory"),
("libi18nsearchlo.a", "i18nsearch_component_getFactory"),
("libinvocadaptlo.a", "invocadapt_component_getFactory"),
("liblnglo.a", "lng_component_getFactory"),
("liblnthlo.a", "lnth_component_getFactory"),
("liblocalebe1lo.a", "localebe1_component_getFactory"),
("libooxlo.a", "oox_component_getFactory"),
("libpackage2.a", "package2_component_getFactory"),
("libsmlo.a", "sm_component_getFactory"),
("libsrtrs1.a", "srtrs1_component_getFactory"),
("libstoragefdlo.a", "storagefd_component_getFactory"),
("libucb1.a", "ucb_component_getFactory"),
("libucpfile1.a", "ucpfile_component_getFactory"),
("libucphier1.a", "ucphier1_component_getFactory"),
("libucptdoc1lo.a", "ucptdoc1_component_getFactory"),
("libunordflo.a", "unordf_component_getFactory"),
("libunoxmllo.a", "unoxml_component_getFactory"),
("libutllo.a", "utl_component_getFactory"),
("libxoflo.a", "xof_component_getFactory"),
("libxolo.a", "xo_component_getFactory"),
("libxsec_xmlsec.a", "xsec_xmlsec_component_getFactory", "#if HAVE_FEATURE_NSS"),
("libxstor.a", "xstor_component_getFactory"),
("libvclcanvaslo.a", "vclcanvas_component_getFactory"),
("libmtfrendererlo.a", "mtfrenderer_component_getFactory"),
("libxmlfdlo.a", "xmlfd_component_getFactory"),
("libxmlfalo.a", "xmlfa_component_getFactory"),
("libodfflatxmllo.a", "odfflatxml_component_getFactory"),
("libxmlscriptlo.a", "xmlscript_component_getFactory"),
("libmcnttype.a", "mcnttype_component_getFactory"),
("libvcllo.a", "vcl_component_getFactory"),
("libspelllo.a", "spell_component_getFactory"),
("libsvgiolo.a", "svgio_component_getFactory")
]
core_constructor_list = [
# canvas/source/factory/canvasfactory.component
"com_sun_star_comp_rendering_CanvasFactory_get_implementation",
# chart2/source/chartcore.component
"com_sun_star_chart2_LinearScaling_get_implementation",
"com_sun_star_comp_chart_AreaChartType_get_implementation",
"com_sun_star_comp_chart_BarChartType_get_implementation",
"com_sun_star_comp_chart_BubbleChartType_get_implementation",
"com_sun_star_comp_chart_CandleStickChartType_get_implementation",
"com_sun_star_comp_chart_ChartTypeManager_get_implementation",
"com_sun_star_comp_chart_ColumnChartType_get_implementation",
"com_sun_star_comp_chart_DataSeries_get_implementation",
"com_sun_star_comp_chart_DataSource_get_implementation",
"com_sun_star_comp_chart_FilledNetChartType_get_implementation",
"com_sun_star_comp_chart_GL3DBarChartType_get_implementation",
"com_sun_star_comp_chart_FormattedString_get_implementation",
"com_sun_star_comp_chart_LineChartType_get_implementation",
"com_sun_star_comp_chart_NetChartType_get_implementation",
"com_sun_star_comp_chart_PieChartType_get_implementation",
"com_sun_star_comp_chart_ScatterChartType_get_implementation",
"com_sun_star_comp_chart2_Axis_get_implementation",
"com_sun_star_comp_chart2_ChartController_get_implementation",
"com_sun_star_comp_chart2_ChartDocumentWrapper_get_implementation",
"com_sun_star_comp_chart2_ChartModel_get_implementation",
"com_sun_star_comp_chart2_Diagram_get_implementation",
"com_sun_star_comp_chart2_ErrorBar_get_implementation",
"com_sun_star_comp_chart2_LabeledDataSequence_get_implementation",
"com_sun_star_comp_chart2_Legend_get_implementation",
"com_sun_star_comp_chart2_LinearRegressionCurve_get_implementation",
"com_sun_star_comp_chart2_PolarCoordinateSystem2d_get_implementation",
"com_sun_star_comp_chart2_PolarCoordinateSystem3d_get_implementation",
"com_sun_star_comp_chart2_PolynomialRegressionCurve_get_implementation",
"com_sun_star_comp_chart2_PotentialRegressionCurve_get_implementation",
"com_sun_star_comp_chart2_RegressionEquation_get_implementation",
"com_sun_star_comp_chart2_Title_get_implementation",
"com_sun_star_comp_chart2_XMLFilter_get_implementation",
# chart2/source/controller/chartcontroller.component
"com_sun_star_comp_chart2_ChartDocumentWrapper_get_implementation",
"com_sun_star_comp_chart2_ChartFrameLoader_get_implementation",
# comphelper/util/comphelp.component
"com_sun_star_comp_MemoryStream",
"com_sun_star_comp_task_OfficeRestartManager",
"IndexedPropertyValuesContainer_get_implementation",
"NamedPropertyValuesContainer_get_implementation",
"com_sun_star_comp_comphelper_OPropertyBag",
"com_sun_star_comp_SequenceInputStreamService",
"com_sun_star_comp_SequenceOutputStreamService",
# dbaccess/util/dba.component
("com_sun_star_comp_dba_ORowSet_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
# forms/util/frm.component
("com_sun_star_comp_forms_FormOperations_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_comp_forms_ODatabaseForm_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_comp_forms_OFormattedFieldWrapper_ForcedFormatted_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_comp_forms_ORichTextModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_comp_forms_OScrollBarModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_comp_forms_OSpinButtonModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_Model_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OButtonControl_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OButtonModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OCheckBoxControl_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OCheckBoxModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OComboBoxControl_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OComboBoxModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_ODateControl_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_ODateModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OEditControl_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OEditModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OFixedTextModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OFormsCollection_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OGridControlModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OGroupBoxModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_OListBoxModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_ONumericModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_ORadioButtonModel_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
("com_sun_star_form_XForms_get_implementation", "#if HAVE_FEATURE_DBCONNECTIVITY"),
# framework/util/fwk.component
"com_sun_star_comp_framework_AutoRecovery_get_implementation",
"com_sun_star_comp_framework_Desktop_get_implementation",
"com_sun_star_comp_framework_DocumentAcceleratorConfiguration_get_implementation",
"com_sun_star_comp_framework_Frame_get_implementation",
"com_sun_star_comp_framework_GlobalAcceleratorConfiguration_get_implementation",
"com_sun_star_comp_framework_JobExecutor_get_implementation",
"com_sun_star_comp_framework_LayoutManager_get_implementation",
"com_sun_star_comp_framework_ModuleManager_get_implementation",
"com_sun_star_comp_framework_ModuleUIConfigurationManager_get_implementation",
"com_sun_star_comp_framework_ModuleUIConfigurationManagerSupplier_get_implementation",
"com_sun_star_comp_framework_PathSettings_get_implementation",
"com_sun_star_comp_framework_PathSubstitution_get_implementation",
"com_sun_star_comp_framework_StatusIndicatorFactory_get_implementation",
"com_sun_star_comp_framework_TaskCreator_get_implementation",
"com_sun_star_comp_framework_ToolBarControllerFactory_get_implementation",
"com_sun_star_comp_framework_UIConfigurationManager_get_implementation",
"com_sun_star_comp_framework_UIElementFactoryManager_get_implementation",
"com_sun_star_comp_framework_URLTransformer_get_implementation",
"com_sun_star_comp_framework_WindowStateConfiguration_get_implementation",
"com_sun_star_comp_framework_ModuleAcceleratorConfiguration_get_implementation",
"org_apache_openoffice_comp_framework_ContextChangeEventMultiplexer_get_implementation",
# i18npool/util/i18npool.component
"com_sun_star_i18n_BreakIterator_get_implementation",
"com_sun_star_i18n_BreakIterator_Unicode_get_implementation",
"com_sun_star_i18n_CharacterClassification_get_implementation",
"com_sun_star_i18n_CharacterClassification_Unicode_get_implementation",
"com_sun_star_i18n_Collator_get_implementation",
"com_sun_star_i18n_LocaleDataImpl_get_implementation",
"com_sun_star_i18n_NativeNumberSupplier_get_implementation",
"com_sun_star_i18n_NumberFormatCodeMapper_get_implementation",
"com_sun_star_i18n_Transliteration_get_implementation",
"com_sun_star_i18n_Transliteration_IGNORE_CASE_get_implementation",
"com_sun_star_i18n_Transliteration_IGNORE_KANA_get_implementation",
"com_sun_star_i18n_Transliteration_IGNORE_WIDTH_get_implementation",
"com_sun_star_text_DefaultNumberingProvider_get_implementation",
# sax/source/expatwrap/expwrap.component
"com_sun_star_comp_extensions_xml_sax_FastParser_get_implementation",
"com_sun_star_comp_extensions_xml_sax_ParserExpat_get_implementation",
"com_sun_star_extensions_xml_sax_Writer_get_implementation",
# sfx2/util/sfx.component
"SfxDocumentMetaData_get_implementation",
"com_sun_star_comp_office_FrameLoader_get_implementation",
"com_sun_star_comp_sfx2_AppDispatchProvider_get_implementation",
"com_sun_star_comp_sfx2_DocumentTemplates_get_implementation",
"com_sun_star_comp_sfx2_GlobalEventBroadcaster_get_implementation",
# sot/util/sot.component
"com_sun_star_comp_embed_OLESimpleStorage",
# stoc/source/inspect/introspection.component
"com_sun_star_comp_stoc_Introspection_get_implementation",
# stoc/source/corereflection/reflection.component
"com_sun_star_comp_stoc_CoreReflection_get_implementation",
# stoc/util/stocservices.component
"com_sun_star_comp_stoc_OServiceManagerWrapper_get_implementation",
"com_sun_star_comp_stoc_TypeConverter_get_implementation",
"com_sun_star_comp_uri_ExternalUriReferenceTranslator_get_implementation",
"com_sun_star_comp_uri_UriReferenceFactory_get_implementation",
"com_sun_star_comp_uri_UriSchemeParser_vndDOTsunDOTstarDOTexpand_get_implementation",
"com_sun_star_comp_uri_UriSchemeParser_vndDOTsunDOTstarDOTscript_get_implementation",
# vcl/vcl.android.component
"com_sun_star_graphic_GraphicObject_get_implementation",
"com_sun_star_comp_graphic_GraphicProvider_get_implementation",
# svx/util/svx.component
"com_sun_star_drawing_EnhancedCustomShapeEngine_get_implementation",
"com_sun_star_drawing_SvxShapeCollection_get_implementation",
# svx/util/svxcore.component
"com_sun_star_comp_graphic_PrimitiveFactory2D_get_implementation",
"com_sun_star_comp_Draw_GraphicExporter_get_implementation",
"com_sun_star_comp_Svx_GraphicExportHelper_get_implementation",
"com_sun_star_comp_Svx_GraphicImportHelper_get_implementation",
# toolkit/util/tk.component
"stardiv_Toolkit_StdTabController_get_implementation",
"stardiv_Toolkit_UnoButtonControl_get_implementation",
"stardiv_Toolkit_UnoCheckBoxControl_get_implementation",
"stardiv_Toolkit_UnoComboBoxControl_get_implementation",
"stardiv_Toolkit_UnoControlButtonModel_get_implementation",
"stardiv_Toolkit_UnoControlCheckBoxModel_get_implementation",
"stardiv_Toolkit_UnoControlComboBoxModel_get_implementation",
"stardiv_Toolkit_UnoControlContainer_get_implementation",
"stardiv_Toolkit_UnoControlContainerModel_get_implementation",
"stardiv_Toolkit_UnoControlDateFieldModel_get_implementation",
"stardiv_Toolkit_UnoControlDialogModel_get_implementation",
"stardiv_Toolkit_UnoControlFixedTextModel_get_implementation",
"stardiv_Toolkit_UnoControlFormattedFieldModel_get_implementation",
"stardiv_Toolkit_UnoControlGroupBoxModel_get_implementation",
"stardiv_Toolkit_UnoControlListBoxModel_get_implementation",
"stardiv_Toolkit_UnoControlNumericFieldModel_get_implementation",
"stardiv_Toolkit_UnoControlRadioButtonModel_get_implementation",
"stardiv_Toolkit_UnoControlScrollBarModel_get_implementation",
"stardiv_Toolkit_UnoDateFieldControl_get_implementation",
"stardiv_Toolkit_UnoSpinButtonModel_get_implementation",
"stardiv_Toolkit_VCLXPointer_get_implementation",
"stardiv_Toolkit_VCLXToolkit_get_implementation",
# uui/util/uui.component
"com_sun_star_comp_uui_UUIInteractionHandler_get_implementation",
# xmloff/util/xo.component
"XMLVersionListPersistence_get_implementation",
# xmlscript/util/xmlscript.component
"com_sun_star_comp_xmlscript_XMLBasicExporter",
"com_sun_star_comp_xmlscript_XMLBasicImporter",
"com_sun_star_comp_xmlscript_XMLOasisBasicExporter",
"com_sun_star_comp_xmlscript_XMLOasisBasicImporter",
# xmlsecurity/util/xmlsecurity.component
("com_sun_star_security_CertificateContainer_get_implementation", "#if HAVE_FEATURE_NSS"),
("com_sun_star_security_DocumentDigitalSignatures_get_implementation", "#if HAVE_FEATURE_NSS"),
]
# edit group for apps, where you can edit documents
edit_factory_list = [
]
edit_constructor_list = [
# framework/util/fwk.component
"com_sun_star_comp_framework_GlobalAcceleratorConfiguration_get_implementation",
# i18npool/util/i18npool.component
"com_sun_star_i18n_InputSequenceChecker_get_implementation",
"com_sun_star_i18n_OrdinalSuffix_get_implementation",
# sc/util/sc.component
"Calc_XMLOasisContentExporter_get_implementation",
"Calc_XMLOasisExporter_get_implementation",
"Calc_XMLOasisMetaExporter_get_implementation",
"Calc_XMLOasisSettingsExporter_get_implementation",
"Calc_XMLOasisStylesExporter_get_implementation",
# starmath/util/sm.component
"Math_XMLOasisMetaExporter_get_implementation",
"Math_XMLOasisSettingsExporter_get_implementation",
# sw/util/sw.component
"com_sun_star_comp_Writer_XMLOasisContentExporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisMetaExporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisSettingsExporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisStylesExporter_get_implementation",
]
# math
math_factory_list = [
]
math_constructor_list = [
# starmath/util/sm.component
"Math_XMLOasisMetaExporter_get_implementation",
"Math_XMLOasisSettingsExporter_get_implementation",
]
calc_factory_list = [
("libsclo.a", "sc_component_getFactory"),
("libanalysislo.a", "analysis_component_getFactory"),
("libdatelo.a", "date_component_getFactory"),
("libpricinglo.a", "pricing_component_getFactory"),
]
calc_constructor_list = [
# avmedia/util/avmedia.component
"com_sun_star_comp_framework_SoundHandler_get_implementation",
# sc/util/scd.component
"com_sun_star_comp_calc_ExcelBiffFormatDetector_get_implementation",
"com_sun_star_comp_calc_FormatDetector_get_implementation",
# sc/util/scfilt.component
"com_sun_star_comp_oox_xls_ExcelFilter_get_implementation",
"com_sun_star_comp_oox_xls_FormulaParser_get_implementation",
# scripting/source/vbaevents/vbaevents.component
("ooo_vba_VBAToOOEventDesc_get_implementation", "#if HAVE_FEATURE_SCRIPTING"),
# svl/util/svl.component
"com_sun_star_uno_util_numbers_SvNumberFormatsSupplierServiceObject_get_implementation",
"com_sun_star_uno_util_numbers_SvNumberFormatterServiceObject_get_implementation",
]
draw_factory_list = [
("libsdlo.a", "sd_component_getFactory"),
("libsvgfilterlo.a", "svgfilter_component_getFactory"),
("libdeployment.a", "deployment_component_getFactory"),
("libemboleobj.a", "emboleobj_component_getFactory"),
]
draw_constructor_list = [
# animations/source/animcore/animcore.component
"com_sun_star_animations_AnimateColor_get_implementation",
"com_sun_star_animations_AnimateMotion_get_implementation",
"com_sun_star_animations_AnimateSet_get_implementation",
"com_sun_star_animations_AnimateTransform_get_implementation",
"com_sun_star_animations_Animate_get_implementation",
"com_sun_star_animations_Audio_get_implementation",
"com_sun_star_animations_Command_get_implementation",
"com_sun_star_animations_IterateContainer_get_implementation",
"com_sun_star_animations_ParallelTimeContainer_get_implementation",
"com_sun_star_animations_SequenceTimeContainer_get_implementation",
"com_sun_star_animations_TransitionFilter_get_implementation",
# sd/util/sd.component
"RandomAnimationNode_get_implementation",
"com_sun_star_comp_Draw_framework_BasicPaneFactory_get_implementation",
"com_sun_star_comp_Draw_framework_BasicToolBarFactory_get_implementation",
"com_sun_star_comp_Draw_framework_BasicViewFactory_get_implementation",
"com_sun_star_comp_Draw_framework_PresentationFactoryProvider_get_implementation",
"com_sun_star_comp_Draw_framework_ResourceID_get_implementation",
"com_sun_star_comp_Draw_framework_configuration_ConfigurationController_get_implementation",
"com_sun_star_comp_Draw_framework_module_ModuleController_get_implementation",
# sd/util/sdd.component
"com_sun_star_comp_draw_FormatDetector_get_implementation",
]
writer_factory_list = [
("libswlo.a", "sw_component_getFactory"),
]
writer_constructor_list = [
# basic/util/sb.component
("com_sun_star_comp_sfx2_ScriptLibraryContainer_get_implementation", "#if HAVE_FEATURE_SCRIPTING"),
# filter/source/textfilterdetect/textfd.component
"com_sun_star_comp_filters_PlainTextFilterDetect_get_implementation",
# sw/util/sw.component
"com_sun_star_comp_Writer_XMLOasisContentImporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisImporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisMetaImporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisSettingsImporter_get_implementation",
"com_sun_star_comp_Writer_XMLOasisStylesImporter_get_implementation",
"com_sun_star_util_comp_FinalThreadManager_get_implementation",
# sw/util/swd.component
"com_sun_star_comp_writer_FormatDetector_get_implementation",
# writerfilter/util/writerfilter.component
"com_sun_star_comp_Writer_RtfFilter_get_implementation",
"com_sun_star_comp_Writer_WriterFilter_get_implementation",
]
factory_map = {
'core' : core_factory_list,
'edit' : edit_factory_list,
'math' : math_factory_list,
'calc' : calc_factory_list,
'draw' : draw_factory_list,
'writer' : writer_factory_list,
}
constructor_map = {
'core' : core_constructor_list,
'edit' : edit_constructor_list,
'math' : math_constructor_list,
'calc' : calc_constructor_list,
'draw' : draw_constructor_list,
'writer' : writer_constructor_list,
}
def get_constructor_guard(constructor):
if type(full_constructor_map[constructor]) is bool:
return None
else:
return full_constructor_map[constructor]
# instead of outputting native-code.cxx, reduce the services.rdb according to
# the constraints, so that we can easily emulate what services do we need to
# add for a fully functional file loading / saving / ...
def limit_rdb(services_rdb, full_factory_map, full_constructor_map):
ET.register_namespace('','http://openoffice.org/2010/uno-components')
tree = ET.parse(services_rdb[0])
root = tree.getroot()
for component in root.findall('{http://openoffice.org/2010/uno-components}component'):
# direct
uri = component.get('uri')
component_name = None
if uri != None:
component_name = re.sub('^vnd.sun.star.expand:\$LO_LIB_DIR/([^.]*).so$', '\\1.a', uri)
if component_name in full_factory_map:
continue
# via a constructor - limit only to those we have
has_constructor = False
for implementation in component.findall('{http://openoffice.org/2010/uno-components}implementation'):
constructor = implementation.get('constructor')
if constructor in full_constructor_map:
has_constructor = True
else:
component.remove(implementation)
if not has_constructor:
root.remove(component)
tree.write(services_rdb[0] + '.out', xml_declaration = True, method = 'xml')
# do the actual work
opts = OptionParser()
opts.add_option("-j", "--java-guard", action="store_true", help="include external java functions", dest="java", default=False)
opts.add_option("-g", "--group", action="append", help="group of implementations to make available in application", dest="groups")
opts.add_option("-r", "--limit-rdb", action="append", help="instead of outputting native-code.cxx, limit the services.rdb only to the services defined by the groups", dest="services")
opts.add_option("-C", "--pure-c", action="store_true", help="do not print extern \"C\"", dest="pure_c", default=False)
(options, args) = opts.parse_args()
# dict of all the constructors that we need according to -g's
full_constructor_map = {}
if options.groups:
for constructor_group in options.groups:
for constructor in constructor_map[constructor_group]:
if type(constructor) is tuple:
full_constructor_map[constructor[0]] = constructor[1]
else:
full_constructor_map[constructor] = True
# dict of all the factories that we need according to -g's
full_factory_map = {}
if options.groups:
for factory_group in options.groups:
for entry in factory_map[factory_group]:
factory_guard = None
if len(entry) > 2:
factory_guard = entry[2]
map_entry = { 'function': entry[1], 'guard': factory_guard }
full_factory_map[entry[0]] = map_entry
# are we only shuffling the services.rdb?
if options.services:
limit_rdb(options.services, full_factory_map, full_constructor_map)
exit(0)
print ("""/*
* This is a generated file. Do not edit.
*
* File generated by solenv/bin/native-code.py
*/
#include <config_features.h>
#include <osl/detail/component-mapping.h>
""")
if not options.pure_c:
print ("""extern "C" {""")
for entry in sorted(full_factory_map.keys()):
factory_function = full_factory_map[entry]['function']
factory_guard = full_factory_map[entry]['guard']
if factory_guard:
print (factory_guard)
print('void * ' + factory_function + '( const char* , void* , void* );')
if factory_guard:
print ('#endif')
print ('')
for constructor in sorted(full_constructor_map.keys()):
constructor_guard = get_constructor_guard(constructor)
if constructor_guard:
print (constructor_guard)
print ('void * '+constructor+'( void *, void * );')
if constructor_guard:
print ('#endif')
print ("""
const lib_to_factory_mapping *
lo_get_factory_map(void)
{
static lib_to_factory_mapping map[] = {""")
for entry in sorted(full_factory_map.keys()):
factory_function = full_factory_map[entry]['function']
factory_guard = full_factory_map[entry]['guard']
if factory_guard:
print (factory_guard)
print(' { "' + entry + '", ' + factory_function + ' },')
if factory_guard:
print ('#endif')
print ("""
{ 0, 0 }
};""")
if options.java:
print ("""
extern void Java_org_libreoffice_kit_LibreOfficeKit_initializeNative();
volatile void *p = (void *) Java_org_libreoffice_kit_LibreOfficeKit_initializeNative;
extern void Java_org_libreoffice_kit_Office_getError();
p = (void *) Java_org_libreoffice_kit_Office_getError;
""")
print ("""
return map;
}
const lib_to_constructor_mapping *
lo_get_constructor_map(void)
{
static lib_to_constructor_mapping map[] = {""")
for constructor in sorted(full_constructor_map.keys()):
constructor_guard = get_constructor_guard(constructor)
if constructor_guard:
print (constructor_guard)
print (' { "' +constructor+ '", ' +constructor+ ' },')
if constructor_guard:
print ('#endif')
print ("""
{ 0, 0 }
};
return map;
}
""")
if not options.pure_c:
print("""}""")
# vim:set shiftwidth=4 softtabstop=4 expandtab: